Jab tum Swiggy pe order karte ho โ
tumhara Order ID daalte hi restaurant ka naam, address, delivery time
automatically aa jaata hai... kyun?
Ye coincidence nahi hai. Kuch rules hain database ke andar. Aaj hum wahi explore karenge. ๐
| Order_ID | Customer_Name | Restaurant | City | Delivery_Time |
|---|---|---|---|---|
| ORD001 | Rahul | Dominos | Delhi | 30 min |
| ORD002 | Priya | McDonald's | Mumbai | 25 min |
| ORD003 | Arjun | Biryani Hub | Pune | 40 min |
Dekho โ ek Order_ID se hum sab kuch nikal sakte hain.
Lekin iska ulta karna possible nahi โ ek City se ek hi Order_ID nahi milega.
Ye pattern... ye rule... is ke liye ek special naam hai. Thoda aur chalo. ๐ถ
Ek Student ka roll number daalo โ uska naam milega. Hamesha wahi jawab.
Jab bhi 101 daalo โ Ankit hi aayega. Kabhi Rahul nahi, kabhi Priya nahi. Always Ankit.
Ye relationship kuch kehna chahti hai... aur ab waqt hai usse officially introduce karne ka. ๐
Woh pattern jo humne Order_ID aur Roll_No ke saath dekha โ
wahi hota hai Functional Dependency in MySQL / Databases.
If for every value of A, there is exactly one value of B โ then B is Functionally Dependent on A.
Attribute Y is Functionally Dependent on attribute X, if:
"For every value of X in a relation, there is exactly one corresponding value of Y."
Jo attribute determine karta hai โ jaise Roll_No, Order_ID, Aadhaar No, Employee_ID
Ye usually PRIMARY KEY hota hai
Jo attribute determine hota hai โ jaise Name, City, Salary, Department
Ye primary key pe depend karta hai
Jab Y already X ka subset ho โ toh woh FD trivial hai.
Yaar, isme koi naya information nahi nikal raha. Naam se naam hi milega. Obvious hai. Interesting nahi.
Jab Y, X ka subset na ho โ tab woh Non-Trivial FD hai. Ye real aur useful hoti hain!
EMP_ID se Department aur Salary ka koi direct subset wala connection nahi โ ye genuinely naya information de raha hai.
Yahi database design mein most commonly used type hai.
Ye tab aata hai jab Composite Key ho (do ya zyada columns milke primary key banaate hain).
| Student_ID | Course_ID | Student_Name | Marks |
|---|---|---|---|
| S01 | C101 | Ravi | 85 |
| S01 | C102 | Ravi | 90 |
| S02 | C101 | Meena | 78 |
(Student_ID, Course_ID) โ Student_Name
Student_Name sirf Student_ID se hi determine hota hai โ poori composite key ki zarurat nahi!
Ye problem hai! (2NF violation)
(Student_ID, Course_ID) โ Marks
Marks determine karne ke liye dono chahiye โ sirf Student_ID ya sirf Course_ID se Marks nahi milega.
Ye correct hai! Good design.
Chain reaction wali dependency โ A se B milta hai, B se C milta hai, toh A se C bhi mil sakta hai.
Functional Dependencies directly database normalization se linked hain โ isiliye inhe samajhna itna critical hai.
Sirf ek rule hai โ ek value se hamesha ek hi value milni chahiye.
Jab ye rule toota โ redundancy, anomalies, aur data problems aate hain.
Iska use hota hai: Database Design ยท Normalization ยท Query Optimization ยท DBMS Exams ๐ฏ
"Jo data organized ho, woh system trusted hota hai." โ Every Good DBA