DBMS में Functional Dependency
Functional dependency क्या है
Functional dependency मतलब एक column की value दूसरे को तय करती है। अगर column A जानना हमेशा आपको column B बताए, तो B functionally A पर निर्भर है। यह सरल विचार keys और पूरी normalization प्रक्रिया के पीछे की theory है।
A -> B notation
हम functional dependency को A -> B लिखते हैं:
- A determinant है (वो column जो आप जानते हैं)।
- B dependent है (वो column जिसे यह तय करता है)।
यह "A, B को तय करता है" पढ़ा जाता है। A के हर value को, ठीक एक B value है।
एक सरल उदाहरण
| roll | name | dept |
|---|---|---|
| 1 | Aman | Science |
| 2 | Diya | Arts |
यहाँ roll -> name और roll -> dept: हर roll number ठीक एक नाम और एक department तय करता है। तो roll बाक़ी columns तय करता है — इसीलिए यह अच्छी primary key बनता है।
Full dependency
Full functional dependency मतलब column पूरी key पर निर्भर है, सिर्फ़ हिस्से पर नहीं। अगर primary key (student_id, course_id) है और grade को दोनों जानना ज़रूरी है, तो grade composite key पर पूरी तरह निर्भर है। यह बिल्कुल वही है जो 2NF माँगता है।
Partial dependency
Partial dependency तब है जब column composite key के सिर्फ़ हिस्से पर निर्भर हो।
Key: (student_id, course_id) student_name सिर्फ़ student_id पर निर्भर -- partial!
यहाँ student_name को सिर्फ़ student_id चाहिए, पूरी key नहीं। Partial dependencies redundancy कराती हैं और 2NF में table बाँटकर हटाई जाती हैं।
Transitive dependency
Transitive dependency एक अप्रत्यक्ष है, दूसरे non-key column के ज़रिए।
roll -> dept (roll, dept तय करता है) dept -> dept_head (dept, dept_head तय करता है) तो roll -> dept_head (अप्रत्यक्ष, transitive)
dept_head dept पर निर्भर है, सीधे roll पर नहीं। Transitive dependencies 3NF में dependent column को अपनी table में ले जाकर हटाई जाती हैं।
आम गलतियाँ
- Arrow उल्टा करना। A -> B का मतलब B -> A नहीं; दिशा मायने रखती है।
- Partial और transitive मिलाना। Partial = composite key का हिस्सा; transitive = दूसरे non-key column के ज़रिए।
- Design करते समय dependencies अनदेखा करना। ये बताती हैं tables सही कैसे बाँटें।
- यह मानना हर column key पर निर्भर है। कुछ दूसरे columns पर निर्भर होते हैं — वही ठीक करने की समस्या है।
सारांश
- Functional dependency A -> B मतलब A, B को तय करता है।
- A determinant है; B dependent।
- Full dependency: पूरी (composite) key पर निर्भर।
- Partial dependency: composite key के हिस्से पर निर्भर (2NF में ठीक)।
- Transitive dependency: दूसरे non-key column के ज़रिए निर्भर (3NF में ठीक)।
आगे, इन्हें लगाइए normalization में, या आगे बढ़िए BCNF से।
