यदि मेरे पास दो तालिकाओं के बीच संबंध है (दोनों तालिकाओं की अपनी प्राथमिक कुंजी है) तो मेरे निर्णय को किस दिशा में रखना चाहिए कि किस तालिका को विदेशी कुंजी को स्टोर करना चाहिए? मैं समझता हूं कि रिश्ते की प्रकृति शायद मायने रखती है (एक-से-एक, एक से कई, कई से कई, यूनी-दिशात्मक, द्वि-दिशात्मक), और शायद पहुंच पैटर्न भी मायने रखती हैं। यद्यपि निर्णय लेने का व्यवस्थित तरीका क्या है?मुझे एक विदेशी कुंजी कहां स्टोर करनी चाहिए?
उत्तर
रिश्ते में बच्चा कौन सा टेबल है?
उत्तर दें, और आप जानते हैं कि कौन सी तालिका को विदेशी कुंजी कॉलम की आवश्यकता है, माता-पिता की [आमतौर पर] प्राथमिक कुंजी का संदर्भ लें। यह एक से कई रिश्तों के लिए है ...
कई से अधिक लोगों को आपकी मुख्य कुंजी के रूप में दोनों टेबलों की चाबियों का उपयोग करके तीसरी तालिका जोड़ने की आवश्यकता होगी।
एक विदेशी कुंजी केवल एक तालिका में एक फ़ील्ड है जो किसी अन्य तालिका के एक प्रमुख क्षेत्र को संदर्भित करती है। इस तरह के विदेशी कुंजी क्षेत्र की पहचान करना बिल्कुल महत्वपूर्ण नहीं है। यही है, आपको स्पष्ट रूप से विदेशी कुंजी जोड़ने की आवश्यकता नहीं है ... इसके लिए टेबल पर संदर्भ एक विदेशी कुंजी होने के लिए बाध्यता है। जब आप दोनों तालिकाओं को एक साथ जोड़ते हैं, तो मूल तालिका की प्राथमिक कुंजी बाल तालिका की विदेशी कुंजी के बराबर सेट की जाएगी। जो भी प्राथमिक कुंजी विदेशी कुंजी है।
एक से कई रिश्ते में, एफके "कई" पक्ष पर जाता है। यह "एक" पक्ष पर नहीं जा सकता है क्योंकि वह जगह है जहां पीके जाता है और प्राथमिक कुंजी की परिभाषा में डुप्लिकेट को अस्वीकार करना शामिल है।
यदि आपके पास कई से अधिक रिश्ते हैं, तो आपको टेबल को फिर से काम करने की आवश्यकता होगी ताकि आप दो से कई रिश्ते और एक मध्यवर्ती संकल्प तालिका के साथ समाप्त हो सकें।
"हालांकि निर्णय लेने का व्यवस्थित तरीका क्या है?"
दो विकल्प होते हैं: एफके के "कई पक्ष" के रूप में "वन" पक्ष, या "कई" पक्ष में एफके का "वन" पक्ष होता है।
चलो वास्तव में विकल्पों को देखें।
"कई" पक्ष की सभी पंक्तियां "वन" पक्ष पर आसानी से एक पंक्ति का संदर्भ दे सकती हैं।
"वन" पक्ष पर एक पंक्ति कभी भी "कई" पक्षों की सभी पंक्तियों का संदर्भ नहीं दे सकती है।
केवल एक तकनीक काम करती है: "कई" पक्ष में "वन" पक्ष में एफके है।
केवल एक वास्तविक कार्यान्वयन विकल्प है। कोई "निर्णय" नहीं है।
संक्षेप में: यह कार्डिनालिटी का मामला है। यदि आपके पास एक से अधिक संबंध हैं, तो कुंजी को 'कई' पक्ष पर रहना चाहिए। यदि यह 'एक' तरफ, एक-से-शायद एक है। यदि यह कई से अधिक है, तो आपको एक मध्यवर्ती तालिका की आवश्यकता है। यदि यह एक-एक है, तो आप चुनने के लिए स्वतंत्र हैं। – reinierpost
primary key
की तरह, foreign key
एक प्रकार में constraint
एक तालिका में एक या अधिक कॉलम पर रखा गया है।
foreign key
किसी अन्य तालिका में प्रमुख कॉलम और संबंधित कॉलम के बीच एक लिंक स्थापित करता है। (आप विदेशी कुंजी कॉलम को उसी तालिका में कॉलम से भी लिंक कर सकते हैं।)
तालिका जिसमें विदेशी कुंजी है, को बाल तालिका माना जाता है, और तालिका जो विदेशी कुंजी संदर्भ मूल तालिका है।
कुंजी अंक
foreign key
एक प्राथमिक कुंजी या अद्वितीय बाधा संदर्भ होना चाहिए, हालांकि उस संदर्भ में एक ही मेज पर या एक अलग मेज पर हो सकता है- एक
foreign key
भी एक ही होना चाहिए संदर्भित बाधा में कॉलम की संख्या के रूप में स्तंभों की संख्या, और डेटा प्रकारों को संबंधित कॉलम के बीच मेल खाना चाहिए। Primary key
के विपरीत,Foreign key
कॉलम में NULL मान हो सकते हैं।
- 1. मुझे अपने एप्लिकेशन की "सक्रियण" कुंजी कहां स्टोर करनी चाहिए?
- 2. मुझे रेल 3 में एपीआई कुंजी कहां स्टोर करनी चाहिए?
- 3. मुझे एप्लिकेशन विशिष्ट सेटिंग्स कहां स्टोर करनी चाहिए?
- 4. मुझे डेटाबेस कनेक्शन स्ट्रिंग कहां स्टोर करनी चाहिए?
- 5. मुझे पाइथन ऐप में एपीआई कुंजी कैसे स्टोर करनी चाहिए?
- 6. मुझे भाषा (CurrentThread.CurrentCulture) कहां सेट करनी चाहिए?
- 7. मुझे संवेदनशील चर कहां स्टोर करना चाहिए?
- 8. आपको तृतीय पक्ष असेंबली कहां स्टोर करनी चाहिए?
- 9. रेल - मुझे व्युत्पन्न विशेषताओं की गणना कहां करनी चाहिए?
- 10. मुझे अपने जावास्क्रिप्ट प्रोग्राम के लिए सेटिंग्स कहां स्टोर करनी चाहिए?
- 11. मुझे रेल ऐप के लिए साइट साइटवाइड कॉन्फ़िगरेशन सेटिंग कहां स्टोर करनी चाहिए?
- 12. एईएस कुंजी कहां स्टोर करें?
- 13. क्या मुझे विदेशी कुंजी का उपयोग करना चाहिए?
- 14. क्या मुझे वास्तव में विदेशी कुंजी का उपयोग करना चाहिए?
- 15. मुझे एक एपीआई चाहिए। मुझे कहां से शुरू करना चाहिए?
- 16. मुझे हेरोोकू पर संवेदनशील फाइलों को कहां स्टोर करना चाहिए?
- 17. मुझे अपना एप्लिकेशन डेटा कहां स्टोर करना चाहिए?
- 18. मुझे अपना गेम लेवल स्टेटस कहां स्टोर करना चाहिए?
- 19. रेल पर रूबी: मुझे मॉड्यूल कहां स्टोर करना चाहिए?
- 20. एक विदेशी कुंजी
- 21. क्या मुझे मोंगोडीबी में या स्थानीय फाइल सिस्टम (नोड.जेएस द्वारा) में एक छवि स्टोर करनी चाहिए
- 22. पंक्तियों एक विदेशी कुंजी
- 23. एसक्यूएल एक विदेशी कुंजी
- 24. जेडीबीसी एक विदेशी कुंजी
- 25. मुझे एक स्क्रिप्टिंग भाषा क्यों एम्बेड करनी चाहिए?
- 26. मुझे सी # में एक फ़ाइल क्यों बंद करनी चाहिए?
- 27. मुझे एक अस्थायी फ़ाइल कहां लिखनी चाहिए?
- 28. विदेशी कुंजी
- 29. क्या विदेशी कुंजी तालिका प्राथमिक कुंजी बननी चाहिए?
- 30. एंड्रॉइड वरीयता कुंजी कहां स्टोर करें?
"यह निर्णय लेने का व्यवस्थित तरीका क्या है?" "समझें कि रिश्ते की प्रकृति शायद मायने रखती है"। सही बात। रिश्ते की प्रकृति महत्वपूर्ण है। मुझे सवाल नहीं मिला। क्या आप जानना चाहते हैं कि दूसरे पर निर्भर कौन है? –
[विदेशी कुंजी का MySQL दस्तावेज] (https://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html#idm139680617903472) 2 माता-पिता के बीच संबंधों का एक सरल उदाहरण प्रदान करता है सारणी: 'ग्राहक',' उत्पाद' और एक बाल तालिका: 'product_order'। उस उदाहरण में 'product_order' बाल तालिका है जिसमें विदेशी कुंजी होनी चाहिए। –