Theory
दो Rahul को आप अलग कैसे बताते हैं?
Meera के दो customers हैं दोनों का नाम 'Rahul Patel'। सिर्फ नाम से, उसका database उन्हें अलग नहीं बता सकता, और उनके orders गड्डमड्ड करना एक आफ़त होगी।
Databases इसे keys से हल करते हैं: वे columns जो uniqueness की guarantee देते हैं और tables को जोड़ते हैं। पर keys का एक पूरा परिवार है, super, candidate, primary, composite, foreign, unique, और students नियमित रूप से इन्हें धुँधला कर देते हैं।
वे छह बेतरतीब शब्द नहीं हैं। वे एक साफ़ hierarchy बनाते हैं, और एक बार आप hierarchy देख लें, तो पूरा परिवार जगह पर बैठ जाता है। यह subject के सबसे ज़्यादा exam में आने वाले topics में से एक है।
Theory
एक नागरिक की पहचान
एक नागरिक को पहचानने के लिए, Aadhaar + name + address सब साथ काम करते हैं (एक super key, पर इसमें अतिरिक्त हैं)। सिर्फ Aadhaar अकेला भी काम करता है और कुछ हटाया नहीं जा सकता (एक candidate key, minimal)। सरकार forms पर the आधिकारिक ID के रूप में Aadhaar चुनती है (primary key)। कभी-कभी unique होने के लिए दो चीज़ें साथ लगती हैं, जैसे state + roll number (एक composite key)। Keys बस IDs हैं, उदार से minimal से चुनी हुई तक व्यवस्थित।
At a glance
key family
| Key | मतलब | टिप्पणी |
|---|---|---|
| Super key | कोई भी columns जो uniquely पहचानें | अतिरिक्त हो सकते हैं |
| Candidate key | एक MINIMAL super key | कई संभव |
| Primary key | चुनी हुई candidate key | Unique + NOT NULL, हर table में एक |
| Composite key | 2+ columns की एक key | जैसे order_id + item_id |
| Foreign key | दूसरी table की primary key को point करती है | Tables जोड़ती है |
| Unique key | uniqueness लागू करती है | null हो सकती है; कई की इजाज़त |
Theory
hierarchy: super से candidate से primary
ये तीन एक सीढ़ी हैं:
- एक super key कोई भी column-set है जो एक row को uniquely पहचानता है, यहाँ तक कि अतिरिक्त बोझ के साथ (customer_id + name एक super key है; name ग़ैर-ज़रूरी है)।
- इसे उस न्यूनतम तक छाँटिए जो अब भी uniquely पहचानता है और आपके पास एक candidate key है (अकेला customer_id)। एक table के कई candidate keys हो सकते हैं (customer_id और phone number, अगर दोनों unique हों)।
- एक candidate key को आधिकारिक पहचानकर्ता के रूप में चुनिए और यह primary key बन जाती है: unique, कभी null नहीं, हर table में एक।
तो: हर candidate key एक super key है; primary key चुनी हुई candidate है।
Theory
Foreign keys: tables के बीच के links
Foreign key relational design का सितारा है। यह एक table में एक column है जो दूसरी table की primary key को refer करता है, और यह tables कैसे जुड़ती हैं वह है।
Meera की Order table में एक customer_id column है जो Customer table की primary key को point करता एक foreign key है। वह एक link कहता है 'यह order उस customer का है', और database को उन्हें संगत रखने देता है (आप एक ऐसे customer के लिए order नहीं दे सकते जो मौजूद नहीं, referential integrity)।
many-to-many junction table याद है? यह पूरी तरह foreign keys के ज़रिए काम करता है जो दोनों parents को point करते हैं।
Quiz
एक candidate key और primary key में क्या फ़र्क़ है?
- Candidate keys सारे minimal unique पहचानकर्ता हैं; primary key उनमें से चुनी गई एक है
- वे अलग नामों वाली एक ही चीज़ हैं
- एक candidate key null हो सकती है पर एक primary key हमेशा text होती है
- Primary key के अतिरिक्त columns होते हैं जो candidate key में नहीं
Show the answer
Candidate keys सारे minimal unique पहचानकर्ता हैं; primary key उनमें से चुनी गई एक है
एक table के कई candidate keys हो सकते हैं (हर एक एक minimal unique पहचानकर्ता, जैसे customer_id और एक unique phone)। Primary key वह एक candidate key है जिसे आप आधिकारिक के रूप में चुनते हैं, और यह unique और NOT NULL होनी चाहिए। तो 'candidate' पात्र minimal keys का pool है; 'primary' चुनी हुई है। यह candidate-बनाम-primary भेद एक पक्का exam सवाल है।
Think first
एक order-item को composite key क्यों चाहिए
Meera की order-items table में, order_id दोहराता है (हर order में कई items) और item_id दोहराता है (एक item कई orders में आता)। कोई भी अकेला unique नहीं। कौन सी तरह की key एक row को uniquely पहचानती है, और क्यों?
Show the answer
एक composite key: order_id + item_id साथ। कोई भी column अपने आप unique नहीं (दोनों दोहराते हैं), पर संयोजन unique है, order 5001 में item 'Sugar' ठीक एक बार है। दो या ज़्यादा columns से बनी एक key एक composite key है, और junction tables लगभग हमेशा एक इस्तेमाल करती हैं। (यहाँ दोनों columns Order और Item tables को point करते foreign keys भी हैं, दोहरा काम करते।)
Watch out
Marks कहाँ कटते हैं
super (अतिरिक्त हैं) बनाम candidate (minimal) बनाम primary (चुनी, unique + NOT NULL, एक) को धुँधला करना। यह भूलना कि एक primary key null नहीं हो सकती जबकि एक unique key हो सकती है। यह कहना कि एक foreign key 'दूसरी table' को point करती है, सटीक रहिए: यह दूसरी table की primary key को point करती है। और यह छूटना कि एक composite key कई columns साथ है। यह topic marks की सोने की खान है ठीक इसलिए क्योंकि शब्द आसानी से गड्डमड्ड होते हैं, सीढ़ी सीखिए।
Theory
आप इन्हें Unit 4 में type करेंगे
यहाँ की हर key अगले unit में एक constraint बन जाती है जिसे आप SQL में लिखेंगे: PRIMARY KEY, FOREIGN KEY, UNIQUE। अभी की theory बाद की syntax है। और जिस Gri-Learn database से आप पढ़ रहे हैं वह lessons को topics को subjects से जोड़ने को foreign keys इस्तेमाल करता है, ठीक यही design। अगला lesson बड़ा इनाम है: हम क्यों normalize करते हैं, वे anomalies जो एक ख़राब-keyed table झेलती है, Meera की टूटती spreadsheet आख़िरकार समझाई गई।
Summary
Key takeaways
- Super key: कोई भी column-set जो एक row को uniquely पहचानती है (अतिरिक्त हो सकते हैं)।
- Candidate key: एक minimal super key; एक table के कई हो सकते हैं।
- Primary key: चुनी हुई एक candidate key, unique और NOT NULL, हर table में एक।
- Composite key: दो या ज़्यादा columns से साथ बनी एक key (order_id + item_id)।
- Foreign key: दूसरी table की PRIMARY KEY को refer करता एक column; tables जोड़ता है (referential integrity)।
- Unique key: uniqueness लागू करती है पर null हो सकती है और कई की इजाज़त।
- याद रखने का hook: super (बोझ के साथ) से candidate (minimal) से primary (चुनी); foreign keys tables जोड़ती हैं।