खोज…
एक विदेशी कुंजी के साथ एक तालिका बनाना
इस उदाहरण में हमारे पास एक मौजूदा तालिका, SuperHeros
।
इस तालिका में एक प्राथमिक कुंजी ID
।
हम प्रत्येक सुपर हीरो की शक्तियों को संग्रहीत करने के लिए एक नई तालिका जोड़ेंगे:
CREATE TABLE HeroPowers
(
ID int NOT NULL PRIMARY KEY,
Name nvarchar(MAX) NOT NULL,
HeroId int REFERENCES SuperHeros(ID)
)
स्तंभ HeroId
तालिका SuperHeros
लिए एक विदेशी कुंजी है।
विदेशी कुंजी समझाया
विदेशी कुंजी बाधाओं डेटा अखंडता सुनिश्चित करते हैं, एक तालिका में मूल्यों को दूसरे तालिका में मूल्यों से मेल खाना चाहिए।
एक विदेशी कुंजी की आवश्यकता है, जहां का एक उदाहरण: एक विश्वविद्यालय में, एक पाठ्यक्रम एक विभाग से संबंधित होना चाहिए। इस परिदृश्य के लिए कोड है:
CREATE TABLE Department (
Dept_Code CHAR (5) PRIMARY KEY,
Dept_Name VARCHAR (20) UNIQUE
);
निम्नलिखित कथन के साथ मान डालें:
INSERT INTO Department VALUES ('CS205', 'Computer Science');
निम्न तालिका में कंप्यूटर विज्ञान शाखा द्वारा प्रस्तुत विषयों की जानकारी होगी:
CREATE TABLE Programming_Courses (
Dept_Code CHAR(5),
Prg_Code CHAR(9) PRIMARY KEY,
Prg_Name VARCHAR (50) UNIQUE,
FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);
(विदेशी कुंजी का डेटा प्रकार संदर्भित कुंजी के डेटाटाइप से मेल खाना चाहिए।)
स्तंभ पर विदेशी कुंजी बाधा Dept_Code
केवल तभी मानों की अनुमति देती है जब वे पहले से ही संदर्भित तालिका, Department
में मौजूद हों। इसका मतलब है कि यदि आप निम्न मान सम्मिलित करने का प्रयास करते हैं:
INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');
डेटाबेस एक विदेशी कुंजी उल्लंघन त्रुटि को बढ़ाएगा, क्योंकि CS300
Department
तालिका में मौजूद नहीं है। लेकिन जब आप एक महत्वपूर्ण मूल्य की कोशिश करते हैं जो मौजूद है:
INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');
तब डेटाबेस इन मूल्यों की अनुमति देता है।
विदेशी कुंजी का उपयोग करने के लिए कुछ सुझाव
- एक विदेशी कुंजी को मूल तालिका में एक UNIQUE (या PRIMARY) कुंजी का संदर्भ देना चाहिए।
- किसी विदेशी कुंजी कॉलम में एक NULL मान दर्ज करने से कोई त्रुटि नहीं होती है।
- विदेशी कुंजी बाधाएं एक ही डेटाबेस के भीतर तालिकाओं का संदर्भ दे सकती हैं।
- विदेशी मुख्य बाधाएँ उसी तालिका (सेल्फ-रेफरेंस) में एक और कॉलम का उल्लेख कर सकती हैं।