डाटाबेस शब्द "सम्बन्धी" वा "रिश्ते" लाई वर्णन गर्दछ कि तालिकामा डाटा जडान भएको छ।
डेटाबेसको संसारमा नयाँ आगोहरूले डेटाबेस र स्प्रिेडशिट बीचको भिन्नता देख्न कठिन समय छ। उनीहरूले डाटाको तालिकाहरू देख्छन् र डेटाबेसले तपाईंलाई नयाँ तरिकामा व्यवस्थित गर्न र क्वेरी गर्न अनुमति दिन्छ भनेर चिन्ता गर्दछ, तर सम्बन्धित सम्बन्ध डेटाबेस प्रविधिको नाम राख्ने डेटा बीचको सम्बन्धलाई बुझ्न असफल।
सम्बन्धले तपाईंलाई विभिन्न तरिकाले डेटाबेस तालिकाहरू बीचको जडानहरूलाई शक्तिशाली तरिकामा वर्णन गर्न अनुमति दिन्छ। त्यसोभए यी रिश्तहरु ले शक्तिशाली क्रस टेबल प्रश्नहरू, जोडिन्छ भनेर चिनिन्छ।
डाटाबेस रिसेप्शन को प्रकार
त्यहाँ तीनवटा प्रकारको डेटाबेस रिश्तेहरू छन्, प्रत्येक रिजर्भेसनमा समावेश हुन सक्ने तालिका पङ्क्तिहरूको संख्या अनुसार नाम दिइएको। यी तीन सम्बन्धी प्रकारका प्रत्येक दुई तालिकाहरू बीचको अवस्थित छ।
- एक-एक-सम्बन्ध रिश्ते हुन्छ जब पहिलो तालिकामा प्रत्येक प्रविष्टि एक छ, र एक मात्र, दोस्रो तालिकामा समकक्ष। एक-एक-सम्बन्ध रिसेप्शन मात्र दुर्लभ रूपमा प्रयोग गरिन्छ किनभने यो केवल एकै तालिकामा सबै जानकारी राख्न अक्सर अधिक कुशल हुन्छ। केहि डेटाबेस डिजाइनरले यस सम्बन्धको फाइदा उठाउँछन् कि तालिकाहरू सिर्जना गरेर अर्को तालिकाबाट डेटाको सबसेट समावेश गर्दछ।
- एक-से-धेरै सम्बन्धहरू डेटाबेस सम्बन्धको सबैभन्दा सामान्य प्रकार हो। तालिका तालिकामा प्रत्येक रेकर्ड एक तालिका वा तालिकामा एक वा बढी रेकर्डसँग मेल खान्छ, तर तालिका B मा प्रत्येक रेकर्ड तालिका ए मा मात्र एक रेकर्डसँग मेल खान्छ जब उदाहरणका लागि, एक शिक्षक तालिका र एक प्राथमिक विद्यालयमा एक विद्यार्थी तालिकाको बीच सम्बन्ध डाटाबेसको सम्भावना एक-से-धेरै सम्बन्ध हुनेछ, किनभने प्रत्येक विद्यार्थी मात्र एक शिक्षक छ, तर प्रत्येक शिक्षकले धेरै विद्यार्थीहरू छन्। यो एक-देखि-धेरै डिजाइनले डुप्लिकेट डेटा समाप्त गर्न मद्दत गर्दछ।
- धेरै-धेरै सम्बन्धहरू हुन्छन् जब तालिका A मा प्रत्येक रेकर्ड तालिका बीमा एक वा बढी रेकर्डसँग मेल खान्छ, र तालिका B मा प्रत्येक रेकर्ड तालिका ए। मा एक वा बढी रेकर्डसँग मेल खान्छ उदाहरणका लागि, शिक्षक र पाठ्यक्रमहरू बीच सम्बन्ध तालिका धेरै सम्भावना हुनेछ किनभने प्रत्येक शिक्षकले एक भन्दा बढी पाठ्यक्रमलाई निर्देशन दिन सक्छ, र प्रत्येक पाठ्यक्रममा एकभन्दा बढी शिक्षक हुन सक्छ।
आत्म-सन्दर्भ सन्दर्भहरू: एक विशेष प्रकरण
स्व-सन्दर्भ रिजर्भेसन हुन्छ जब त्यहाँ मात्र एक तालिका समावेश छ। एक साधारण उदाहरण एक कर्मचारी तालिका हो जुन प्रत्येक कर्मचारी को पर्यवेक्षक को बारे मा जानकारी छ। प्रत्येक पर्यवेक्षक पनि एक कर्मचारी हो र यसको आफ्नै पर्यवेक्षक छ। यस अवस्थामा, त्यहाँ एक-देखि-धेरै आत्म-सन्दर्भ सन्दर्भ हो, जस्तै प्रत्येक कर्मचारीसँग एक पर्यवेक्षक छ, तर प्रत्येक पर्यवेक्षकले एक भन्दा बढी कर्मचारी हुन सक्छ।
विदेशी कुञ्जीसँग सम्बन्ध बनाउन
तपाईं विदेशी कुञ्जी निर्दिष्ट गरेर तालिकाहरू बीच सम्बन्ध सिर्जना गर्नुहोस् .यो कुञ्जीले सम्बन्धित तालिकाहरू कसरी तालिकाहरू सम्बन्धित छन् भनेर बताउँछ। धेरै अवस्थामा, तालिका एको एक स्तम्भमा प्राथमिक कुञ्जी समावेश छन् जुन तालिका बी बाट उल्लेख गरिएको छ।
फेरि शिक्षक तथा विद्यार्थी तालिकाको उदाहरणलाई विचार गर्नुहोस्। शिक्षकहरूको तालिकामा केवल एक आईडी, एक नाम, र एक पाठ्यक्रम कलम छ:
प्रशिक्षकआईडी | शिक्षकनाम | पाठ्यक्रम |
---|---|---|
001 | जॉन डो | अंग्रेजी |
002 | जेन श्मो | गणित |
विद्यार्थी तालिकामा एक आईडी, नाम र विदेशी कुञ्जी स्तम्भ समावेश छ:
StudentID | Student_Name | Teacher_FK |
---|---|---|
0200 | लोभेल स्मिथ | 001 |
0201 | ब्रायन छोटो | 001 |
0202 | कोर्क मन्डेज | 002 |
0203 | मोनिका जोन्स | 001 |
स्तम्भ तालिकामा शिक्षक एफकेले शिक्षक तालिकामा प्रशिक्षकको प्राथमिक कुञ्जी मान सन्दर्भ गर्दछ।
अक्सर, डाटाबेस डिजाइनरले स्तम्भ नाममा "PK" वा "FK" प्रयोग गर्नेछ जुन सजिलै एक प्राथमिक कुञ्जी वा विदेशी कुञ्जी स्तम्भ पहिचान गर्न।
ध्यान दिनुहोस् कि यी दुई तालिकाहरूले शिक्षक र विद्यार्थी बीच एक-धेरै सम्बन्धलाई वर्णन गर्दछ।
सम्बन्ध र सन्दर्भीय सत्यता
एकपटक तपाइँले तालिकामा विदेशी कुञ्जी थप गर्नुभएको बेला, तपाइँ त्यसपछि एउटा डाटाबेसको बाधा सिर्जना गर्न सक्नुहुन्छ जुन दुई तालिकाहरू बीच सन्दर्भीय अखंडता लागू गर्दछ। यसले सुनिश्चित गर्दछ कि तालिकाहरू बीचको सम्बन्ध निरन्तर रहन्छ। जब एक तालिकामा अर्को तालिकामा विदेशी कुञ्जी छ, सन्दर्भीय अखंडताको अवधारणाले भन्छ कि तालिका बीमा कुनै पनि विदेशी कुञ्जी मान तालिका ए।
सम्बन्धहरू लागू गर्दै
तपाईंको डाटाबेसमा निर्भर गर्दछ, तपाइँ तालिकाहरू बीच सम्बन्धहरू फरक तरिकामा कार्यान्वयन गर्नुहुन्छ। माइक्रोसफ्ट पहुँच विजार्ड प्रदान गर्दछ जुन सजिलै तपाइँ तालिकाहरू लिंक गर्न र सन्दर्भीय अखंडता लागू गर्न अनुमति दिन्छ।
यदि तपाईले SQL लाई सिधै लेख्नुहुन्छ भने, तपाइँले पहिलो तालिका मेटिनेहरू सिर्जना गर्नुहुनेछ, एक आईडी स्तम्भलाई प्राथमिक कुञ्जी हुन घोषणा गर्नुहोस्:
टेबल शिक्षकहरू सिर्जना गर्नुहोस् (
प्रशिक्षकआईडी INT स्वतन्त्रता प्राथमिक कुञ्जी,
शिक्षकको नाम VARCHAR (100),
पाठ्यक्रम VARCHAR (100)
);
जब तपाईं विद्यार्थी तालिका सिर्जना गर्नुहुन्छ, तपाइँ शिक्षकको तालिकामा प्रशिक्षकआईडी स्तम्भ सन्दर्भ गर्ने विदेशी कुञ्जी हुनका लागि शिक्षक एफके स्तम्भलाई घोषणा गर्नुहुन्छ:
तालिका विद्यार्थीहरू सिर्जना गर्नुहोस् (
StudentID INT स्वत: प्रशिक्षण प्राथमिक कुञ्जी,
Student_Name VARCHAR (100), शिक्षक FK INT,
विदेशी कुञ्जी (शिक्षक एफकेके) सन्दर्भ शिक्षकहरू (प्रशिक्षकआईडी)
);
रिजर्भेसनहरू प्रयोग गर्न तालिकाहरू सामेल गर्न
एकपटक तपाईंले आफ्नो डेटाबेसमा एक वा बढी सम्बन्ध सिर्जना गरेपछि, तपाईं एकाधिक तालिकाबाट संयुक्त जानकारीको लागि SQL JOIN क्वेरीहरू प्रयोग गरेर तिनीहरूको शक्तिलाई लाभ लिन सक्नुहुन्छ। सबैभन्दा सामान्य प्रकारको सामेल एक एसक्यूएल इन्नर जोइन हो, वा एक साधारण सामेल हो। यस प्रकारको सामेलले सबै रेकर्डहरू फर्काउँछ जुन धेरै तालिकाहरूबाट शर्त सामेल गर्दछ। उदाहरणको लागि, यो जोडि हालत विद्यार्थी विद्यार्थी, शिक्षक अध्यापन, र पाठ्यक्रम जहाँ विद्यार्थी तालिकामा विदेशी कुञ्जी शिक्षक तालिकामा प्राथमिक कुञ्जीसँग मेल खाने अवस्था फर्काउँछ:
चुनेका विद्यार्थीहरू। शिक्षकहरू। शिक्षकहरू, शिक्षकहरू। शिक्षकहरू
विद्यार्थीहरूबाट
शिक्षकहरू शिक्षक हुनुहोस्
विद्यार्थीहरू। Tacher_FK = शिक्षकहरू।
यो कथनले यस तालिकामा केहि चीज उत्पादन गर्दछ:
SQL सम्मिलित विवरण बाट फर्काइएको तालिका
Student_NameTacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish