4.4.23 · Coding › Databases
Intuition Badi picture (WHY yeh exist karta hai)
Ek bhi CREATE TABLE likhne se pehle, tumhe pictures mein sochna hoga ki tumhare problem mein kaun si cheezein exist karti hain aur woh aapas mein kaise connect hoti hain . Ek ER (Entity–Relationship) diagram wahi picture hai. Yeh reality ka ek blueprint hai jo tum pehle banate ho, phir mechanically tables mein translate karte ho. WHY yeh zaroori hai: seedha apne dimag se tables banana duplicated data, missing links, aur impossible queries ki taraf le jaata hai. ER modelling tumhe force karti hai ki "cheezein", "cheezoin ke baare mein facts", aur "cheezoin ke beech ke links" — teeno ko alag rakho.
Ek entity ek real-world cheez hai jiske baare mein hum data store karna chahte hain (jaise Student, Course, Car). Ek specific instance (jaise student "Asha", id 7) ek entity instance hai. Same type ki entities ka group ek entity set hai. Rectangle ke roop mein draw kiya jaata hai.
Ek attribute ek property/fact hai jo kisi entity ko describe karta hai (jaise name, dob, email). Ek ellipse ke roop mein draw kiya jaata hai jo apni entity se attached hoti hai. Woh attribute jo har instance ko uniquely identify karta hai, woh key attribute hai (underlined hota hai).
Ek relationship entities ke beech ek association hai (jaise ek Student enrols-in ek Course). Ek diamond ke roop mein draw kiya jaata hai jo rectangles ko connect karta hai.
Intuition Inhe kaise alag karo (trick)
Kya yeh ek noun hai jiske liye tum table banate ? → entity (rectangle).
Kya yeh ek noun hai jo sirf ek entity ko describe karta hai ? → attribute (ellipse).
Kya yeh ek verb hai jo do nouns ko link karta hai ? → relationship (diamond).
"Student has name" → attribute. "Student enrols in Course" → relationship.
Definition Attribute flavours
Simple (atomic) : split nahi ho sakta — age.
Composite : parts mein split hota hai — name → first, last. Child ellipses ke saath ellipse ke roop mein draw kiya jaata hai.
Multivalued : kai values hold kar sakta hai — phone_numbers. Double ellipse ke roop mein draw kiya jaata hai.
Derived : doosron se compute hota hai — dob se age. Dashed ellipse ke roop mein draw kiya jaata hai.
Key : unique identifier — student_id. Underlined draw kiya jaata hai.
Intuition WHY cardinality matter karta hai
Ek relationship akela bas yahi kehta hai "yeh connect hain". Cardinality kehta hai ki ek side se kitne doosri side se connect hote hain. Yeh akela decision decide karta hai ki foreign key kahan jaayegi aur kya tumhe junction table chahiye. Cardinality galat ho gayi → galat table structure → tuta hua ya duplicate data.
Worked example 1:N bound derive karna
Department–Employee, 1:N (ek dept, kai employees). Maano 3 departments, 10 employees hain.
Kyun ≤ 10 ? Har employee exactly ek department mein belong karta hai, isliye har employee exactly ek pair contribute karta hai. 10 employees hain → zyada se zyada 10 pairs. 3 × 10 = 30 nahi, kyunki "many" side ko reuse nahi kiya ja sakta.
Worked example Har cardinality translate karna
M:N (Student–Course): ek junction table banao Enrollment(student_id, course_id) jisme dono foreign keys hoon jo ek composite key banaayein.
Kyun? Koi bhi side ek single FK nahi hold kar sakti jo doosri taraf point kare (dono "many" hain), isliye hum relationship ko externalize karte hain.
1:N (Department–Employee): FK ko "many" side par rakho: Employee ko dept_id milta hai.
Kyun? Har employee ka exactly ek dept hota hai, isliye ek single column kaafi hai; Department par store karna ek list force karega (1NF mein illegal).
1:1 (Person–Passport): FK ko kisi bhi side par rakho (usually optional/total-participation side par) UNIQUE constraint ke saath.
Kyun? UNIQUE "at most one" enforce karta hai, jisse 1:1 milta hai.
Common mistake Classic errors ko steel-man karna
Mistake 1: "Phone numbers sirf ek attribute hai, ise ek column mein store karo."
Kyun sahi lagta hai: phone ek person ki property hai . Flaw: yeh multivalued hai — "123,456" ek cell mein pack karna 1NF todata hai aur search bhi. Fix: multivalued attribute model karo → apni table ban jaati hai.
Mistake 2: "1:N max pairs = |A|×|B|."
Kyun sahi lagta hai: yeh sab possible pairs ki count hai. Flaw: "one" side reuse restrict karti hai, isliye max ∣ B ∣ hai (many side). Hamesha poochho "kaun si side ek single partner se forced hai?".
Mistake 3: "Enrolment ko Student ke andar column bana do."
Kyun sahi lagta hai: students enrol karte hain, toh unke saath rakho. Flaw: M:N → ek student ke kai courses hote hain aur ek course ke kai students; ek column set hold nahi kar sakta. Fix: junction table.
Mistake 4: Cardinality (max) aur participation (min) ko confuse karna.
Kyun sahi lagta hai: dono diamond par "lines" jaisi lagti hain. Flaw: cardinality = kitne (max); participation = mandatory hai ya nahi (min, total vs partial). Yeh dono independent hain — ek 1:N total ya partial dono ho sakta hai.
Recall Active recall — answers cover karo
Entity ka shape kya hai? relationship ka? multivalued attribute ka? ::: rectangle; diamond; double ellipse
1:N relationship mein FK kahan jaati hai? ::: many side par
M:N mein max relationship pairs jab |A|=4, |B|=5? ::: 4 × 5 = 20
Relationship edge par double line ka matlab? ::: total participation (mandatory)
Recall Feynman: ek 12-saal ke bachche ko explain karo
Socho ek toys ka dabba hai. Har toy ek cheez hai (entity) — ek car, ek doll. Toy ka colour aur size uske baare mein facts hain (attributes). Ab, "doll car mein baith ti hai " — yeh ek link hai (relationship). Cardinality bas yeh poochh raha hai ki "kya EK car KAI dolls carry kar sakti hai, ya sirf ek?" Jab yeh pata chal jaaye, tum jaante ho ise kaise likhna hai: agar ek car kai dolls carry karti hai, toh car ka naam har doll ke tag par likho (FK many side par). Agar kai dolls kai cars share karti hain, toh ek alag notebook rakho (doll, car) pairs ki (junction table). Poora diagram bas boxes cheezoin ke liye, ovals facts ke liye, diamonds links ke liye hai, numbers ke saath jo bataaate hain kitne .
Mnemonic Shapes aur rule yaad rakho
"RED-K" → R ectangle = entity, E llipse = attribute, D iamond = relationship, aur K ey underlined hoti hai.
FK placement ke liye: "FK Many side par rehti hai" → Many, One ka naam apne paas rakha karta hai .
ER diagram mein entity kya hai? Ek real-world cheez jiske baare mein hum data store karte hain; rectangle ke roop mein draw ki jaati hai.
Attribute kya hai aur uska shape? Ek property jo entity ko describe karta hai; ellipse ke roop mein draw ki jaati hai.
Relationship kya hai aur uska shape? Entities ke beech ek association; diamond ke roop mein draw ki jaati hai.
Key attribute ko kaise mark kiya jaata hai? Underlined.
Multivalued attribute kaise draw hota hai? Double ellipse.
Derived attribute kaise draw hota hai? Dashed ellipse.
Chaar cardinality ratios kya hain? 1:1, 1:N, N:1, M:N.
1:N relationship mein foreign key kahan jaati hai? "Many" side par.
M:N relationship kaise implement karte hain? Ek junction/associative table ke saath jo dono foreign keys hold karta hai.
|A| aur |B| size ke entity sets ke liye maximum relationship pairs (M:N)? |A| × |B|.
1:N relationship ke liye maximum pairs? |B| (many side), kyunki har B ka ek A hota hai.
Cardinality aur participation mein farq? Cardinality = kitne (max); participation = mandatory hai ya nahi (min, total vs partial).
Total participation kaise dikhaya jaata hai? Entity ko relationship se connect karne wali double line.
Composite attribute ka matlab kya hai? Ek attribute jo sub-parts mein decompose hota hai (jaise name → first, last).
Relational Model — tables, keys, foreign keys
Normalization — 1NF, 2NF, 3NF
Primary keys and Foreign keys
SQL CREATE TABLE and constraints
Cardinality and JOIN behaviour
Database design lifecycle — conceptual to physical
Key attribute - underlined
Simple Composite Multivalued Derived