डेटाबेस में एक कार्यात्मक निर्भरता विशेषताओं के बीच बाधाओं का एक सेट लागू करती है। यह तब होता है जब संबंध में एक विशेषता विशिष्ट रूप से दूसरी विशेषता निर्धारित करती है। इसे A -> B . लिखा जा सकता है जिसका अर्थ है "बी कार्यात्मक रूप से ए पर निर्भर है।" इसे डेटाबेस निर्भरता भी कहा जाता है।
इस संबंध में, A, B का मान निर्धारित करता है, जबकि B, A पर निर्भर करता है।
डेटाबेस डिजाइन में कार्यात्मक निर्भरता क्यों महत्वपूर्ण है
कार्यात्मक निर्भरता डेटा की वैधता सुनिश्चित करने में मदद करती है। एक तालिका पर विचार करें कर्मचारी जो सामाजिक सुरक्षा संख्या (एसएसएन), नाम, जन्म तिथि, पता आदि सहित विशेषताओं को सूचीबद्ध करता है।
विशेषता एसएसएन नाम, जन्म तिथि, पता और शायद अन्य मूल्यों का मूल्य निर्धारित करेगी, क्योंकि एक सामाजिक सुरक्षा संख्या अद्वितीय है, जबकि एक नाम, जन्म तिथि या पता नहीं हो सकता है। हम इसे इस तरह लिख सकते हैं:
SSN -> नाम, जन्म तिथि, पता
इसलिए, नाम, जन्म तिथि और पता एसएसएन पर कार्यात्मक रूप से निर्भर हैं। हालांकि, रिवर्स स्टेटमेंट (नाम -> एसएसएन) सत्य नहीं है क्योंकि एक से अधिक कर्मचारियों का एक ही नाम हो सकता है लेकिन एक ही एसएसएन कभी नहीं होगा। एक और, अधिक ठोस तरीका रखो, अगर हम एसएसएन विशेषता का मूल्य जानते हैं, तो हम नाम का मूल्य, जन्म तिथि और पता पा सकते हैं। लेकिन अगर हम इसके बजाय केवल नाम विशेषता का मान जानते हैं, तो हम एसएसएन की पहचान नहीं कर सकते हैं।
एक कार्यात्मक निर्भरता के बाईं ओर एक से अधिक विशेषताएँ शामिल हो सकती हैं। मान लें कि हमारा एक से अधिक स्थानों वाला व्यवसाय है। हमारे पास कर्मचारी, शीर्षक, विभाग, स्थान और प्रबंधक विशेषताओं वाला एक कर्मचारी हो सकता है।
कर्मचारी उस स्थान को निर्धारित करता है जहां वह काम कर रहा है, इसलिए एक निर्भरता है:
<पूर्व>कर्मचारी -> स्थानलेकिन स्थान में एक से अधिक प्रबंधक हो सकते हैं, इसलिए कर्मचारी और विभाग मिलकर प्रबंधक का निर्धारण करते हैं:
कर्मचारी, विभाग -> प्रबंधक
कार्यात्मक निर्भरता और सामान्यीकरण
कार्यात्मक निर्भरता में योगदान होता है जिसे डेटाबेस सामान्यीकरण कहा जाता है, जो डेटा अखंडता सुनिश्चित करता है और डेटा अतिरेक को कम करता है। सामान्यीकरण के बिना, कोई आश्वासन नहीं है कि डेटाबेस में डेटा सटीक और भरोसेमंद है।