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 હોઈ શકે અને ઘણી ની પરવાનગી.
- યાદ રાખવાની યુક્તિ: super (બોજ સાથે) થી candidate (minimal) થી primary (ચૂંટાયેલી); foreign keys tables જોડે છે.