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

एसक्यूएल विदेशी कुंजी

इस लेख में, हम विदेशी कुंजी बाधाओं और दो तालिकाओं के बीच संबंध बनाने के लिए एक विदेशी कुंजी बाधा को परिभाषित करने के तरीके के बारे में जानेंगे।

एक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) में, एक FOREIGN KEY एक फ़ील्ड या फ़ील्ड का समूह होता है जिसका उपयोग दो तालिकाओं के बीच संबंध बनाने या दो तालिकाओं को जोड़ने के लिए किया जाता है।

  • विदेशी कुंजी को RDBMS में संदर्भ कुंजी के रूप में भी जाना जाता है
  • दो तालिकाओं के बीच FOREIGN KEY बाधाओं का उपयोग करते हुए, हम दो तालिकाओं के बीच माता-पिता-बच्चे के संबंध को परिभाषित करते हैं।
  • फ़ील्ड पैरेंट टेबल के रूप में जानी जाने वाली तालिका में प्राथमिक कुंजी बाधाओं को परिभाषित करती है, जबकि वही फ़ील्ड किसी अन्य तालिका में FOREIGN KEY बाधाओं को परिभाषित करती है जिसे चाइल्ड टेबल के रूप में जाना जाता है।
  • तालिका में केवल एक प्राथमिक कुंजी हो सकती है, लेकिन विदेशी कुंजी पर कोई परिभाषित सीमा नहीं है। हमारे पास टेबल पर एक या एक से अधिक FOREIGN KEY हो सकती है।
  • तालिका बनाते समय हम विदेशी कुंजी बाधाओं को परिभाषित कर सकते हैं या पहले से मौजूद तालिका पर विदेशी कुंजी बाधाओं को परिभाषित कर सकते हैं।

आइए FOREIGN KEY बाधाओं को समझने और उनके बारे में जानने के लिए एक उदाहरण लेते हैं।

उदाहरण:

यहां, हमारे पास दो टेबल हैं, एक कोर्स टेबल है और दूसरी स्टूडेंट टेबल है:

छात्र पाठ्यक्रम का चयन करते हैं। निम्नलिखित विदेशी कुंजी बाधाओं का उदाहरण एक फ़ील्ड पर परिभाषित किया गया है।

तालिका संख्या एक:छात्र तालिका

Student_Id प्रथम_नाम Last_Name Email_Id शहर
101 करीना सैय्यद [email protected] हैदराबाद
102 अनमोल टेमानी [email protected] जलगांव
103 हर्शल पटेल [email protected] मुंबई
104 साक्षी हुड [email protected] पुणे
105 सुरेश कोहली [email protected] हैदराबाद

तालिका संख्या दो:पाठ्यक्रम तालिका

Course_Id पाठ्यक्रम_नाम Student_Id
C101 जावा 101
C102 एसक्यूएल 102
C103 SOA शून्य
C104 एसएपी 104
C105 MuleSoft 103
C101 जावा 105

विद्यार्थी तालिका में, Student_Id फ़ील्ड प्राथमिक कुंजी है और पाठ्यक्रम तालिका में, Student_Id विदेशी कुंजी है।

FOREIGN KEY बाधा अमान्य डेटा को विदेशी कुंजी कॉलम में डालने से रोकता है क्योंकि इसे मूल तालिका में निहित मानों में से एक होना चाहिए।

तालिका बनाएं पर विदेशी कुंजी बाधाओं को परिभाषित करें

निम्न उदाहरण पाठ्यक्रम तालिका पर एक विदेशी कुंजी को परिभाषित करता है।

सबसे पहले, हमने निम्नलिखित क्षेत्रों के साथ छात्र तालिका बनाई है:

CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50),  City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));

निम्न उदाहरण दिखाता है कि अन्य तालिका पर विदेशी कुंजी बाधाओं को कैसे परिभाषित किया जाए।

टेबल का नाम कोर्स:

CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));

पाठ्यक्रम तालिका में, हमने किसी प्राथमिक कुंजी को परिभाषित नहीं किया है। बस छात्र_आईडी पर विदेशी कुंजी बाधाओं को परिभाषित करें।

निम्नलिखित विदेशी कुंजी बाधाओं का उदाहरण कई क्षेत्रों में परिभाषित किया गया है।

मान लीजिए कि हमारे पास तीन टेबल हैं, एक पैकेज टेबल है, दूसरा डेटा टेबल है, और तीसरा टॉक_टाइम टेबल है:

तालिका 1:पैकेज:

Package_Id Data_Id टॉकटाइम_Id
P1001 D1003 T1001
P1002 D1001 T1002
P1003 D1002 T1003
P1004 D1003 T1004
P1005 D1004 T1005

तालिका 2:डेटा:

Data_Id Data_Limit Data_Price
D1001 5 120
D1002 3 75
D1003 6 150
D1004 10 240
D1005 15 320

तालिका 3:टॉक_टाइम:

Talk_Time_Id Talk_Time _Limit टॉक_टाइम _कीमत
T1001 120 130
T1002 70 105
T1003 60 90
T1004 200 220
T1005 150 170

Talk_Time तालिका में, Talk_Time_Id प्राथमिक कुंजी है।

डेटा तालिका में, Data_Id प्राथमिक कुंजी है।

जबकि पैकेज तालिका में Talk_Time_Id और Data_Id विदेशी कुंजी हैं

तालिका नंबर एक:डेटा:

CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));

तालिका संख्या दो:टॉक_टाइम:

CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));

तालिका संख्या तीन:पैकेज:

CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));

वैकल्पिक तालिका का उपयोग करने वाली विदेशी प्रमुख बाधाएं:

मान लीजिए कि हमने पहले ही तालिका बना ली है और फ़ील्ड पर FOREIGN KEY बाधाओं को परिभाषित करना चाहते हैं। ऐसे मामले में हम विदेशी कुंजी बाधाओं को जोड़ने के लिए वैकल्पिक तालिका क्वेरी का उपयोग करेंगे।

छात्र_आईडी फ़ील्ड पर विदेशी कुंजी बाधाओं को जोड़ने के लिए अनुवर्ती क्वेरी का उपयोग किया जाता है।

ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);

पहले से मौजूद तालिका में FOREIGN KEY बाधाओं को जोड़ने के लिए तालिका नाम के बाद ADD कीवर्ड का उपयोग किया जाता है।

तालिका से विदेशी कुंजी बाधा छोड़ें

तालिका से FOREIGN KEY बाधा को दूर करने के लिए निम्न क्वेरी का उपयोग करें।

ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;

छात्र_आईडी फ़ील्ड से विदेशी कुंजी बाधाओं को दूर करने के लिए ड्रॉप कीवर्ड का उपयोग किया जाता है।

course_ibfk_1 विदेशी कुंजी बाधा नाम है।

हमारे पास विदेशी कुंजी बाधाओं के क्षेत्र में शून्य मान हो सकते हैं। हमारे पास FOREIGN KEY बाधा क्षेत्र में डुप्लिकेट मान हो सकते हैं।


  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. बहुत बड़े डेटाबेस को अनलोड करें

  4. निष्पादन योजना ASYNC_NETWORK_IO प्रतीक्षा पर प्रभाव - भाग 1

  5. SQL में दो कॉलम द्वारा समूह कैसे करें