मैं एक प्रशिक्षण अभ्यास के रूप में एक साधारण डेटाबेस डिजाइन कार्य कर रहा हूं जहां मुझे निम्नलिखित मामले के लिए एक मूल स्कीमा डिजाइन के साथ आना है:
मेरे पास उत्पादों का एक अभिभावक-बच्चा पदानुक्रम है (उदाहरण, कच्चे माल> प्रगति में काम> अंत उत्पाद)।
- प्रत्येक स्तर पर आदेश दिए गए हैं।
- अगले 6 महीनों के लिए साप्ताहिक बाल्टियों में आदेशों की संख्या देखने योग्य होगी।
- प्रत्येक उत्पाद स्तर के लिए मांग का पूर्वानुमान किया जा सकता है।
- अगले 6 महीनों के भीतर किसी भी सप्ताह के लिए पूर्वानुमान की मांग आज की जा सकती है।
- अगले 6 महीनों के लिए साप्ताहिक बाल्टियों के लिए मांग का पूर्वानुमान लगाया जाता है।
डिमांड का पूर्वानुमान आमतौर पर उच्च स्तर पर पदानुक्रम में होता है (रॉ मटीरियल या वर्क इन प्रोग्रेस लेवल) इसे निचले स्तर (एंड प्रोडक्ट) से अलग करना पड़ता है।
मांग के पूर्वानुमान के 2 तरीके हैं जिन्हें उच्च स्तर से निचले स्तर तक अलग किया जा सकता है:
- उपयोगकर्ता अंतिम उत्पाद के लिए प्रतिशत वितरण को निर्दिष्ट करता है। कहते हैं, वर्क इन प्रोग्रेस के लिए 1000 का पूर्वानुमान है। और उपयोगकर्ता का कहना है कि मुझे एंड प्रोडक्ट 1 के लिए 40% और बकेट 10 में एंड प्रोडक्ट 2 के लिए 60% चाहिए। इसके बाद अब से 10 वें सप्ताह (रविवार से शनिवार) के लिए पूर्वानुमान मूल्य एंड प्रोडक्ट 1 के लिए 400 होगा और एंड प्रोडक्ट 2 के लिए 600 होगा।
- उपयोगकर्ता का कहना है, बस बाल्टी 5 में अंत उत्पादों के खिलाफ रखे गए आदेशों के अनुसार असहमत हैं, और अंत उत्पाद 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
ORDERS तालिका इस तरह दिख सकती है :
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);
लेकिन इससे साप्ताहिक बाल्टी आज से शुरू हो जाएगी, भले ही दिन कुछ भी हो। ओरेकल में मैं उन्हें रविवार से शनिवार सप्ताह में कैसे बदल सकता हूं?
कृपया इस डेटाबेस संरचना को डिजाइन करने में मदद करें।
(Oracle 11g का उपयोग किया जाएगा)