मुझे "या तो / या" संबंध कैसे बनाना चाहिए?


12

मान लीजिए कि मेरे पास सॉफ़्टवेयर नाम की एक इकाई है और दो उप-प्रकार FreeSoftware और NonFreeSoftware हैं। NonFreeSoftware इकाई में खरीद तिथि, विक्रेता, आदि जैसे गुण हैं। FreeSoftware इकाई में लाइसेंस, स्रोत कोड url, आदि जैसे गुण हैं।

इसलिए अगर मैं दूसरी इकाई, ऑपरेटिंग सिस्टम को मॉडल करना चाहता हूं, तो मुझे यह कैसे करना चाहिए? सॉफ्टवेयर के लिए एक "संबंध" है लेकिन FreeSoftware और NonFreeSoftware के लिए एक "या तो / या" संबंध है।

मुझे लगता है कि मैं इस पदानुक्रम का विश्लेषण करने के तरीके में कुछ याद कर रहा हूं।


इस उत्तर की समीक्षा करें । यह इस तरह के रिश्ते को मॉडलिंग के कार्यान्वयन विवरण को कवर करता है।
निक चामास

जवाबों:


8

इसे प्रबंधित करने का तरीका यह है कि आपके उप-प्रकारों को सुपर-प्रकार द्वारा निर्धारित किया जाना है (यानी उप-प्रकार का पीके भी उप-प्रकार से सुपर-प्रकार के लिए एक एफके है।)

चुनौती यह समझ रही है कि क्या कुछ वास्तव में परस्पर अनन्य है या नहीं। उप-प्रकारों की विशेषताएं केवल उन उप-प्रकारों पर लागू होनी चाहिए, लेकिन यह अच्छी तरह से हो सकता है कि कुछ उप-प्रकार परस्पर अनन्य हैं और कुछ नहीं हैं।

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

यदि आपके पास उप-प्रकार हैं जो पारस्परिक रूप से अनन्य नहीं हैं, तो वे किसी भी विभाजन विशेषता का उपयोग किए बिना मौजूद हो सकते हैं।

इस डेटा मॉडल पर विचार करें:

ERD

आपके पास तीन सुपर-प्रकार हैं, लेकिन ध्वज विभाजन विशेषता के आधार पर प्रकार FREE_SOFTWAREऔर NON-FREE_SOFTWAREप्रकार परस्पर अनन्य हैं SOFTWARE.free_not_free। सॉफ्टवेयर का कोई भी टुकड़ा संभावित रूप से एक है OPERATING_SYSTEM, चाहे वह मुफ्त हो या न हो।


1
थोड़ा OT: इस ईआर आरेख बनाने के लिए आपने क्या उपयोग किया?
डैनियल सेरोडियो

@DanielSerodio - मैंने स्मार्ट आकृतियों के साथ Visio का उपयोग किया मैंने जेम्स मार्टिन ईआरडी अंकन के आधार पर खुद को बनाया। आकार उन्हें एक अनौपचारिक रूप देने के लिए एक कस्टम लाइन बनावट का उपयोग करते हैं, जो मुझे लोगों को याद दिलाने में सहायक होता है जब एक आरेख "स्केच" या ड्राफ्ट डिजाइन होता है।
जोएल ब्राउन

@JoelBrown क्या आप अपने स्टेंसिल साझा करने के लिए तैयार होंगे? ये वास्तव में अच्छी आकृतियाँ हैं
imoatama

2
@imoatama - यह एक समय हो गया है, लेकिन मैं अंत में यहाँ स्टैंसिल को पोस्ट करने के लिए मिला: moosewarevisioerd.codeplex.com इस विवरण पर ध्यान दें कि स्टेंसिल के स्मार्ट आकार Visio के पुराने संस्करण और कुछ व्यवहारों के लिए बनाए गए थे संबंध संबंधक आकृतियाँ थोड़ी परतदार हो सकती हैं। एक दिन मैं इसे ठीक करने के लिए चारों ओर मिलूँगा।
जोएल ब्राउन

1

ऑपरेटिंगसिस्टम पूरी तरह से नई इकाई क्यों होगी? यह सॉफ्टवेयर एक के तहत गिरना चाहिए, जैसा कि यह है। और एक OS (यदि बंद-स्रोत) एक खरीद की तारीख, विक्रेता, आदि होगा और ओपन-सोर्स ओएस में एक लाइसेंस, स्रोत URL आदि होगा।

मैं SoftwareTypeउन पंक्तियों के साथ एक या कुछ के साथ संबंध बनाने की सलाह दूंगा। यही कारण है कि जब आप यह बता सकते हैं कि सॉफ्टवेयर OS है, या अनुप्रयोग, या जो भी अन्य प्रकार के सॉफ्टवेयर आप का समर्थन कर रहे हैं, वह है।


मैं चाहूंगा कि ऑपरेटिंग सिस्टम एक अलग इकाई हो क्योंकि यह सॉफ्टवेयर का एक विशेषज्ञता है। इसमें ऐसी विशेषताएँ हो सकती हैं जो किसी अन्य सॉफ़्टवेयर में नहीं होंगी (जैसे कर्नेल प्रकार, RTOS- या-ध्वज नहीं, बहुउद्देशीय ध्वज, आदि)।
jl6

1
@ jl6 मैं अभी भी यहाँ अलग होने की भीख माँगता हूँ। सॉफ्टवेयर के हर टुकड़े (यह एक ओएस है या नहीं) में विशिष्ट गुण होंगे। जिन्हें अन्यत्र संग्रहित किया जा सकता है। आप OS को अलग रख कर स्केलेबिलिटी को कम कर रहे हैं।
थॉमस स्ट्रिंगर

अगर मैं सही तरीके से समझूं, तो आप एक सॉफ़्टवेयर इकाई और सॉफ़्टवेयरटाइप इकाई की सिफारिश कर रहे हैं। क्या आप Free, NonFree, और OperatingSystem कह रहे हैं, ये सभी SoftwareType के अलग-अलग उदाहरण हैं? मुझे यकीन है कि आप सही हैं, लेकिन फिर आप विभिन्न प्रकारों की विभिन्न विशेषताओं को कहाँ संग्रहीत करते हैं?
jl6
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.