इस लेख में, हम विदेशी कुंजी बाधाओं और दो तालिकाओं के बीच संबंध बनाने के लिए एक विदेशी कुंजी बाधा को परिभाषित करने के तरीके के बारे में जानेंगे।
एक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (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 बाधा क्षेत्र में डुप्लिकेट मान हो सकते हैं।