Primary Key vs Foreign Key
दो keys जो साथ काम करती हैं
Primary key और foreign key relational database की दो सबसे महत्वपूर्ण keys हैं। Primary key table में हर row को पहचानती है; foreign key एक table को दूसरी से जोड़ती है। साथ में ये आपको data साफ़ tables में बाँटकर भी सब सही जोड़े रखने देती हैं।
Primary key
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50)
);
Primary key (id) हर customer को विशिष्ट पहचानती है। यह null नहीं हो सकती, दोहरा नहीं सकती, और table में एक ही होती है। हर table में primary key होनी चाहिए।
Foreign key
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
amount INT,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
यहाँ customer_id एक foreign key है जो customers.id की ओर इशारा करती है। यह हर order को एक customer से जोड़ती है, तो आप हर order में customer का नाम और details नहीं दोहराते।
ये tables कैसे जोड़ती हैं
Foreign key सिर्फ़ संबंधित row की id store करती है। पूरी details देखने को, आप tables join करते हैं:
SELECT orders.id, customers.name, orders.amount FROM orders JOIN customers ON orders.customer_id = customers.id;
यह हर order को key के ज़रिए उसके customer से जोड़ता है — कोई दोहराया data नहीं, हमेशा संगत।
Referential integrity
Foreign key referential integrity लागू करती है: आप ऐसी customer_id वाला order insert नहीं कर सकते जो customers में मौजूद न हो। MySQL इसे ठुकराता है। यह "orphan" rows रोकता है और data भरोसेमंद रखता है। Foreign key null हो सकती है (वैकल्पिक link), पर primary key कभी नहीं।
आमने-सामने
| बात | Primary key | Foreign key |
|---|---|---|
| मक़सद | हर row पहचानना | दूसरी table से जोड़ना |
| Null allowed | नहीं | हाँ (वैकल्पिक link) |
| प्रति table कितनी | एक | कई |
| Duplicates | Allowed नहीं | Allowed |
| किसकी ओर इशारा | कुछ नहीं (यह id है) | दूसरी table की key |
आम गलतियाँ
- कोई primary key नहीं। हर table को rows पहचानने को एक चाहिए।
- बेमेल types। Foreign key column referenced key के type से मेल खाना चाहिए।
- Non-unique column दर्शाना। Foreign key को primary या unique key दर्शानी चाहिए।
- Referenced rows लापरवाही से delete करना। orders वाले customer को हटाना integrity तोड़ सकता है जब तक संभाला न जाए।
सारांश
- Primary key हर row को विशिष्ट पहचानती है; कभी null नहीं, table में एक।
- Foreign key एक table को दूसरी की key से जोड़ती है।
- Foreign keys null हो सकती हैं और table में कई हो सकती हैं।
- ये referential integrity लागू करती हैं, orphan rows रोककर।
- साथ में ये data साफ़ बाँटकर वापस join करने देती हैं।
आगे, सारे key प्रकार देखिए keys in DBMS explained में, या नियम लागू कीजिए referential integrity से।
