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

सामग्री का लचीला और प्रबंधनीय बिल (बीओएम) डिजाइन

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

बीओएम का संक्षिप्त पुनर्कथन

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

अपने सरलतम रूप में, क्लासिक बीओएम संरचना इस तरह दिखती है:




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

स्कीमा - एक दैनिक उदाहरण

मानो या न मानो, वर्ग-विशेषता-प्रकार ट्रिपलेट और टेबल-कॉलम-प्रकार ट्रिपलेट भी बीओएम पैटर्न का पालन करते हैं। नीचे दिए गए भौतिक डेटा मॉडल में डेटा डिक्शनरी की मुख्य तालिकाएँ हैं।





<थ>विवरण
तालिका
dd_attribute एक अनूठी विशेषता, किसी भी कार्यान्वयन से स्वतंत्र।
dd_attr_instance एक विशेषता का एक उदाहरण। उदाहरण के दो विशिष्ट संबंध हैं:
1) यह जिस वर्ग से संबंधित है, जो एक तार्किक या भौतिक वस्तु हो सकती है। उदाहरण इस वर्ग के लिए अद्वितीय है।
2) डेटा प्रकार, जो मूल प्रकार या अन्य वर्ग प्रकार हो सकता है।
dd_class सामान्य अर्थ में एक वर्ग या वस्तु - वास्तविक कार्यान्वयन class_type द्वारा दिया जा रहा है - जिसमें विशेषताओं का एक समूह होता है।


एक डेटा डिक्शनरी, या मेटाडेटा रिपोजिटरी, को आईबीएम डिक्शनरी ऑफ कंप्यूटिंग में परिभाषित किया गया है, "डेटा के बारे में जानकारी के केंद्रीकृत भंडार जैसे अर्थ, अन्य डेटा के संबंध, मूल, उपयोग और प्रारूप"।

अब जावा एप्लिकेशन के लिए निम्नलिखित XML स्कीमा डेफिनिशन (XSD) पर विचार करें:



यह एक्सएसडी जटिल प्रकारों को परिभाषित करता है जिनमें मूल एक्सएमएल प्रकार के गुण होते हैं - उदा। स्ट्रिंग , NMTOKEN , कोई भी सरल प्रकार - या अन्य जटिल प्रकार।

उपरोक्त एक्सएसडी के लिए डेटा डिक्शनरी को पॉप्युलेट करना शुरू करने के लिए, हमें सबसे पहले एक्सएमएल मूल डेटा प्रकारों को कक्षाओं के रूप में दर्ज करना होगा :


class_name स्टीरियोटाइप
बूलियन मूल
तारीख मूल
तारीख समय मूल
स्ट्रिंग मूल
संस्करण मूल
NMTOKEN मूल
कोई भी सरल प्रकार मूल


अब हमारे पास वह सब कुछ है जो हमें अपने डेटा डिक्शनरी को पॉप्युलेट करना शुरू करने के लिए चाहिए। नीचे दिए गए उदाहरण में, ConnectionConfigType . को पूरी तरह से परिभाषित करने के लिए बस पर्याप्त दिखाया गया है जटिल प्रकार।


<वें colspan="2">of_class (dd_attr_instance के माध्यम से) <वें colspan="2">type_class (dd_attr_instance के माध्यम से)
dd_attribute
attr_name class_name स्टीरियोटाइप class_name स्टीरियोटाइप
कुंजी संपत्ति प्रकार XSDcomplexType स्ट्रिंग मूल
मान संपत्ति प्रकार XSDcomplexType स्ट्रिंग मूल
संपत्ति ConnectionConfigType XSDcomplexType संपत्ति प्रकार XSDcomplexType
driverClassName ConnectionConfigType XSDcomplexType स्ट्रिंग मूल
उपयोगकर्ता ConnectionConfigType XSDcomplexType स्ट्रिंग मूल
पासवर्ड ConnectionConfigType XSDcomplexType स्ट्रिंग मूल
पूलनाम ConnectionConfigType XSDcomplexType स्ट्रिंग मूल


ध्यान दें कि कैसे ConnectionConfigType.Property . का डेटा प्रकार विशेषता एक और जटिल प्रकार है, PropertyType . एक्सएमएल में, जटिल प्रकार अन्य जटिल प्रकारों से बने हो सकते हैं। XML दस्तावेज़ों में विशेष रूप से WSDL में नेस्टेड जटिल प्रकारों को खोजना असामान्य नहीं है।

तो क्या? तुम पूछो। ठीक है, यह देखते हुए कि XML संरचना में पदानुक्रमित है और जटिल प्रकारों का पुन:उपयोग किया जा सकता है, XML स्वाभाविक रूप से BOM पैटर्न का अनुसरण करता है

और यह घटना एक्सएमएल तक ही सीमित नहीं है। अन्य स्कीमा, जैसे कि JSON और ऑब्जेक्ट-रिलेशनल डेटाबेस के लिए, BOM पैटर्न का भी अनुसरण करते हैं

बीओएम में लचीलापन शामिल करना

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

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

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


आइटम वैकल्पिक
अभिभावक बच्चा मात्रा
V6 (विधानसभा) ईंधन पंप (वैकल्पिक) 1
ईंधन पंप (वैकल्पिक) बॉश पंप (विधानसभा)
ईंधन पंप (वैकल्पिक) लुकास पंप (विधानसभा)


एक संस्करण एक अन्य प्रकार की वस्तु है, लेकिन इस बार ग्राहक चुनाव करता है। एक कार खरीदार अलग-अलग बॉडी स्टाइल चुन सकता है - 3-दरवाजा, 5-दरवाजा, या एक एस्टेट (स्टेशन वैगन या वैगन)। वे दो अलग-अलग प्रकार के इंजनों में से भी चुन सकते हैं - एक V6 या एक V8। हमारे उदाहरण में, खरीदार को वैरिएंट के नीचे एक और केवल एक असेंबली का चुनाव करना होगा।


<वें colspan="2">वेरिएंट
आइटम
अभिभावक बच्चा न्यूनतम विकल्प अधिकतम विकल्प
कार (विधानसभा) बॉडी (वैरिएंट) 1 1
बॉडी (वैरिएंट) 3 द्वार (विधानसभा)
बॉडी (वैरिएंट) 5 द्वार (विधानसभा)
बॉडी (वैरिएंट) एस्टेट (विधानसभा)
कार (विधानसभा) इंजन (वेरिएंट) 1 1
इंजन (संस्करण) V6 (विधानसभा)
इंजन (संस्करण) V8 (विधानसभा)


अन्य डोमेन में, विकल्पों की संख्या अधिक विविध है। उदाहरण के तौर पर शिक्षा को लें। एक विशेष योग्यता प्राप्त करने के लिए, एक छात्र को समूहों की एक निर्धारित संख्या को पूरा करना होता है। प्रत्येक समूह के लिए, वे कई मॉड्यूल में से चुन सकते हैं।

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

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



जहां चीजें समय के साथ बदलती रहती हैं, वहां निम्न पैटर्न अधिक लचीला और बनाए रखने में आसान होता है। दूसरी तरफ, पार करना (या नेविगेट करना) थोड़ा अधिक बोझिल है।



उपरोक्त तार्किक मॉडल को भौतिक मॉडल में बदलने से चीजें कुछ इस तरह दिखने लगती हैं:




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

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


<थ>पिछली
भाग संख्या संस्करण बाद के
123456-1 1 123456-1 123456-1
123456-2 2 123456-1 123456-2
123456-3 3 123456-2 123456-3
123456-4 4 123456-1 123456-4
123456-5 5 123456-2, 123456-3 123456-5


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

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

बिल ऑफ मैटेरियल्स पैटर्न के बारे में अंतिम शब्द

मुझे आशा है कि लेखों की इस श्रृंखला ने आपको बीओएम पैटर्न को पहचानने में मदद की है। जब यह आपके प्रोजेक्ट में दिखाई देता है, तो आप समझ जाएंगे कि इसे अपने विशिष्ट डोमेन में सबसे अच्छा कैसे मॉडल किया जाए।

हालांकि, कृपया ध्यान दें कि सामग्री संरचना के सख्त बिल के फायदे और नुकसान हैं। प्रो:पदानुक्रम पुन:प्रयोज्य हैं। साथ:पदानुक्रम पुन:प्रयोज्य हैं। यह आपके मामले में बुरी बात हो भी सकती है और नहीं भी, लेकिन यह निश्चित रूप से जागरूक होने वाली बात है।

अच्छी बात यह है कि पदानुक्रम को पत्थर में स्थापित करने की आवश्यकता नहीं है। विकल्पों, विविधताओं और संशोधनों का उपयोग करके, आप उन डोमेन को मॉडल कर सकते हैं जहां विकल्प मौजूद हैं, जहां ऐतिहासिक स्थिति को बनाए रखा जाना चाहिए, और अंत में जहां एकमात्र स्थिरांक परिवर्तन है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बाहरी सेवाओं के साथ लॉग इन करना

  2. JDBC में स्क्रॉल करने योग्य, अद्यतन करने योग्य परिणाम कैसे बनाएं?

  3. स्टार स्कीमा बनाम स्नोफ्लेक स्कीमा

  4. SQL में साल दर साल ग्रुप कैसे करें

  5. वास्तविक समय संचार के लिए PHP के साथ फायरबेस को एकीकृत करें