Database
 sql >> डेटाबेस >  >> RDS >> Database

डेटाबेस में सामग्री के बिल (बीओएम) संरचना की पहचान करना

सामग्री का बिल (बीओएम) डिजाइन पैटर्न भ्रामक रूप से सरल है, फिर भी अविश्वसनीय रूप से शक्तिशाली है। ऐतिहासिक रूप से, इसे उत्पाद संरचनाओं को मॉडल करने के लिए नियोजित किया गया है, लेकिन पैटर्न का उपयोग केवल एक पदानुक्रम को परिभाषित करने के अलावा और भी बहुत कुछ करने के लिए किया जा सकता है। यह लेख आपके अपने प्रोजेक्ट में पैटर्न को पहचानने में आपकी मदद करने के लिए तीन अलग-अलग उदाहरण पेश करेगा।

बिल ऑफ मैटेरियल्स या बीओएम क्या है?

एक सामग्री का बिल विनिर्माण में इसकी जड़ें हैं। यह एक अंतिम उत्पाद के निर्माण के लिए आवश्यक कच्चे माल, उप-विधानसभा, मध्यवर्ती विधानसभाओं, उप-घटकों, भागों और प्रत्येक की मात्रा की एक सूची है। आप इसे किसी उत्पाद के पदानुक्रमित अपघटन के रूप में देख सकते हैं। उसी चीज़ के लिए अन्य शर्तें उत्पाद संरचना, सामग्री का बिल और संबद्ध सूची हैं।

बीओएम को स्पष्ट करने के लिए, नीचे दिए गए वैचारिक मॉडल को देखें। यह शीर्ष-स्तरीय उत्पाद से शुरू होता है, Car . मोटे तौर पर, एक Car एक Engine है और एक Body . इस उदाहरण में, विभिन्न प्रकार के इंजन हैं:V6 और V8। विभिन्न प्रकार के निकाय हैं:3-दरवाजा, 5-दरवाजा, और एस्टेट (जिसे वैगन या स्टेशन वैगन के रूप में भी जाना जाता है)। अपघटन की प्रक्रिया अंतिम नट और बोल्ट तक जा सकती है - या यहां तक ​​​​कि गोंद की भी - लेकिन आपको तस्वीर मिलती है।

सबसे सरल स्तर पर, आप पदानुक्रम के रूप में दो भागों को एक साथ जोड़ रहे हैं - एक मूल भाग से एक बच्चे के भाग तक - पदानुक्रम के शीर्ष से नीचे तक। सबसे बुनियादी निर्माण बीओएम मॉडल इस तरह दिखता है:




यह क्लासिक BOM संरचना है , जहां एक [माता-पिता] तालिका में [बच्चे] जंक्शन तालिका के साथ दो संबंध होते हैं।

यहाँ कार उदाहरण से सरल उत्पाद पदानुक्रम दिया गया है:

<थ>मात्रा
अभिभावक बच्चा
कार शरीर 1
कार इंजन 1
इंजन V6 1
इंजन V8 1


निर्माण में बीओएम में एक ही तरह के प्रमुख गुण होते हैं:

  • असेंबली, सब-असेंबली और अलग-अलग घटकों का पुन:उपयोग किया जा सकता है . उदाहरण के लिए, एक ही प्रकार के बोल्ट का उपयोग विभिन्न प्रकार की असेंबली में किया जा सकता है।
  • अक्सर एक पदानुक्रम-विशिष्ट मात्रा की आवश्यकता होती है . उदाहरण के लिए, यह जानना महत्वपूर्ण है कि एक असेंबली को 10 बोल्ट की आवश्यकता होती है, लेकिन दूसरे असेंबली को समान विनिर्देश के 15 बोल्ट की आवश्यकता हो सकती है।

एक बार जब आप एक असेंबली को परिभाषित करते हैं, तो इसकी संरचना स्वचालित रूप से किसी भी अन्य असेंबली में आयात की जाती है जो इसका उपयोग करती है। तो अगर उस असेंबली को बदलना था, तो अन्य सभी बीओएम जो इसका इस्तेमाल करते हैं, स्वचालित रूप से अपडेट हो जाएंगे। इस तरह की उप-विधानसभाओं का वर्णन करने वाले बीओएम को मॉड्यूलर बीओएम . कहा जाता है ।

निर्माताओं के लिए, एक बीओएम उत्पाद जानकारी का एक महत्वपूर्ण टुकड़ा है, एक रिकॉर्ड जो उत्पाद के निर्माण के लिए आवश्यक सभी चीजों को सूचीबद्ध करता है। कॉन्फ़िगर करने योग्य . को संभालने के लिए उन्नत मॉडलिंग तकनीकों की आवश्यकता होती है उत्पाद, घटक विविधताएं , या प्रतिस्थापित करें अवयव। किसी उत्पाद के एक छोटे से हिस्से को बदलने से अन्य उत्पाद BOM पर कई प्रभाव पड़ सकते हैं। इन पर ध्यान दिए बिना, बीओएम प्रबंधन काफी असहनीय हो सकता है।

लेकिन यह विशेषज्ञ क्षेत्र इस लेख के दायरे से बाहर है। इसके बजाय, हम उन उदाहरणों पर ध्यान केंद्रित करेंगे जहाँ डेटाबेस डिज़ाइन में BOM संरचनाएँ हो सकती हैं। एक बार जब आप एक बीओएम को पहचान लेते हैं, तो आप इस शक्तिशाली डिजाइन पैटर्न का उपयोग करने में सक्षम होंगे।

हम एक सामान्य उदाहरण से शुरू करेंगे:उड़ानों और हवाई अड्डों के बीच कई-से-अनेक संबंध।

बिल ऑफ मैटेरियल्स पैटर्न का उड़ानों से क्या लेना-देना है?

ये रहा वैचारिक मॉडल:

दुनिया के किसी भी हवाई अड्डे पर खुद की कल्पना करें। वहां से आप विमानों को दूसरे गंतव्यों के लिए उड़ान भरते हुए देख पाएंगे। आप अन्य गंतव्यों से विमानों को उतरते भी देखेंगे। इसलिए प्रस्थान और आगमन हवाई अड्डों के बीच कई-से-अनेक संबंध हैं।

आम तौर पर, हम जंक्शन तालिका का उपयोग करके इस कई-से-अनेक संबंधों को हल करते हैं:




Flight क्लास की अपनी विशेषताएं होंगी, जिनमें flightNumber . भी शामिल है , scheduledDepartureTime , और scheduledArrivalTime

अपने मॉडल को देखते हुए, हमें एक छोटी सी समस्या का पता चल सकता है। हम जानते हैं कि DepartureAirport या एक ArrivalAirport . ये दोनों केवल ऐसे हवाई अड्डे हैं जहां से उड़ानें प्रस्थान करती हैं और कौन सी उड़ानें आती हैं।

इसलिए हम DepartureAirport और ArrivalAirport एक ही airport इस तरह की तालिका:




फिर से यह क्लासिक BOM संरचना का अनुसरण करता है , जहां एक [माता-पिता] तालिका में [बच्चे] जंक्शन तालिका के साथ दो संबंध होते हैं।

वैचारिक रूप से हालांकि, इसमें और एक निर्माण बीओएम के बीच एक बड़ा अंतर है। इस बीओएम में कोई वास्तविक पदानुक्रमित संरचना नहीं है। यह पूरी तरह से सपाट है। मैं ऐसा क्यों कह रहा हूँ?

एक उदाहरण के माध्यम से इसका सबसे अच्छा वर्णन किया गया है।

सबसे पहले, इस बीओएम के लिए कुछ नमूना डेटा पर विचार करें:

प्रस्थान गंतव्य
मैनचेस्टर पेरिस
मैनचेस्टर दुबई
दुबई चेन्नई
दुबई केप टाउन


अब हम एक उदाहरण के माध्यम से काम करेंगे। कल्पना कीजिए कि आपको मैनचेस्टर से चेन्नई के लिए उड़ान भरने की आवश्यकता है। कोई सीधी उड़ानें नहीं हैं। लेकिन आप अपनी यात्रा के पहले चरण में मैनचेस्टर से दुबई के लिए उड़ान भर सकते हैं। फिर आप अपनी यात्रा के दूसरे चरण में दुबई से चेन्नई के लिए दूसरी उड़ान ले सकते हैं। जबकि दो पैर आपकी यात्रा कार्यक्रम बनाते हैं, किसी भी तरह से दूसरा चरण पहले चरण के किसी प्रकार का उप-घटक नहीं है! इसलिए, यह संरचना समतल है।

लेकिन ध्यान दें 1:1 डेटा की पत्राचार भागों और उड़ानों के बीच उदाहरण:कार → मैनचेस्टर; इंजन → दुबई; चेन्नई → V6.

कार के उदाहरण में, पुर्जे एक कस-युग्मित पदानुक्रम . बनाते हैं . हवाई अड्डे के उदाहरण में, अधिक ढीले-युग्मित कनेक्शन बनाने के लिए उड़ानों को पार किया जा सकता है उड़ानों के बीच। मैनचेस्टर से चेन्नई के लिए उड़ान भरने वाले यात्री के लिए एक यात्रा कार्यक्रम बनाने की जरूरत है। यह एक क्वेरी का परिणाम है, जो इस बात को ध्यान में रखता है कि एक कनेक्शन क्या है - उदा। उड़ानों के बीच न्यूनतम और अधिकतम समय; क्या एक ही एयरलाइन का उपयोग किया जाना चाहिए या यदि विभिन्न एयरलाइनों की अनुमति है।

इसके बाद, आइए देखें कि डेटा मॉडलिंग में संबंधों का वर्णन करने के लिए BOM का उपयोग कैसे किया जा सकता है।

बीओएम संरचना में संबंध

इससे मेरा तात्पर्य लोगों के बीच, संगठनों के बीच और संगठनों और लोगों के बीच संबंधों से है। ये वास्तविक दुनिया के रिश्ते हैं, जैसे कि कोई व्यक्ति किसी कंपनी का कर्मचारी या किसी टीम का सदस्य, या किसी अन्य कंपनी का मालिक है। वैचारिक मॉडल इस तरह दिखता है:

यदि आप इसे सीधे भौतिक मॉडल पर मैप करना चाहते हैं, तो आपके पास कई-से-अनेक संबंधों में से प्रत्येक के लिए जंक्शन टेबल होंगे। यह थोड़ा अव्यवस्थित हो सकता है, और यह चल रही क्वेरी में मदद नहीं करता है - उदाहरण के लिए, सभी रिश्तों को एक Person है।

तो शायद उस Person और Organization Party . यह हमें तीन कई-से-अनेक संबंधों को एक में सरल बनाने की अनुमति देता है:

यदि आपकी आवश्यकताएं सरल हैं तो यह पर्याप्त हो सकता है। लेकिन वास्तविक दुनिया में, चीजें इतनी सरल नहीं होती हैं। उदाहरण के लिए, एक कर्मचारी एक समय के लिए दुनिया भर में यात्रा करने के लिए एक कंपनी छोड़ सकता है। जब वह अपनी यात्रा से लौटता है, तो वह काम की तलाश करता है और जिस कंपनी को उसने छोड़ा था, उसे फिर से काम पर रखा जाता है। (ऐसा होता है!) इसलिए, कर्मचारी के इस नियोक्ता के साथ संबंध के दो अलग-अलग उदाहरण हैं, प्रत्येक के अलग-अलग प्रभावी तिथियां हैं, और संभवतः एक अलग कर्मचारी आईडी के साथ।

तो रिश्ते को ही विशेषताओं की आवश्यकता होती है। इसका अर्थ है एक और इकाई, Relationship , उन्हें शामिल करने की आवश्यकता है:




फिर से यह क्लासिक BOM संरचना का अनुसरण करता है , जहां एक [माता-पिता] तालिका में [बच्चे] जंक्शन तालिका के साथ दो संबंध होते हैं।

परंपरा के अनुसार, इस मॉडल में 1 इंटरेक्टर बेहतर होता है Party Relationship जैसे कि कर्मचारी के बजाय नियोक्ता, या टीम के सदस्य के बजाय टीम लीडर।

इस पार्टी-रिलेशनशिप बीओएम पैटर्न का उपयोग सभी कर्मचारियों को सूचीबद्ध करने के लिए किया जा सकता है (2 interactor ) किसी संगठन में (1 interactor ) संविदात्मक . पर स्तर यदि आप करेंगे। यह एक सपाट, एकल स्तर का पदानुक्रम है। इसका उपयोग एक साथ भी किया जा सकता है संपूर्ण प्रबंधन रिपोर्टिंग संरचना को परिभाषित करने के लिए (या पदानुक्रम) एक ही संगठन में, जिसमें कई स्तर हो सकते हैं। उदाहरण के लिए:एक कर्मचारी कई वर्षों के लिए एक अनुबंध के तहत काम कर सकता है, लेकिन उस अवधि में खुद को विभिन्न प्रबंधकों के लिए काम कर सकता है (1 इंटरेक्टर =इसके लिए जिम्मेदार; 2 इंटरेक्टर =रिपोर्ट करने के लिए)। वह एक साथ एक से अधिक प्रबंधक के लिए भी काम कर सकता है।

यहां बताया गया है कि डेटा कैसा दिख सकता है (कोष्ठक में उनकी संबंधित भूमिकाओं के साथ):

<थ>2 इंटरेक्टर
1 इंटरेक्टर
विजेट कंपनी इंक (नियोक्ता) प्रबंधक 1 (कर्मचारी)
विजेट कंपनी इंक (नियोक्ता) प्रबंधक 2 (कर्मचारी)
विजेट कंपनी इंक (नियोक्ता) कर्मचारी 1 (कर्मचारी)
विजेट कंपनी इंक (नियोक्ता) कर्मचारी 2 (कर्मचारी)
विजेट कंपनी इंक (नियोक्ता) कर्मचारी 3 (कर्मचारी)
विजेट कंपनी इंक (नियोक्ता) कर्मचारी 4 (कर्मचारी)
प्रबंधक 1 (जिम्मेदार) कर्मचारी 1 (रिपोर्ट करता है)
प्रबंधक 1 (जिम्मेदार) कर्मचारी 2 (रिपोर्ट करता है)
प्रबंधक 2 (जिम्मेदार) कर्मचारी 3 (रिपोर्ट करता है)
प्रबंधक 2 (जिम्मेदार) कर्मचारी 4 (रिपोर्ट करता है)

बीओएम के बारे में जानें

जबकि सामग्री का बिल संरचना इसकी जड़ें निर्माण में हैं, इसका उपयोग विभिन्न उद्देश्यों के लिए किया जा सकता है , जो कड़ाई से पदानुक्रमित और कसकर युग्मित किसी चीज़ से लेकर काफी सपाट और अधिक शिथिल-युग्मित चीज़ तक हो सकती है।

मुझे आशा है कि ये उदाहरण आपको बीओएम पैटर्न को पहचानने में मदद करेंगे यदि यह आपकी परियोजनाओं में मौजूद है। एक बार जब आप पैटर्न को पहचान लेते हैं, तो आप समझ जाएंगे कि इसे कैसे लागू किया जाना चाहिए। आपको हर बार पहिए को फिर से बनाने की ज़रूरत नहीं है - आपको बस इसे अपनी विशिष्ट आवश्यकताओं के अनुरूप बनाने की आवश्यकता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL जॉइन के लिए आपका अंतिम गाइड:OUTER JOIN - भाग 2

  2. SQL में वर्णानुक्रम में ऑर्डर कैसे करें

  3. आयामों के आयाम:डेटा वेयरहाउसिंग के सबसे सामान्य आयामी तालिका प्रकारों पर एक नज़र

  4. शुरुआती के लिए एसक्यूएल नहीं ऑपरेटर

  5. कैसे सुनिश्चित करें कि डेटाबेस में खंडित अनुक्रमणिकाएं नहीं हैं