
مقدمه : پکیج 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 استفاده کرده اید؟در بخش نظرات با ما به اشتراک بگذارید! 🚀
دیدگاهتان را بنویسید