यह उत्तर प्रश्न के "table3
में एक विदेशी कुंजी जोड़ें" लेता है " इसका मतलब यह है कि एक FK (विदेशी कुंजी) को table3
. में जोड़ा गया था table4
. के समग्र PK (प्राथमिक कुंजी) के स्तंभों में से एक को संदर्भित करना . मानक SQL में एक FK किसी PK के उचित/छोटे उपसमुच्चय को संदर्भित कर सकता है।
यह अन्य उत्तर
संभावित रूप से "table3
में एक विदेशी कुंजी जोड़ें" लेता है " इसका मतलब यह है कि एक FK को table4
. में जोड़ा गया था पीके के एक कॉलम के साथ table3
. के संदर्भ में . तालिका में सेट किया गया FK कॉलम किसी भी PK या UNIQUE घोषणाओं से स्वतंत्र होता है।
मानक SQL में एक FK किसी PK के उचित/छोटे उपसमुच्चय को संदर्भित कर सकता है।
संदर्भित कॉलम सूची को प्राथमिक कुंजी या अद्वितीय घोषित किया जाना चाहिए। (प्राथमिक कुंजी एक UNIQUE NOT NULL बाधा उत्पन्न करती है।) (बाधा स्पष्ट होनी चाहिए, भले ही NOT NULL कॉलम का कोई भी सेट जिसमें UNIQUE हो, अद्वितीय होना चाहिए।)
दुर्भाग्य से MySQL आपको एक स्तंभ सूची के संदर्भ में एक FK घोषित करने देता है जो UNIQUE नहीं है। भले ही ऐसा FK या एक संदर्भित गैर-नल कॉलम (मानक SQL में ठीक) ठीक से लागू नहीं किया गया है, और दस्तावेज़ीकरण स्वयं इसे न करने की सलाह देता है:
(आप सोच सकते हैं कि क्या हैं और क्या अच्छी तरह से परिभाषित संचालन नहीं हैं, क्योंकि दस्तावेज़ीकरण वास्तव में स्पष्ट नहीं करता है।)
1.8.2.3 विदेशी प्रमुख अंतर
13.1.18 तालिका बनाएं सिंटैक्स
13.1.18.6 FOREIGN का उपयोग करना प्रमुख बाधाएं
पीएस रे रिलेशनल बनाम एसक्यूएल
संबंधपरक मॉडल में एक एफके एक सीके (उम्मीदवार कुंजी) का संदर्भ देता है। सुपरकी एक अद्वितीय कॉलम सेट है। एक सीके एक सुपरकी है जिसमें कोई छोटी सुपरकी नहीं है। एक सीके को पीके (प्राथमिक कुंजी) कहा जा सकता है। जब एक कॉलम सेट के मान कहीं और दिखाई देने चाहिए तो हम कहते हैं कि एक IND (समावेश निर्भरता) है। एक एफके एक सीके के लिए एक आईएनडी है। जब एक IND सुपरकी के लिए होता है तो हम उसे "विदेशी सुपरकी" कह सकते हैं।
एक एसक्यूएल PK
या UNIQUE NOT NULL
एक सुपरकी घोषित करता है। यह एक CK है जब इसमें SQL PK
. के रूप में घोषित एक छोटा कॉलम सेट नहीं होता है या UNIQUE NOT NULL
. एसक्यूएल FK
एक विदेशी सुपरकी घोषित करता है। तो एक SQL PK वास्तव में हो सकता है एक रिलेशनल PK (इसलिए CK) और एक UNIQUE NOT NULL वास्तव में हो सकता है एक सी.के. इनमें से किसी एक के लिए एक SQL FK वास्तव में है एक संबंधपरक FK.