ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

معرفی کامل پکیج DBMS_RANDOM در Oracle Database + کاربردها و مثال‌ها

مقدمه : پکیج DBMS_RANDOM در اوراکل چه اهمیتی دارد؟

در بسیاری از پروژه‌های پایگاه داده، نیاز داریم تا داده‌های تصادفی یا تستی تولید کنیم.

به‌عنوان مثال، هنگام تست یک سیستم مدیریت منابع انسانی یا فروشگاه اینترنتی، باید هزاران رکورد ساختگی داشته باشیم تا عملکرد کوئری‌ها و گزارش‌ها را بررسی کنیم.

در Oracle Database، پکیج قدرتمندی به نام DBMS_RANDOM وجود دارد که دقیقاً برای این هدف طراحی شده است.

در این مقاله آموزش اوراکل، به بررسی کامل پکیج DBMS_RANDOM، نحوه استفاده از آن برای تولید انواع داده تصادفی، و مثال‌های عملی برای تولید داده تستی می‌پردازیم.

اگر می خواهید با لیست پکیج DBMS_OUTPUT در بخش آموزش PL/SQL بیشتر آشنا بشید نوشته زیر را مطالعه کنید:

در این نوشته شما می خوانید

DBMS_RANDOM یکی از پکیج‌های توکار (Built-in) در Oracle است که برای تولید مقادیر تصادفی استفاده می‌شود.

این پکیج می‌تواند عدد، رشته، کاراکترهای خاص، و حتی داده‌ی باینری (RAW) را به‌صورت تصادفی تولید کند.

توابع مهم در DBMS_RANDOM

۱. 🎯 تابع VALUE

تابع VALUE برای تولید عدد اعشاری (Float) تصادفی استفاده می‌شود.

🔹حالت اول – عدد بین ۰ تا ۱:

				
					SELECT DBMS_RANDOM.VALUE FROM DUAL;
				
			

🔹حالت دوم – عدد بین بازه دلخواه:

				
					SELECT DBMS_RANDOM.VALUE(10, 100) FROM DUAL;

				
			

💡 کاربرد: تولید مقدار حقوق، قیمت کالا، تخفیف و…

۲. 🔢 تابع RANDOM

برای تولید عدد صحیح (Integer) تصادفی با دامنه بسیار وسیع:

				
					SELECT DBMS_RANDOM.RANDOM FROM DUAL;
				
			

برای حذف مقادیر منفی:

				
					SELECT ABS(DBMS_RANDOM.RANDOM) FROM DUAL;
				
			

۳. 🔡 تابع STRING

تابع STRING(opt, len) برای تولید رشته تصادفی استفاده می‌شود.

جدول گزینه‌های opt در تابع DBMS_RANDOM.STRING

opt توضیح
'U' فقط حروف بزرگ (A-Z)
'L' فقط حروف کوچک (a-z)
'A' ترکیب حروف بزرگ و کوچک
'X' ارقام هگزادسیمال (۰-۹, A-F)
'P' کاراکترهای قابل چاپ (شامل حروف، اعداد و نمادها)
				
					SELECT DBMS_RANDOM.STRING('A', 10) AS random_string FROM DUAL;

				
			

۴. 🔁 INITIALIZE و TERMINATE

اگر می‌خواهید تولید داده تصادفی قابل پیش‌بینی باشد (برای تست‌های تکرارپذیر)، باید از INITIALIZE برای تنظیم seed استفاده کنید:

				
					BEGIN
  DBMS_RANDOM.INITIALIZE(2024);
END;

				
			

و پس از اتمام کار:

				
					BEGIN
  DBMS_RANDOM.TERMINATE;
END;

				
			

مثال عملی: تولید ۱۰۰۰ رکورد ساختگی در جدول تستی

فرض کنید جدولی به نام employees_test داریم و می‌خواهیم آن را با داده‌های تصادفی پر کنیم:

				
					BEGIN
  FOR i IN 1..1000 LOOP
    INSERT INTO employees_test (
      emp_id,
      emp_name,
      salary
    ) VALUES (
      i,
      DBMS_RANDOM.STRING('A', 8),
      ROUND(DBMS_RANDOM.VALUE(4000, 12000), 2)
    );
  END LOOP;
  COMMIT;
END;

				
			

پکیج DBMS_RANDOM برای کاربردهای تستی و تولید داده‌های ساختگی طراحی شده است.

از این پکیج برای تولید رمز عبور یا توکن‌های امنیتی در محیط‌های حساس استفاده نکنید.

برای تولید داده‌های رمزنگاری‌شده و امن، پکیج DBMS_CRYPTO انتخاب بهتری است.

سوالات متداول درباره پکیج DBMS_RANDOM در اوراکل

پکیج DBMS_RANDOM در Oracle برای تولید داده‌های تصادفی در سناریوهایی مانند تست نرم‌افزار، شبیه‌سازی داده‌های واقعی، مقداردهی اولیه جداول، ساخت رشته‌های تصادفی و همچنین تولید عددهای تصادفی استفاده می‌شود.

این پکیج در مرحله توسعه و تست پروژه‌های دیتابیس بسیار پرکاربرد است و باعث صرفه‌جویی در زمان می‌شود.

خروجی DBMS_RANDOM برای کاربردهای عمومی و تستی کاملاً قابل قبول است.

اما این پکیج برای اهداف امنیتی یا رمزنگاری طراحی نشده و الگوریتم آن رمزنگاری‌شده نیست.

بنابراین برای تولید توکن یا پسورد امن نباید از آن استفاده کرد. برای موارد امنیتی باید از DBMS_CRYPTO استفاده کرد.

تابع VALUE عدد اعشاری (Float) بین ۰ تا ۱ (یا بین دو مقدار خاص) تولید می‌کند، در حالی که تابع RANDOM عدد صحیح (Integer) با دامنه بزرگ تولید می‌کند که ممکن است منفی یا مثبت باشد.

هر دو برای تولید اعداد تصادفی استفاده می‌شوند ولی نوع خروجی متفاوت است.

INITIALIZE برای تنظیم seed اولیه در تولید داده‌های تصادفی استفاده می‌شود.

این کار باعث می‌شود که خروجی‌ها قابل پیش‌بینی و تکرارپذیر باشند، که در تست‌های خودکار یا شرایطی که نیاز به یک توالی مشخص از داده‌های تصادفی داریم، بسیار مفید است.

نتیجه‌گیری

پکیج DBMS_RANDOM در Oracle یک ابزار قدرتمند برای توسعه‌دهندگان و DBAها است که با آن می‌توان داده‌های تصادفی از انواع مختلف تولید کرد.

این پکیج به‌خصوص در فاز تست و توسعه پروژه‌ها بسیار مفید و کاربردی است.

📢 آیا شما با هم در توسعه و کدنویسی از پکیج DBMS_RANDOM استفاده کرده اید؟در بخش نظرات با ما به اشتراک بگذارید! 🚀

 

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *