আমি একটি প্রশিক্ষণ অনুশীলন হিসাবে একটি সাধারণ ডাটাবেস ডিজাইনের কাজটি করছি যেখানে নিম্নলিখিত মামলার জন্য আমাকে একটি বেসিক স্কিমা নকশা নিয়ে আসতে হবে:
আমার কাছে পণ্যগুলির একটি পিতামাতার সন্তানের শ্রেণিবদ্ধতা রয়েছে (উদাহরণস্বরূপ, কাঁচামাল> প্রগতিতে কাজ> শেষ পণ্য)।
- প্রতিটি স্তরে অর্ডার দেওয়া হয়।
- অর্ডার সংখ্যা পরবর্তী 6 মাসের জন্য সাপ্তাহিক বালতিতে দেখা যাবে।
- চাহিদা পূর্বাভাস প্রতিটি পণ্য স্তরের জন্য করা যেতে পারে।
- আগামী 6 মাসের মধ্যে যে কোনও সপ্তাহের জন্য চাহিদা পূর্বাভাস আজ করা যেতে পারে।
- ডিমান্ড পূর্বাভাস পরবর্তী 6 মাসের জন্য সাপ্তাহিক বালতিগুলির জন্য করা হয়।
চাহিদা পূর্বাভাস সাধারণত স্তরক্রমের উচ্চ স্তরে করা হয় (কাঁচামাল বা অগ্রগতি স্তরে কাজ) এটি একটি নিম্ন স্তরের (শেষ পণ্য) এ পৃথক করা উচিত।
এমন দুটি উপায় রয়েছে যার মাধ্যমে চাহিদা পূর্বাভাস উচ্চতর স্তর থেকে নিম্ন স্তরে পৃথক করা যায়:
- ব্যবহারকারী শেষ পণ্যের জন্য শতাংশ বিতরণ নির্দিষ্ট করে। বলুন, ওয়ার্ক ইন অগ্রগতির জন্য 1000 এর পূর্বাভাস রয়েছে .. এবং ব্যবহারকারী বলেছেন আমি শেষ পণ্য 1 এর 40% এবং শেষ পণ্য 2 বালতি 10 এ 60% চাই Then শেষের জন্য পণ্য 1 হবে 400 এবং শেষ পণ্য 2 এর 600 হবে।
- ব্যবহারকারী বলেছেন, বালতি ৫-এ শেষ পণ্যগুলির বিরুদ্ধে অর্ডারগুলি অনুসারে পৃথক করুন এবং শেষ পণ্য 1 এবং 2 এর জন্য বালতি 5 এ অর্ডার যথাক্রমে 200 এবং 800, তারপরে EP1 এর পূর্বাভাসের মান হবে ((200/1000) * 100)% এবং EP2 এর জন্য 'ওয়ার্ক ইন প্রগ্রেস' এর পূর্বাভাসের ((800/1000) * 100)% হবে।
পূর্বাভাসটি আগামী 6 মাসের জন্য সাপ্তাহিক বালতিতে দেখা যাবে এবং আদর্শ বিন্যাসটি হওয়া উচিত:
product name | bucket number | week start date | week end date | forecast value | created_on
PRODUCT_HIERARCHY টেবিলটি দেখতে এমন হতে পারে:
id | name | parent_id
__________________________________________
1 | raw material | (null)
2 | work in progress | 1
3 | end product 1 | 2
4 | end product 2 | 2
অর্ডারস টেবিলটি দেখতে এমন হতে পারে :
id | prod_id | order_date | delivery_date | delivered_date
কোথায়,
prod_id
হ'ল বিদেশী কী যা id
PRODUCT_HIERARCHY টেবিলের উল্লেখ করে ,
কিভাবে পূর্বাভাস সংরক্ষণ করবেন? এই ধরনের প্রয়োজনের জন্য একটি ভাল বেসিক স্কিমা কি হবে?
26 সাপ্তাহিক বালতির অর্ডার নির্বাচন করার জন্য আমার ধারণাটি হ'ল:
SELECT
COUNT(*) TOTAL_ORDERS,
WIDTH_BUCKET(
delivery_date,
SYSDATE,
ADD_MONTHS(sysdate, 6),
TO_NUMBER( TO_CHAR(SYSDATE,'DD-MON-YYYY') - TO_CHAR(ADD_MONTHS(sysdate, 6),'DD-MON-YYYY') ) / 7
) BUCKET_NO
FROM
orders_table
WHERE
delivery_date BETWEEN SYSDATE AND ADD_MONTHS(sysdate, 6);
তবে এটি দিন নির্বিশেষে আজ থেকে শুরু করে সাপ্তাহিক বালতি দেবে। ওরাকলে আমি কীভাবে তাদের রবিবার থেকে শনিবার সপ্তাহে রূপান্তর করতে পারি?
এই ডাটাবেস কাঠামো ডিজাইন করতে সাহায্য করুন।
(ওরাকল 11 জি ব্যবহার করা হবে)