अपनी विशिष्टताओं की मेरी व्याख्या के अनुसार, आप दो भिन्न (लेकिन जुड़े ) सुपरपाइप-उपप्रकार संरचनाओं को लागू करने के लिए एक विधि खोजना चाहते हैं ।
औचित्यपूर्ण कार्य को प्राप्त करने के लिए एक दृष्टिकोण को उजागर करने के लिए, मैं दो क्लासिक काल्पनिक इकाई प्रकारों को जारी करने के लिए परिदृश्य में जोड़ने जा रहा हूं Foo
और Bar
जिन्हें मैं बोला विस्तार दूंगा।
व्यापार नियम
यहाँ कुछ कथन दिए गए हैं जो मुझे एक तार्किक मॉडल बनाने में मदद करेंगे:
A Foo is either one Bar or one C
A Foo is categorized by one FooType
A Bar is either one A or one C
A Bar is classified by one BarType
तार्किक मॉडल
और फिर, परिणामी IDEF1X [1] लॉजिकल मॉडल को चित्र 1 में दिखाया गया है (और आप इसे ड्रॉपबॉक्स से पीडीएफ के रूप में भी डाउनलोड कर सकते हैं ):
फू और बार इसके अलावा
मैं जोड़ने नहीं था Foo
और Bar
मॉडल नज़र बेहतर बनाने के लिए है, लेकिन यह अधिक अर्थपूर्ण बनाने के लिए। मुझे लगता है कि वे निम्नलिखित के कारण महत्वपूर्ण हैं:
के रूप में A
और B
विशेषता नामित हिस्सा E
, इस सुविधा का सुझाव है कि वे की subentity प्रकार के होते हैं एक अलग (लेकिन संबंधित) की तरह अवधारणा , घटना , व्यक्ति , माप , आदि, जो मैं के माध्यम से प्रतिनिधित्व किया Bar
superentity प्रकार है कि, बारी में, है एक उप-प्रकार का प्रकार Foo
, जो D
पदानुक्रम के शीर्ष पर विशेषता रखता है।
के बाद से C
चर्चा के अंतर्गत इकाई प्रकार, के बाकी के साथ ही शेयरों एक विशेषता यानी, D
, इस पहलू insinuates कि यह का एक और प्रकार का एक subentity प्रकार है अवधारणा , घटना , व्यक्ति , माप , आदि, मैं इतना के आधार पर इस परिस्थिति का चित्रण किया Foo
सुपर इकाई प्रकार।
हालाँकि, ये केवल धारणाएं हैं, और चूंकि एक संबंधपरक डेटाबेस एक निश्चित व्यावसायिक संदर्भ के शब्दार्थ को प्रतिबिंबित करने के लिए है , आपको अपने विशिष्ट डोमेन में रुचि की सभी चीजों को पहचानना और वर्गीकृत करना होगा, ताकि आप ठीक से अधिक अर्थ प्राप्त कर सकें। ।
डिजाइन चरण में महत्वपूर्ण कारक
इस तथ्य से अवगत होने के लिए यह काफी उपयोगी है कि, सभी शब्दावली को एक तरफ रखकर, एक विशेष सुपर-टाइप-उपप्रकार क्लस्टर एक साधारण रिश्ता है। आइए हम निम्नलिखित तरीके से स्थिति का वर्णन करें:
- प्रत्येक अनन्य सुपरेंटिटी प्रकार की घटना केवल एक सबेंटिटी प्रकार के पूरक से संबंधित है ।
इस प्रकार, इन मामलों में एक-से-एक (1: 1) का एक पत्राचार (या कार्डिनैलिटी) है।
आप अपने पूर्ववर्ती पद से जानते हैं, discriminator विशेषता (स्तंभ, जब कार्यान्वित) एक सर्वोपरि भूमिका निभाता है जब एक बनाने संघ इस प्रकार की है, क्योंकि यह सही उप प्रकार उदाहरण है, जिसमें से महाप्रकार है इंगित करता है जुड़ा । (I) उपप्रकार से (i) उपप्रकार के लिए प्राथमिक कुंजी का प्रवास भी मुख्य महत्व है।
कंक्रीट DDL संरचना
और फिर मैंने एक डीडीएल संरचना लिखी जो ऊपर प्रस्तुत तार्किक मॉडल पर आधारित है:
CREATE TABLE FooType -- Look-up table.
(
FooTypeCode CHAR(2) NOT NULL,
Description CHAR(90) NOT NULL,
CreatedDateTime DATETIME NOT NULL,
CONSTRAINT PK_FooType PRIMARY KEY (FooTypeCode),
CONSTRAINT AK_FooType_Description UNIQUE (Description)
);
CREATE TABLE Foo -- Supertype
(
FooId INT NOT NULL, -- This PK migrates (1) to ‘Bar’ as ‘BarId’, (2) to ‘A’ as ‘AId’, (3) to ‘B’ as ‘BId’, and (4) to ‘C’ as ‘CId’.
FooTypeCode CHAR(2) NOT NULL, -- Discriminator column.
D INT NOT NULL, -- Column that applies to ‘Bar’ (and therefore to ‘A’ and ‘B’) and ‘C’.
CreatedDateTime DATETIME NOT NULL,
CONSTRAINT PK_Foo PRIMARY KEY (FooId),
CONSTRAINT FK_from_Foo_to_FooType FOREIGN KEY (FooTypeCode)
REFERENCES FooType (FooTypeCode)
);
CREATE TABLE BarType -- Look-up table.
(
BarTypeCode CHAR(1) NOT NULL,
Description CHAR(90) NOT NULL,
CONSTRAINT PK_BarType PRIMARY KEY (BarTypeCode),
CONSTRAINT AK_BarType_Description UNIQUE (Description)
);
CREATE TABLE Bar -- Subtype of ‘Foo’.
(
BarId INT NOT NULL, -- PK and FK.
BarTypeCode CHAR(1) NOT NULL, -- Discriminator column.
E INT NOT NULL, -- Column that applies to ‘A’ and ‘B’.
CONSTRAINT PK_Bar PRIMARY KEY (BarId),
CONSTRAINT FK_from_Bar_to_Foo FOREIGN KEY (BarId)
REFERENCES Foo (FooId),
CONSTRAINT FK_from_Bar_to_BarType FOREIGN KEY (BarTypeCode)
REFERENCES BarType (BarTypeCode)
);
CREATE TABLE A -- Subtype of ‘Bar’.
(
AId INT NOT NULL, -- PK and FK.
X INT NOT NULL, -- Particular column.
CONSTRAINT PK_A PRIMARY KEY (AId),
CONSTRAINT FK_from_A_to_Bar FOREIGN KEY (AId)
REFERENCES Bar (BarId)
);
CREATE TABLE B -- (1) Subtype of ‘Bar’ and (2) supertype of ‘A’ and ‘B’.
(
BId INT NOT NULL, -- PK and FK.
Y INT NOT NULL, -- Particular column.
CONSTRAINT PK_B PRIMARY KEY (BId),
CONSTRAINT FK_from_B_to_Bar FOREIGN KEY (BId)
REFERENCES Bar (BarId)
);
CREATE TABLE C -- Subtype of ‘Foo’.
(
CId INT NOT NULL, -- PK and FK.
Z INT NOT NULL, -- Particular column.
CONSTRAINT PK_C PRIMARY KEY (CId),
CONSTRAINT FK_from_C_to_Foo FOREIGN KEY (FooId)
REFERENCES Foo (FooId)
);
इस संरचना के साथ आप अपने बेस टेबल (या संबंध ) में NULL अंकों के भंडारण से बचते हैं , जो आपके डेटा बेस में अस्पष्टता का परिचय देगा।
वफ़ादारी, स्थिरता और अन्य विचार
एक बार जब आप अपने डेटाबेस को लागू कर रहे हैं, तो आप यह सुनिश्चित करना चाहिए कि (क) प्रत्येक अनन्य महाप्रकार पंक्ति हमेशा अपने इसी से पूरित है उपप्रकार समकक्ष और, बारी में, गारंटी नहीं है कि (ख) इस तरह के उप-प्रकार पंक्ति मूल्य के साथ संगत है महाप्रकार में निहित discriminator स्तंभ । इसलिए, यह TRANSACTIONS
सुनिश्चित करने के लिए कि आपके डेटाबेस में ये स्थितियां पूरी हुई हैं, ACID को नियोजित करने के लिए यह काफी सुविधाजनक है ।
आपको अपने डेटाबेस की तार्किक ध्वनि, आत्म-अभिव्यक्ति और सटीकता को नहीं छोड़ना चाहिए, ये ऐसे पहलू हैं जो निश्चित रूप से आपके डेटाबेस को अधिक ठोस बनाते हैं।
पहले से पोस्ट किए गए दो उत्तर में पहले से ही मौजूद बिंदु शामिल हैं जो निश्चित रूप से आपके डेटाबेस और इसके एप्लिकेशन प्रोग्राम (ओं) को डिजाइन, बनाते और प्रबंधित करते समय ध्यान में रखने योग्य हैं।
VIEW परिभाषाओं के माध्यम से डेटा पुनर्प्राप्त करना
आप कुछ दृश्य सेट कर सकते हैं जो विभिन्न सुपर-टाइप-उप-प्रकार समूहों के स्तंभों को जोड़ते हैं , ताकि आप हर बार डेटा को पुनः प्राप्त कर सकें, जैसे, हर बार आवश्यक जॉइन क्लॉस लिखना। इस तरह, आप आसानी से सीधे VIEW (एक व्युत्पन्न संबंध या तालिका ) से चयन कर सकते हैं ।
जैसा कि आप देख सकते हैं, "टेड" कॉड, निस्संदेह, एक प्रतिभाशाली था। उनके द्वारा निकाले गए उपकरण काफी मजबूत और सुरुचिपूर्ण हैं, और निश्चित रूप से, एक दूसरे के साथ अच्छी तरह से एकीकृत हैं।
संबंधित संसाधन
यदि आप कुछ व्यापक डेटाबेस का विश्लेषण करना चाहते हैं, जिसमें सुपरटाइप-सबटाइप रिलेशनशिप शामिल हैं, तो आपको निम्न स्टैक ओवरफ्लो प्रश्नों के लिए @PerformanceDBA द्वारा प्रस्तावित असाधारण उत्तरों का मूल्य मिलेगा :
ध्यान दें
1. सूचना मॉडलिंग के लिए एकीकरण परिभाषा ( आईडीईएफ 1 एक्स ) एक उच्च अनुशंसित डेटा मॉडलिंग तकनीक है जिसे संयुक्त राज्य अमेरिका के राष्ट्रीय मानक और प्रौद्योगिकी संस्थान ( एनआईएसटी ) द्वारा 1993 में मानक के रूप में स्थापित किया गया था । यह डॉ। ईएफ कोडड द्वारा लिखित प्रारंभिक सैद्धांतिक सामग्री (ए) पर आधारित है । पर (ख) इकाई-संबंध डेटा, द्वारा विकसित की दृष्टि डॉ पीपी चेन ; और भी (ग) रॉबर्ट जी ब्राउन द्वारा बनाई गई लॉजिकल डेटाबेस डिजाइन तकनीक। यह ध्यान देने योग्य है कि IDEF1X को पहले-क्रम तर्क के माध्यम से औपचारिक रूप दिया गया था।