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

विदेशी कुंजी के रूप में समग्र प्राथमिक कुंजी से केवल एक कुंजी

यह उत्तर प्रश्न के "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.



  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. डेटाबेस से रेंज वैल्यू कैसे देखें

  3. MySQL में केवल एक निश्चित संख्या में पंक्तियों को पुनः प्राप्त करना

  4. कैसे समग्र प्राथमिक कुंजी के साथ विरासत पठनीय डेटाबेस तालिकाओं के साथ Django का उपयोग कैसे करें?

  5. एकाधिक स्कीमा वाले डेटाबेस को क्वेरी करने के लिए ड्रॉपविज़ार्ड और जेडीबीआई का उपयोग करना?