ER model: cardinality, participation और mapping
लक्ष्य और notation
वाक्य में दिए requirements से entities, relationship constraints और relational tables बनाएँ। Maximum cardinality और minimum participation का अंतर सीखें। SQL का पूर्वज्ञान आवश्यक नहीं। Min–max notation में (0,1) का अर्थ optional, अधिकतम एक; (1,N) का अर्थ कम-से-कम एक, कई संभव। हर pair उस ओर की एक entity के relationship occurrences बताता है। Diagram की arrow conventions बदल सकती हैं, इसलिए पहले constraint को वाक्य में लिखें।
1. Entities, attributes और relationships
Entity अलग पहचानी जा सकने वाली वस्तु है; entity set समान तरह की entities का समूह है। Student में sid, name, dateOfBirth attributes हैं। sid पहचान देता है; दो students का name समान हो सकता है। Enrolment relationship Student को Course से जोड़ता है। grade relationship का attribute है, क्योंकि वह किसी खास student–course pair का होता है।
Simple attribute चुने हुए model में अविभाज्य माना जाता है। Composite address में city और postcode भाग हो सकते हैं। Multivalued phone से एक student के कई phones संभव होते हैं। Age को dateOfBirth तथा आज की date से derive कर सकते हैं; अलग age store करने पर उसे update भी करना पड़ेगा। ये वर्ग application की जरूरत पर निर्भर हैं।
2. Cardinality और participation अलग हैं
हर employee ठीक एक department में काम करता है, जबकि department में शून्य employees हो सकते हैं। WorksFor में Employee का (1,1), Department का (0,N) है। Employee से Department many-to-one है। Employee की participation total और Department की partial है। केवल many-to-one कहने से हर employee का participate करना अनिवार्य नहीं होता।
हल किया उदाहरण: 12 employees और 4 departments हैं। ठीक 12 WorksFor pairs होंगे, क्योंकि हर employee एक pair देता है। सभी 12 एक department में हो सकते हैं। अगर हर department में कम-से-कम एक employee अनिवार्य कर दें, तब भी 12 pairs होंगे, लेकिन अब सभी चार departments उपयोग होंगे। Finite one-to-one relationship में दोनों ओर total participation हो तो दोनों entity counts समान होने चाहिए।
m और n entities के unrestricted many-to-many relationship में अधिकतम mn distinct binary pairs हैं। दोनों ओर total participation हो और m,n positive हों, तो न्यूनतम max(m,n) pairs चाहिए और यह bound प्राप्त किया जा सकता है। Minimum participations को सीधे multiply न करें: एक pair दोनों ओर एक-एक entity को जोड़ता है।
3. Weak entity और owner
OrderLine की पहचान उसके Order के अंदर होती है। lineNo partial key है: अलग orders में line 1 हो सकती है। Identifying relationship हर line को ठीक एक owner से जोड़ता है और हर line का owner अनिवार्य है। Relational full key (orderId,lineNo) होगी। केवल किसी identifier का foreign key होना weak entity का पर्याप्त अर्थ नहीं; पहचान owner पर निर्भर होना मुख्य बात है। अलग नियम न हो तो owner की शून्य lines भी हो सकती हैं।
4. Relations में mapping
Strong entity को उसकी identifying key वाली table बनाएँ। Many-to-one WorksFor में Employee के अंदर deptId foreign key रखें, जो Department को reference करे। Employee participation total हो तो deptId NOT NULL रखें। अगर Department participation भी total चाहिए तो केवल यह foreign key पर्याप्त नहीं: हर department के लिए employee मौजूद होने का cross-row rule चाहिए।
Many-to-many के लिए Enrolment(sid,cid,grade) बनाएँ, primary key (sid,cid), और Student तथा Course के foreign keys रखें। यहाँ student हर course में अधिकतम एक बार enroll कर सकता है। Repeat attempts हों तो attempt identifier model और key में जोड़ें। One-to-one में foreign key के साथ uniqueness maximum लागू कर सकती है; सुविधानुसार total-participation वाली side में रखने से nulls बचते हैं। NOT NULL उसी side का minimum लागू करता है, दूसरी side का नहीं।
Multivalued phones के लिए StudentPhone(sid,phone), key (sid,phone) बनाएँ; phone1, phone2, phone3 columns नहीं। OrderLine(orderId,lineNo,quantity) में key (orderId,lineNo) और Order को reference करने वाला orderId रखें। Relationship attributes को relationship representation में रखें।
हल किया design: Department(did,dname); Employee(eid,ename,did), जहाँ eid primary key और did non-null foreign key है जो Department(did) को reference करता है। हर employee का ठीक एक मौजूदा department होगा। एक department में कई employees और किसी department में शून्य employees दोनों संभव हैं।
सावधानियाँ
- एक sample में names unique होने से हर legal database के लिए name key सिद्ध नहीं होता।
- Total participation का मतलब कम-से-कम एक है, ठीक एक नहीं; upper bound cardinality देती है।
- Foreign key referenced entity की मौजूदगी जाँचती है, हर referenced entity का उपयोग नहीं।
- Ternary relationship को सामान्यतः तीन binary relationships से बदलने पर original triple association खो सकता है।
- Relationship key चुनने से पहले repeated attempts की अनुमति स्पष्ट करें।
मौलिक अभ्यास: छह single-correct MCQ
ये मौलिक शिक्षण प्रश्न हैं, पिछले वर्षों के प्रश्न नहीं। ठीक एक उत्तर चुनें।
P01. हर employee ठीक एक department में है; departments खाली हो सकते हैं। Employee participation क्या है?
A. Total, maximum एक B. Partial, maximum एक C. Total, maximum असीमित D. Partial, maximum असीमित
उत्तर: A
A: ठीक एक से minimum और maximum दोनों एक हैं।
B: Partial में बिना department employee संभव होगा।
C: Maximum एक है, many नहीं।
D: Minimum तथा maximum दोनों नियम से अलग हैं।
P02. Binary many-to-many में 3 और 5 entities हैं, सभी participate करती हैं। न्यूनतम distinct pairs?
A. 3 B. 5 C. 8 D. 15
उत्तर: B
A: तीन pairs बड़ी side की पाँच entities नहीं ढक सकते।
B: पाँच pairs पाँचों को तीन entities में बाँटकर जोड़ सकते हैं।
C: Entity counts जोड़ना pair coverage को दोहरा गिनता है।
D: पंद्रह maximum है, minimum नहीं।
P03. OrderLine की partial key lineNo और owner key orderId है। Full key क्या होगी?
A. lineNo B. orderId C. (orderId,lineNo) D. quantity
उत्तर: C
A: अलग orders में lineNo दोहर सकता है।
B: एक order में कई lines हो सकती हैं।
C: Owner key और partial key मिलकर line पहचानते हैं।
D: Quantity unique नहीं है।
P04. हर student के कई phone numbers को कौन-सी mapping ठीक दर्शाती है?
A. केवल एक phone column B. StudentPhone(sid,phone), key (sid,phone) C. phone को Student primary key बनाएँ D. सभी students के लिए एक global phone row
उत्तर: B
A: एक scalar phone सभी values नहीं रख सकता।
B: अलग relation हर student–phone association रखता है।
C: Student के कई phones हो सकते हैं; यह identity बदल देगा।
D: Global row ownership खो देता है।
P05. Employee.did का non-null foreign key Department को reference करता है। क्या सुनिश्चित है?
A. हर department में employee है B. हर employee मौजूदा department को reference करता है C. हर department में ठीक एक employee है D. Employee names unique हैं
उत्तर: B
A: हर parent को reference करना foreign key अनिवार्य नहीं करता।
B: Non-null और referenced existence से यह लागू है।
C: कई employees एक department reference कर सकते हैं।
D: Name पर constraint नहीं दिया।
P06. grade अगर student और course दोनों पर निर्भर है तो कहाँ रखें?
A. केवल Student B. केवल Course C. Enrolment relationship D. Department name
उत्तर: C
A: एक student के अलग courses में अलग grades हो सकते हैं।
B: एक course में अलग students के grades अलग हो सकते हैं।
C: इस model में student–course association grade तय करता है।
D: Department name enrollment नहीं पहचानता।
स्रोत और दायरा
यह 2026 course के बताए भाग का पाठ है, पूरे Databases syllabus की समाप्ति नहीं। सभी गणनात्मक उदाहरण और प्रश्न मौलिक हैं। 2027 की पूर्णता का दावा नहीं।
प्रगति सहेजने के लिए साइन इन करें। साइन इन