एका डेटाबेसमध्ये एक-ते-अनेक नातेसंबंध

सारणीतील प्रत्येक रेकॉर्ड टेबल ब मध्ये अनेक दुवा साधलेले रेकॉर्ड असू शकतात तेव्हा डेटाबेसमध्ये एक-ते-अनेक संबंध उद्भवतात, परंतु टेबल B मधील प्रत्येक रेकॉर्ड टेबल ए मध्ये फक्त एक संबंधित रेकॉर्ड असू शकतो. एक-एक-अनेक संबंध डेटाबेस हे सर्वात सामान्य रिलेशनल डेटाबेस डिझाइन आहे आणि हे चांगल्या डिझाइनचे केंद्र आहे.

शिक्षक आणि त्यांचे अभ्यासक्रम यांच्यामध्ये असलेला संबंध विचारात घ्या. शिक्षक बहुविध अभ्यासक्रम शिकवू शकतो, परंतु या कोर्सचा शिक्षकांशी संबंध नसतील.

म्हणून, शिक्षकांच्या टेबलमध्ये प्रत्येक रेकॉर्डसाठी, अभ्यासक्रम टेबलमध्ये बरेच रेकॉर्ड असू शकतात. हा एक-एक-अनेक संबंध आहे: अनेक अभ्यासकांसाठी एक शिक्षक.

एकाचवेळी अनेक नातेसंबंध स्थापित करणे महत्त्वाचे का आहे

एक-बरेच-बरेच संबंध दर्शवण्यासाठी, आपल्याला किमान दोन सारण्या आवश्यक आहेत. चला पाहू या.

कदाचित आम्ही एक शिक्षक टेबल तयार केले ज्यात आम्हाला नावे आणि अभ्यासलेले अभ्यासक्रम रेकॉर्ड करायचे होते. आम्ही हे असे डिझाइन करू शकू:

शिक्षक आणि अभ्यासक्रम
शिक्षक_आयडी Teacher_Name कोर्स
शिक्षक_001 कारमेन जीवशास्त्र
शिक्षक_002 वेरोनिका गणित
शिक्षक_003 होर्हे इंग्रजी

कार्मेन दोन किंवा अधिक अभ्यासक्रम शिकवत असेल तर काय? या डिझाइनसह आमच्याकडे दोन पर्याय आहेत. आम्ही फक्त यासारख्या कारमेनच्या अस्तित्वात असलेल्या रेकॉर्डमध्ये जोडू शकतो:

शिक्षक आणि अभ्यासक्रम
शिक्षक_आयडी शिक्षक _ नाव कोर्स
शिक्षक_001 कारमेन जीवशास्त्र, गणित
शिक्षक_002 वेरोनिका गणित
शिक्षक_003 होर्हे इंग्रजी

वरील रचना तथापि, अविलनीय आहे आणि डेटा घालण्यासाठी, संपादित करण्यास किंवा हटविण्याचा प्रयत्न करताना नंतर समस्या येऊ शकते.

यामुळे डेटा शोधणे अवघड होते. हे डिझाइन डेटाबेस सामान्यीकरण, फर्स्ट नॉर्मल फॉर्म (1 एनएफ) च्या पहिल्या तत्त्वाचे उल्लंघन करते, जे असे दर्शवते की प्रत्येक सारणी सेलमध्ये डेटाचा एक स्वतंत्र विभाग असावा.

कार्मेनसाठी दुसरे डिझाइन पर्याय दुसरा रेकॉर्ड जोडणे असू शकते:

शिक्षक आणि अभ्यासक्रम
शिक्षक _ID शिक्षक _ नाव कोर्स
शिक्षक_001 कारमेन जीवशास्त्र
शिक्षक_001 कारमेन गणित
शिक्षक_002 वेरोनिका गणित
शिक्षक_003 होर्हे इंग्रजी

हे 1 एनएफ चे पालन करते परंतु अजूनही खराब डिझाइन डिझाइन असल्यामुळे ते रिडंडंसिचा परिचय देते आणि अनावश्यकपणे मोठ्या डेटाबेसला फुगवून देऊ शकते. अधिक महत्त्वाचे म्हणजे, डेटा विसंगत होऊ शकतो. उदाहरणार्थ, कार्मेनचे नाव बदलल्यास काय? डेटासह काम करणारा कोणीतरी एका रेकॉर्डमध्ये तिचे नाव सुधारित करेल आणि दुसर्या रेकॉर्डमध्ये तो अद्ययावत करण्यात अयशस्वी होईल. हे डिझाइन सेकंद नॉर्मल फॉर्म (2 एनईएफ) चे उल्लंघन करते, जे 1 एनएफ चे पालन करते आणि डेटाच्या सबसेट्सला एकाधिक टेबलमध्ये विभक्त करून आणि त्यांच्यातील नातेसंबंधाची निर्मिती करून अनेक रेकॉर्डची बेकायदेशीरता टाळली पाहिजे.

एक-ते-अनेक नातेसंबंधांशी डेटाबेस डिझाईन कसा करावा?

शिक्षक आणि अभ्यासक्रमांच्या टेबलमध्ये एक-ते-अनेक संबंध अंमलबजावणी करण्यासाठी, आम्ही सारण्या दोन मध्ये खंडित करतो आणि परदेशी की वापरून त्यांना जोडतो.

येथे, आम्ही शिक्षक टेबलमध्ये कोर्स कॉलम काढला आहे:

शिक्षक
शिक्षक _ID शिक्षक _ नाव
शिक्षक_001 कारमेन
शिक्षक_002 वेरोनिका
शिक्षक_003 होर्हे

आणि इथे कोर्स टेबल आहे. त्याच्या परदेशी कि, Teacher_ID, शिक्षक टेबलमध्ये शिक्षकांना एक कोर्स जोडेल:

अभ्यासक्रम
कोर्स_आयडी Course_Name शिक्षक_आयडी
कोर्स_001 जीवशास्त्र शिक्षक_001
कोर्स_002 गणित शिक्षक_001
कोर्स_003 इंग्रजी शिक्षक_003

आम्ही परदेशी की वापरुन शिक्षक आणि अभ्यासक्रमांच्या टेबलमध्ये संबंध विकसित केला आहे.

हे आम्हाला सांगते की जीवशास्त्र आणि गणित दोन्ही कर्मेन शिकवले जाते आणि येथे जॉर्ज इंगळे शिकवतो.

आम्ही हे डिझाईन कोणत्याही संभाव्य बेकारीच्या टाळण्याकडे कसे वळतो ते पाहू शकतो, व्यक्तिगत शिक्षकांना अनेक अभ्यासक्रम शिकवण्याची परवानगी देते आणि एक-एक-अनेक संबंध लागू होतात.

डेटाबेस एक-ते-एक संबंध आणि अनेक-बरेच-अनेक संबंध देखील लागू करू शकतात