डाटाबेसमध्ये सर्वात महत्वाचे संकल्पना म्हणजे डाटाबेस टेबलचे संबंध निर्माण करणे. या नातेसंबंधांमुळे एकापेक्षा जास्त कोष्टकांमध्ये साठवून ठेवलेल्या डेटाला जोडणे आणि कार्यक्षम पध्दतीने प्राप्त करणे शक्य होते. दोन सारण्यांमधील दुवा निर्माण करण्यासाठी, आपल्याला एका टेबलमध्ये परदेशी की निर्दिष्ट करणे आवश्यक आहे जे दुसर्या तक्तामधील एका स्तंभचे संदर्भ देते.
डेटाबेस सारण्या आणि नातेसंबंध
आपल्याला आधीच माहित असू शकेल की डेटाबेस फक्त सारण्या सारख्या मालिकांची आहेत , जसे की आपण मायक्रोसॉफ्ट एक्सेल सारख्या स्प्रेडशीट प्रोग्राम्समध्ये आधीपासून काय वापरतो खरेतर, आपण एक्सेल स्प्रेडशीटला डेटाबेसमध्ये रूपांतरित करू शकता. टेबलांमधले सामर्थ्यवान नातेसंबंध तयार करण्याच्या बाबतीत डेटाबेसची माहिती स्प्रेडशीटमधून वेगळी होते.
उदाहरणार्थ, मानवी संसाधनांच्या माहितीचा मागोवा घेण्यासाठी कंपनीने वापरलेल्या डेटाबेसचा विचार करा. त्या डेटाबेसमध्ये कर्मचार्यांची नावे एक टेबल असू शकते ज्यामध्ये कंपनीच्या कर्मचा-यांच्या प्रत्येक सदस्यासाठी खालील माहिती असते:
- कर्मचारी ID
- पहिले नाव
- आडनाव
- कार्यालय दूरध्वनी
- घराचा दुरध्वनी
- PositionID
या उदाहरणात, कर्मचारी आयडी एक अद्वितीय व्युत्पन्न पूर्णांक आहे जो प्रत्येक कर्मचा व्यक्तीला डेटाबेसमध्ये जोडल्या जातो. स्थिती आयडी ही नोकरीची कंपनी आहे ज्याचा उल्लेख कंपनीतील कर्मचार्याच्या स्थितीचा संदर्भ देण्यासाठी केला जातो. या योजनेत, एखाद्या कर्मचा-याला फक्त एक पद असू शकते परंतु बहु (किंवा नाही) कर्मचारी प्रत्येक स्थितीत भरतील. उदाहरणार्थ, आपल्याकडे "रोखपाल" स्थितीसह शेकडो कर्मचारी असू शकतात.
डेटाबेसमध्ये प्रत्येक स्थानाबद्दल पुढील अतिरिक्त माहिती असलेल्या पोझिशन्सचा समावेश असलेल्या सारणीचा देखील समावेश असू शकतो:
- PositionID
- शीर्षक
- जॉबलिवल
- SkillCategory
- स्थान
या सारणीतील स्थिती आयडी फील्ड एम्प्लॉइज टेबलमधील कर्मचारी आयडी फिल्ड प्रमाणेच आहे - जेव्हा डेटाबेसमध्ये स्थिती जोडली जाते तेव्हा हे एक अद्वितीयपणे तयार केलेले पूर्णांक आहे.
जेव्हा आपण डेटाबेसमधून कर्मचार्यांची यादी काढू इच्छितो तेव्हा प्रत्येक व्यक्तीचे नाव आणि त्यांचा शीर्षक विनंती करणे स्वाभाविक असेल. तथापि, ही माहिती एकाधिक डेटाबेस टेबलमध्ये संग्रहित केली आहे, म्हणूनच फक्त JOIN क्वेरी वापरून पुनर्प्राप्त केली जाऊ शकते ज्यासाठी सारणींमध्ये विद्यमान संबंध आवश्यक आहे.
जेव्हा आपण सारण्यांच्या संरचनेकडे पाहता तेव्हा, संबंध परिभाषित करणारा फील्ड कदाचित स्पष्ट आहे - स्थिती ID फील्ड. प्रत्येक कर्मचा-याला फक्त एकच पद असू शकते आणि त्या स्थितीचे पोजीशन सारणीच्या संबंधित एंट्रीमधून स्थिती आयडी समाविष्ट करून ओळखले जाते. कार्यक्षेत्र टेबलसाठी प्राथमिक कळ असण्याव्यतिरिक्त, या उदाहरणात, स्थिती आयडी फील्ड देखील कर्मचारी टेबल पासून स्थिती टेबलवर एक परदेशी की आहे डेटाबेस नंतर अनेक तालांमधून माहितीशी परस्पर संबंधात वापरण्यासाठी या फील्डचा वापर करू शकते आणि डेटाबेसमध्ये कोणतेही बदल किंवा वाढीस संदर्भित एकाग्रता अंमलात आणणे सुनिश्चित करते.
एकदा आपण परदेशी की ओळखल्यानंतर, आपण पुढे जाऊ शकता आणि खालील क्वेरीचा वापर करुन आपण इच्छित माहिती काढू शकता:
SQL सर्व्हर मध्ये विदेशी की तयार
तांत्रिकदृष्ट्या, आपल्याला वरीलपैकी एकासारख्या क्वेरी करण्यास सक्षम होण्यासाठी संबंध स्पष्टपणे परिभाषित करण्याची आवश्यकता नाही. तथापि, आपण परदेशी किल्ली प्रतिबंध वापरून संबंध स्पष्टपणे परिभाषित केल्यास, डेटाबेस आपल्यासाठी काही हाउसकीपिंग कार्य करण्यास सक्षम असेल:
- जेव्हा आपण कर्मचारी टेबलमध्ये एक नवीन रेकॉर्ड जोडता, तेव्हा डेटाबेसला सुनिश्चित होईल की आपण प्रविष्ट केलेली पोझिशन आयडी स्थिती टेबलमध्ये वैध प्राथमिक की आहे.
- आपण स्थिती सारणीमध्ये एक स्थिती आयडी बदलल्यास, सुसंगतता कायम ठेवण्यासाठी डेटाबेस आवश्यक कर्मचारी टेबलमध्ये आवश्यक अद्यतने करू शकेल.
- संबंधित कर्मचारी नोंदींसह स्थिती हटविण्यास किंवा सर्व संबंधित कर्मचा-यांच्या कॅस्केडिंग हटविण्यास नकार देऊन डेटाबेसमध्ये स्थितीचे स्थान हटविण्याच्या प्रभावापासून डेटाबेस संरक्षित करू शकते.
येथे आपण SQL सर्व्हर मध्ये परदेशी की तयार कसे आहे:
बदललेला कर्मचारी कर्मचा भरणा मुख्य (PositionID) संदर्भ स्थिती (PositionID)आपण खंड जोडून एक टेबल तयार करता तेव्हा आपण परदेशी की देखील तयार करु शकता:
परदेशी प्रमुख संदर्भ पदे (पोझिशनआयडी)परकीय की स्तंभासाठी स्तंभ परिभाषाच्या शेवटी.