साधारण शब्दों में 3NF और BCNF के बीच का अंतर (8 साल की उम्र में समझाना संभव है)


157

मैंने उद्धरण पढ़ा है: डेटा कुंजी [1NF], संपूर्ण कुंजी [2NF] और कुंजी [3NF] पर निर्भर करता है

हालाँकि, मुझे 3.5NF या BCNF को समझने में परेशानी हो रही है क्योंकि यह कहा जाता है। यहाँ मैं समझता हूँ:

  • BCNF 3NF से अधिक कठोर है
  • तालिका में किसी भी एफडी के बाईं ओर एक सुपरकी (या कम से कम एक उम्मीदवार कुंजी) होना चाहिए

तो ऐसा क्यों है, कि कुछ 3NF टेबल BCNF में नहीं हैं? मेरा मतलब है, 3NF बोली स्पष्ट रूप से "कुछ भी नहीं है लेकिन कुंजी" का अर्थ है कि सभी विशेषताएँ पूरी तरह से प्राथमिक कुंजी पर निर्भर करती हैं। प्राथमिक कुंजी, आखिरकार, एक उम्मीदवार कुंजी है जब तक कि इसे हमारी प्राथमिक कुंजी नहीं चुना जाता है।

यदि अब तक मेरी समझ के संबंध में कुछ भी गलत है, तो कृपया मुझे सही करें और जो भी सहायता आप प्रदान कर सकते हैं उसके लिए धन्यवाद।


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

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

जवाबों:


162

आपके पिज्जा में तीन टॉपिंग प्रकार हो सकते हैं:

  • एक प्रकार का पनीर
  • एक प्रकार का मांस
  • एक प्रकार की सब्जी

इसलिए हम दो पिज्जा ऑर्डर करते हैं और निम्नलिखित टॉपिंग चुनते हैं:

Pizza    Topping     Topping Type
-------- ----------  -------------
1        mozzarella  cheese
1        pepperoni   meat
1        olives      vegetable
2        mozzarella  meat
2        sausage     cheese
2        peppers     vegetable

एक सेकंड रुको, मोज़ेरेला एक पनीर और एक मांस दोनों नहीं हो सकता है! और सॉसेज पनीर नहीं है!

हमें इस तरह की गलतियों को रोकने की ज़रूरत है, ताकि मोज़ेरेला हमेशा पनीर बन सके। हमें इसके लिए एक अलग तालिका का उपयोग करना चाहिए, इसलिए हम केवल एक ही स्थान पर उस तथ्य को लिखते हैं।

Pizza    Topping
-------- ----------
1        mozzarella
1        pepperoni
1        olives
2        mozzarella 
2        sausage
2        peppers

Topping     Topping Type
----------  -------------
mozzarella  cheese
pepperoni   meat
olives      vegetable
sausage     meat
peppers     vegetable

यह वह व्याख्या थी जिसे एक 8 वर्षीय व्यक्ति समझ सकता है। यहाँ अधिक तकनीकी संस्करण है।

BCNF केवल 3NF से अलग कार्य करता है जब कई अतिव्यापी उम्मीदवार कुंजियाँ होती हैं।

कारण यह है कि कार्यात्मक निर्भरता X -> Yनिश्चित रूप से सही है यदि Yइसका सबसेट हैX । तो किसी भी तालिका में जिसमें केवल एक उम्मीदवार कुंजी है और 3NF में है, यह पहले से ही BCNF में है क्योंकि कोई भी स्तंभ (या तो कुंजी या गैर-कुंजी) नहीं है जो कार्यात्मक रूप से उस कुंजी के अलावा किसी भी चीज़ पर निर्भर है।

क्योंकि प्रत्येक पिज्जा में प्रत्येक टॉपिंग प्रकार का एक होना आवश्यक है, हम जानते हैं कि (पिज्जा, टॉपिंग प्रकार) एक उम्मीदवार कुंजी है। हम यह भी सहज रूप से जानते हैं कि दी गई टॉपिंग एक साथ विभिन्न प्रकार की नहीं हो सकती। तो (पिज्जा, टॉपिंग) अद्वितीय होना चाहिए और इसलिए एक उम्मीदवार कुंजी भी है। इसलिए हमारे पास दो अतिव्यापी उम्मीदवार कुंजियाँ हैं।

मैंने एक विसंगति दिखाई जहां हमने मोज़ारेला को गलत टॉपिंग के रूप में चिह्नित किया था। हम जानते हैं कि यह गलत है, लेकिन जो नियम गलत है वह निर्भरता हैTopping -> Topping Type जो इस तालिका के लिए बीसीएनएफ के लिए वैध निर्भरता नहीं है। यह पूरी उम्मीदवार कुंजी के अलावा किसी अन्य चीज पर निर्भरता है।

तो इसे हल करने के लिए, हम Pizzas तालिका से टॉपिंग प्रकार लेते हैं और इसे Toppings तालिका में एक गैर-कुंजी विशेषता बनाते हैं।


3
"यह एक संपूर्ण उम्मीदवार कुंजी के अलावा किसी अन्य चीज़ पर निर्भरता है।" - धन्यवाद
gnsb

12
"तो किसी भी तालिका में जिसमें केवल एक उम्मीदवार कुंजी है और 3NF में है" - बिल्कुल नहीं। आप जो उदाहरण देते हैं वह इस शर्त को पूरा करता है। हालाँकि, यह एक 3NF उदाहरण नहीं है क्योंकि यह 2NF नहीं है। कुंजी (1NF), संपूर्ण कुंजी (2NF), और कुंजी (3NF) के अलावा कुछ भी नहीं। कुंजी (पिज्जा, टॉपिंग) है, और कॉलम टॉपिंग टाइप यह कुंजी पर निर्भर है और कुछ भी नहीं है, लेकिन यह पूरी कुंजी पर निर्भर नहीं है। इसलिए यह 2NF नहीं है, और इस प्रकार 3NF या BCNF नहीं है। यह 1NF है। इसे 2NF बनाने से आप उस समस्या को दरकिनार कर देंगे जिसे आप समझाने की कोशिश कर रहे हैं।
डैनियल बारबलेस

4
@DanielBarbalace, इस तालिका की बात यह है कि इसमें इस तालिका के लिए एक वैकल्पिक उम्मीदवार कुंजी है: (पिज़्ज़ा, टॉपिंग टाइप)। चूंकि टॉपिंगटाइप उस उम्मीदवार कुंजी का सबसेट है, इसलिए यह 2NF को संतुष्ट करता है।
बिल करविन

6
क्षमा करें, मुझे इसे कम करना पड़ा। आपने जो उदाहरण दिखाया वह 3NF में नहीं है। बीसीएनएफ के उद्देश्य को समझने के लिए, मुझे एक उदाहरण देखना होगा जहां यह 3 एनएफ में है लेकिन बीसीएनएफ नहीं है। अभी, मुझे बीसीएनएफ का उद्देश्य दिखाई नहीं दे रहा है।
स्पर्मो

5
यह पहले से ही 2NF में क्यों नहीं संभाला जाता है? मेरे दृष्टिकोण से, मूल तालिका की प्राथमिक कुंजी पिज़्ज़ा + टॉपिंग है, और टॉपिंग प्रकार टॉपिंग पर निर्भर है, इसलिए क्या यह आंशिक निर्भरता नहीं है जिसे 2NF चरण में ध्यान रखा जाना चाहिए?
ग्रीनपेंगुइन

91

सूक्ष्म अंतर यह है कि 3NF प्रमुख और गैर-प्रमुख विशेषताओं (जिसे गैर-प्रधान गुण भी कहा जाता है ) के बीच अंतर करता है, जबकि BCNF नहीं करता है।

इसे Zaniolo की 3NF की परिभाषा का उपयोग करके सबसे अच्छा समझाया गया है , जो कि Codd के समतुल्य है:

एक संबंध, R, प्रत्येक Nontrivial FD (X-> A) के लिए 3NF iff में है, जो निम्न स्थितियों में से कम से कम R से संतुष्ट है, यह सत्य है:

(ए) आर, या के लिए एक्स एक सुपरकी है

(b) R के लिए A एक प्रमुख विशेषता है

बीसीएनएफ को (ए) की आवश्यकता होती है, लेकिन अपने स्वयं के विशेष मामले के रूप में इलाज नहीं करता है (बी)। दूसरे शब्दों में, बीसीएनएफ के लिए आवश्यक है कि प्रत्येक निर्धारक निर्धारक एक सुपरकी है, यहां तक ​​कि इसके आश्रित गुण एक कुंजी का हिस्सा होने के लिए भी होते हैं।

एक संबंध, R, प्रत्येक अप्रत्यक्ष FD (X-> A) के लिए BCNF iff में है। R द्वारा संतुष्ट निम्नलिखित शर्त सत्य है:

(ए) आर के लिए एक्स एक सुपरकी है

BCNF इसलिए अधिक सख्त है।

अंतर इतना सूक्ष्म है कि 3NF के रूप में अनौपचारिक रूप से कई लोग जो वर्णन करते हैं वह वास्तव में BCNF है। उदाहरण के लिए, आपने यहां बताया कि 3NF का अर्थ है "डेटा कुंजी [s] पर निर्भर करता है ... और कुछ नहीं बल्कि कुंजी [s]", लेकिन यह वास्तव में BCNF का अनौपचारिक विवरण है और 3NF नहीं। 3NF को अधिक सटीक रूप से वर्णित किया जा सकता है क्योंकि " गैर-कुंजी डेटा कुंजियों पर निर्भर करता है ... और कुंजी के अलावा कुछ भी नहीं"।

आपने यह भी कहा:

3NF उद्धरण स्पष्ट रूप से "कुछ भी नहीं है लेकिन कुंजी" का अर्थ है कि सभी विशेषताएँ पूरी तरह से प्राथमिक कुंजी पर निर्भर करती हैं।

यह एक निरीक्षण है। 3NF और BCNF और सभी सामान्य फॉर्म सभी उम्मीदवार कुंजी और / या सुपरकी के साथ संबंध रखते हैं, न कि केवल एक "प्राथमिक" कुंजी।


7
वाह। प्रो। ज़ानोलो वास्तव में मेरी कक्षा (सीएस 143, यूसीएलए) को पढ़ाते हैं, और मैं अंतिम परीक्षा की तैयारी के दौरान इस उत्तर पर लड़खड़ा गया। मेरे प्रोफेसर का नाम, और विस्तृत उत्तर के लिए धन्यवाद देखने के लिए महान!
डीवी।

क्या आप उस संबंध का उदाहरण दे सकते हैं जो 3NF में है लेकिन BCNF में नहीं है? मेरे लिए इसकी कल्पना करना कठिन है ...
लियो

10
आर {ए, बी, सी} जहां {ए, बी} एक कुंजी है। निर्भरता C-> B को देखते हुए, R 3NF की आवश्यकताओं को पूरा करता है, लेकिन BCNF को नहीं।
nvogel

2
कुंजी का अर्थ है उम्मीदवार की कुंजी। मुख्य विशेषता का मतलब एक विशेषता है जो उम्मीदवार कुंजी का हिस्सा है, एकेए एक प्रमुख विशेषता है
nvogel

3
एक विशेषता प्रमुख है अगर यह किसी भी उम्मीदवार की कुंजी का हिस्सा है; यदि यह किसी उम्मीदवार की कुंजी का हिस्सा नहीं है, तो गैर-प्रमुख।
nvogel

26

BCNF और 3NF के बीच का अंतर

बीसीएनएफ परिभाषा का उपयोग करना

यदि और केवल यदि इसकी प्रत्येक निर्भरता X → Y के लिए, तो निम्न में से कम से कम एक स्थिति धारण की जाती है :

  • X → Y एक तुच्छ कार्यात्मक निर्भरता (Y, X), या है
  • स्कीमा आर के लिए X एक सुपर कुंजी है

और 3NF परिभाषा

यदि और केवल यदि, इसके प्रत्येक कार्यात्मक निर्भरता X → A के लिए, तो निम्न में से कम से कम एक स्थिति रखती है:

  • X में A (यानी X → A तुच्छ कार्यात्मक निर्भरता है), या है
  • एक्स एक सुपरकी है, या
  • AX का प्रत्येक तत्व, A और X के बीच का अंतर, एक प्रमुख विशेषता है (यानी, AX में प्रत्येक विशेषता कुछ उम्मीदवार कुंजी में निहित है)

हम निम्नलिखित अंतर को सरल शब्दों में देखते हैं:

  • BCNF में : प्रत्येक आंशिक कुंजी (प्राइम विशेषता) केवल एक सुपरकी पर निर्भर कर सकती है,

जहाँ तक

  • 3NF में : एक आंशिक कुंजी (प्राइम विशेषता) एक विशेषता पर भी निर्भर कर सकती है जो एक सुपरकी (कोई अन्य आंशिक कुंजी / प्राइम विशेषता या यहां तक ​​कि गैर-प्राइम विशेषता) नहीं है।

कहाँ पे

  1. एक प्रमुख विशेषता एक उम्मीदवार कुंजी में पाया जाने वाला एक विशेषता है, और
  2. एक उम्मीदवार कुंजी उस संबंध के लिए एक न्यूनतम सुपरकी है, और
  3. एक superkey एक रिश्ता चर की विशेषताओं का एक सेट है जिसके लिए यह मानती है कि उस चर करने के लिए आवंटित सभी संबंधों में, वहाँ कोई दो अलग tuples (पंक्तियाँ) इस set.Equivalently एक superkey में विशेषताओं के लिए एक ही मान होती है भी कर सकते हैं एक संबंध स्कीमा की विशेषताओं के एक सेट के रूप में परिभाषित किया जाना चाहिए, जिस पर स्कीमा की सभी विशेषताएं कार्यात्मक रूप से निर्भर हैं। (एक सुपरकी में हमेशा एक उम्मीदवार कुंजी होती है / एक उम्मीदवार कुंजी हमेशा एक सुपरकीट का सबसेट होती है। आप सुपरकी में से किसी एक को प्राप्त करने के संबंध में कोई भी विशेषता जोड़ सकते हैं।)

अर्थात्, उम्मीदवार कुंजी का कोई भी आंशिक उपसमूह (पूर्ण सेट को छोड़कर कोई भी गैर तुच्छ उपसमुच्चय) सुपरकी के अलावा किसी अन्य चीज़ पर कार्यात्मक रूप से निर्भर नहीं हो सकता है।

BCNF में नहीं तालिका / संबंध विसंगतियों के अधीन है जैसे कि किसी अन्य उपयोगकर्ता द्वारा पिज्जा उदाहरण में उल्लिखित अद्यतन विसंगतियां। दुर्भाग्य से,

  • BNCF हमेशा प्राप्त नहीं किया जा सकता है , जबकि
  • 3NF हमेशा प्राप्त किया जा सकता है

3NF बनाम बीसीएनएफ उदाहरण

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

आज की टेनिस कोर्ट बुकिंग ( 3NF, BCNF नहीं )

Court   Start Time  End Time    Rate Type
------- ----------  --------    ---------
1       09:30       10:30       SAVER
1       11:00       12:00       SAVER
1       14:00       15:30       STANDARD
2       10:00       11:30       PREMIUM-B
2       11:30       13:30       PREMIUM-B
2       15:00       16:30       PREMIUM-A

तालिका की सुपरकिंग्स इस प्रकार हैं:

S1 = {Court, Start Time}
S2 = {Court, End Time}
S3 = {Rate Type, Start Time}
S4 = {Rate Type, End Time}
S5 = {Court, Start Time, End Time}
S6 = {Rate Type, Start Time, End Time}
S7 = {Court, Rate Type, Start Time}
S8 = {Court, Rate Type, End Time}
ST = {Court, Rate Type, Start Time, End Time}, the trivial superkey

3NF समस्या : आंशिक कुंजी / प्रमुख विशेषता "कोर्ट" एक सुपरकी के अलावा किसी अन्य चीज पर निर्भर है। इसके बजाय, यह आंशिक कुंजी / प्रधान विशेषता "दर प्रकार" पर निर्भर है। इसका मतलब यह है कि अगर हम दरबार को अपग्रेड करना चाहते हैं या दर में बदलाव करना चाहते हैं, तो उपयोगकर्ता को मैन्युअल रूप से दर प्रकार बदलना होगा।

  • लेकिन क्या होगा अगर उपयोगकर्ता अदालत को अपग्रेड करता है, लेकिन दर को बढ़ाने के लिए याद नहीं करता है? या क्या होगा अगर गलत दर टाइप कोर्ट में आवेदन किया जाए?

(तकनीकी शब्दों में, हम गारंटी नहीं दे सकते कि "दर प्रकार" -> "न्यायालय" कार्यात्मक निर्भरता का उल्लंघन नहीं किया जाएगा)।

BCNF समाधान : यदि हम उपरोक्त तालिका को BCNF में रखना चाहते हैं, तो हम दिए गए संबंध / तालिका को निम्नलिखित दो संबंधों / तालिकाओं में विघटित कर सकते हैं (यह मानते हुए कि दर प्रकार केवल न्यायालय और सदस्यता की स्थिति पर निर्भर है, जिसे हम कर सकते हैं हमारे डेटाबेस के ग्राहकों से पूछकर खोज करें, टेनिस क्लब के मालिक):

दर प्रकार ( BCNF और कमजोर 3NF, जो BCNF द्वारा निहित है)

Rate Type   Court   Member Flag
---------   -----   -----------
SAVER       1       Yes
STANDARD    1       No
PREMIUM-A   2       Yes
PREMIUM-B   2       No

आज की टेनिस कोर्ट बुकिंग ( BCNF और कमजोर 3NF, जो BCNF द्वारा निहित है)

Member Flag     Court     Start Time   End Time
-----------     -----     ----------   --------
Yes             1         09:30        10:30
Yes             1         11:00        12:00
No              1         14:00        15:30
No              2         10:00        11:30
No              2         11:30        13:30
Yes             2         15:00        16:30

समस्या सुलझ गयी : अब अगर हम अदालत को अपग्रेड करते हैं तो हम गारंटी दे सकते हैं कि दर प्रकार इस बदलाव को दर्शाएगा, और हम अदालत के लिए गलत कीमत नहीं वसूल सकते।

(तकनीकी शब्दों में, हम गारंटी दे सकते हैं कि कार्यात्मक निर्भरता "दर प्रकार" -> "न्यायालय" का उल्लंघन नहीं किया जाएगा)


6

सभी अच्छे जवाब। इसे सरल भाषा में रखना [बीसीएनएफ] कोई आंशिक कुंजी एक कुंजी पर निर्भर नहीं कर सकती है।

एक उम्मीदवार कुंजी का कोई आंशिक उपसमूह (यानी किसी भी गैर तुच्छ उपसमुच्चय को छोड़कर) कुछ उम्मीदवार कुंजी पर कार्यात्मक रूप से निर्भर हो सकता है।


2
क्यों नहीं? मान लीजिए कि एक संबंध आर (ए, बी, सी, डी, ई) और (ए, बी) और (सी, डी) उम्मीदवार कुंजी हैं। फिर एबी-> डी। चूंकि AB, R का एक सुपरकी है, इसलिए R, BCNF में होना चाहिए, है ना? (बस एक सवाल, यह समझने की कोशिश कर रहा है।)
पेटीकुन

3

' Smartnut007 ', ' बिल कार्विन ', और ' sqlvogel ' के उत्तर उत्कृष्ट हैं। फिर भी मुझे इसके लिए एक दिलचस्प परिप्रेक्ष्य रखना चाहिए।

खैर, हमारे पास प्राइम और नॉन-प्राइम कीज़ हैं।

जब हम इस बात पर ध्यान केंद्रित करते हैं कि गैर-प्रिज्म कैसे अपराधों पर निर्भर हैं, तो हम दो मामलों को देखते हैं:

गैर-अपराध निर्भर हो सकते हैं या नहीं

  • जब निर्भर: हम देखते हैं कि उन्हें एक पूर्ण उम्मीदवार कुंजी पर निर्भर होना चाहिए। यह 2NF है
  • जब निर्भर नहीं: कोई निर्भरता या सकर्मक निर्भरता नहीं हो सकती

    • ट्रान्सएक्टिव निर्भरता भी नहीं: यह निश्चित नहीं है कि सामान्यीकरण सिद्धांत इसे क्या कहते हैं।
    • जब सकर्मक रूप से निर्भर होता है: इसे अवांछनीय माना जाता है। यह 3NF है

अपराधों के बीच निर्भरता के बारे में क्या?

अब आप देखते हैं, हम 2 या 3 वें NF द्वारा primes के बीच निर्भरता संबंध को संबोधित नहीं कर रहे हैं । इसके अलावा इस तरह की निर्भरता, यदि कोई हो, वांछनीय नहीं है और इस प्रकार हमें उस पते पर एक ही नियम है। यह बीसीएनएफ है

बिल कारविन के पद के उदाहरण का उल्लेख करते हुए , आप देखेंगे कि ' टॉपिंग ' और ' टॉपिंग टाइप ' दोनों ही प्रमुख कुंजी हैं और एक निर्भरता है। अगर उन पर निर्भरता के साथ गैर-अपराध होते, तो 3NF में किक होती।

ध्यान दें:

बीसीएनएफ की परिभाषा बहुत ही सामान्य है और बिना प्रमुख और गैर-प्राइम के बीच विभेदित विशेषताओं के है। फिर भी, सोचने का उपरोक्त तरीका यह समझने में मदद करता है कि 2 और 3 एनएफ के बाद भी कुछ विसंगति कैसे समाप्त हो गई है।

एडवांस्ड टॉपिक: मैपिंग जेनेरिक बीसीएनएफ टू 2 एनएफ और 3 एनएफ

अब जब हम जानते हैं कि बीसीएनएफ किसी भी प्राइम / गैर-प्राइम एट्रीब्यूट के संदर्भ के बिना एक सामान्य परिभाषा प्रदान करता है, तो आइए देखें कि बीसीएनएफ और 2/3 एनएफ कैसे संबंधित हैं।

सबसे पहले, बीसीएनएफ को (तुच्छ मामले के अलावा) प्रत्येक कार्यात्मक निर्भरता के लिए आवश्यकता होती है X -> Y (एफडी) के लिए, एक्स सुपर-की होना चाहिए। यदि आप केवल किसी भी FD पर विचार करते हैं, तो हमारे पास तीन मामले हैं - (1) X और Y दोनों गैर-अभाज्य, (2) दोनों प्रधान और (3) X अभाज्य और Y गैर-प्रधान, (निरर्थक) मामले को छोड़ कर X गैर -प्राइम और वाई प्राइम।

केस (1) के लिए, 3NF का ध्यान रखा जाता है।

मामले (3) के लिए, 2NF का ध्यान रखा जाता है।

मामले (2) के लिए, हम बीसीएनएफ का उपयोग पाते हैं


3

यह बहुमूल्य उत्तरों के साथ एक पुराना प्रश्न है, लेकिन मैं तब तक थोड़ा भ्रमित था जब तक मुझे एक वास्तविक जीवन उदाहरण नहीं मिला जो 3NF के साथ समस्या दिखाता है। शायद एक 8 साल के बच्चे के लिए उपयुक्त नहीं है, लेकिन आशा है कि यह मदद करता है।

कल मैं उन त्रैमासिक अभिभावकों / शिक्षकों की बैठकों में अपनी सबसे बड़ी बेटी के शिक्षकों से मिलूँगा। यहाँ मेरी डायरी की तरह दिखता है (नाम और कमरे बदल दिए गए हैं):

Teacher   | Date             | Room
----------|------------------|-----
Mr Smith  | 2018-12-18 18:15 | A12 
Mr Jones  | 2018-12-18 18:30 | B10 
Ms Doe    | 2018-12-18 18:45 | C21 
Ms Rogers | 2018-12-18 19:00 | A08 

प्रति कमरा केवल एक शिक्षक है और वे कभी नहीं जाते हैं। आप एक नजर है, तो आप उस देखेंगे: हर विशेषता के लिए (1) Teacher, Date, Room, हम प्रति पंक्ति केवल एक मान हो। (2) सुपर चाबियाँ हैं: (Teacher, Date, Room), (Teacher, Date)और (Date, Room)और उम्मीदवार कुंजी स्पष्ट रूप से कर रहे हैं (Teacher, Date)और (Date, Room)

(Teacher, Room) एक सुपरकी नहीं है क्योंकि मैं अगली तिमाही में तालिका को पूरा करूंगा और मेरे पास इस तरह की एक पंक्ति हो सकती है (श्री स्मिथ स्थानांतरित नहीं हुए!):

Teacher  | Date             | Room
---------|------------------| ----
Mr Smith | 2019-03-19 18:15 | A12

हम क्या निष्कर्ष निकाल सकते हैं? (1) 1NF का एक अनौपचारिक लेकिन सही निर्माण है। (2) से हम देखते हैं कि कोई "गैर प्रमुख विशेषता" नहीं है: 2NF और 3NF मुफ्त में दिए गए हैं।

मेरी डायरी 3NF है। अच्छा! नहीं। वास्तव में क्योंकि कोई डेटा मॉडलर डीबी स्कीमा में इसे स्वीकार नहीं करेगा। Roomविशेषता पर निर्भर है Teacherविशेषता (फिर से: शिक्षकों के लिए कदम नहीं है!), लेकिन स्कीमा इस तथ्य को प्रतिबिंबित नहीं करता। एक साने डेटा मॉडलर क्या करेगा? तालिका को दो में विभाजित करें:

Teacher   | Date
----------|-----------------
Mr Smith  | 2018-12-18 18:15
Mr Jones  | 2018-12-18 18:30
Ms Doe    | 2018-12-18 18:45
Ms Rogers | 2018-12-18 19:00

तथा

Teacher   | Room
----------|-----
Mr Smith  | A12
Mr Jones  | B10
Ms Doe    | C21
Ms Rogers | A08

लेकिन 3NF प्रमुख विशेषता निर्भरता के साथ सौदा नहीं करता है। यह समस्या है: कुछ परिस्थितियों में ध्वनि तालिका स्कीमा डिज़ाइन सुनिश्चित करने के लिए 3NF अनुपालन पर्याप्त नहीं है ।

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

जैसे ही Roomनिर्भर करता है Teacher, Roomका एक सबसेट होना चाहिए Teacher(यह मामला नहीं है) या Teacherएक सुपर कुंजी होना चाहिए (यह मेरी डायरी में मामला नहीं है, लेकिन जब आप तालिका को विभाजित करते हैं तो यह मामला है)।

संक्षेप में: BNCF अधिक सख्त है, लेकिन मेरी राय में 3NF की तुलना में, इसे समझना आसान है:

  • ज्यादातर मामलों में, बीसीएनएफ 3 एनएफ के समान है;
  • अन्य मामलों में, बीसीएनएफ वह है जो आप सोचते हैं / आशा है कि 3NF है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.