Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पहचान बनाम गैर-पहचान वाले रिश्ते (फिर से !!!)

आप वैकल्पिकता और पहचान के बीच संबंध पर अधिक विचार कर रहे हैं। जब तक पूरी बात आपके लिए अधिक स्वाभाविक रूप से न आ जाए, तब तक उन्हें पूरी तरह से असंबंधित के रूप में सोचना सबसे अच्छा है ।

वैकल्पिकता के बारे में, यह याद रखना महत्वपूर्ण है कि वैकल्पिकता दिशात्मक है। employee_equipment . के अपने उदाहरण का उपयोग करने के लिए :ज़रूर, कर्मचारियों को उपकरण की आवश्यकता नहीं है। employee . से एक-से-अनेक संबंध employee_equipment . के लिए वैकल्पिक है। वहीं इसे विपरीत नजरिए से देखें तो रिश्ता अनिवार्य है। आपके पास employee_equipment में कोई रिकॉर्ड नहीं हो सकता है जब तक कोई employee न हो इसके साथ संबद्ध करने के लिए।

पहचान का वैकल्पिकता से कोई लेना-देना नहीं है, सिवाय संयोग से . के बच्चे से माता-पिता के लिए एक पहचान संबंध अनिवार्य है। क्या यह माता-पिता से बच्चे के लिए भी अनिवार्य है, जहां तक ​​​​पहचान का संबंध है, न तो यहां है और न ही है।

एक रिश्ते की पहचान यह है कि आपको यह जानना होगा कि आप किस माता-पिता के बारे में बात कर रहे हैं (साथ ही कुछ अन्य चीजें) ताकि आप यह जान सकें कि आप किस बच्चे के बारे में बात कर रहे हैं। यही है, बच्चे की प्राथमिक कुंजी में माता-पिता के लिए एक विदेशी कुंजी शामिल होनी चाहिए।

शुद्ध चौराहा टेबल (जैसे employee_equipment ) इसके अच्छे उदाहरण हैं। शुद्ध चौराहे की प्राथमिक कुंजी दोनों मूल तालिकाओं के लिए विदेशी कुंजियों का संयोजन है। ध्यान दें कि कुछ लोग इस प्रकार की तालिकाओं में एक सरोगेट कुंजी भी जोड़ सकते हैं। यदि कई उम्मीदवार कुंजी हैं तो यह पहचान के दृष्टिकोण से इतना मायने नहीं रखता है। पहचान निर्धारित करने में जो महत्वपूर्ण है वह यह है कि क्या विदेशी कुंजी उम्मीदवार कुंजी का हिस्सा है, चाहे वह उम्मीदवार कुंजी प्राथमिक कुंजी हो या नहीं।

एक और अच्छा उदाहरण डेटाबेस के मेटाडेटा कैटलॉग जैसा कुछ होगा, जहां एक कॉलम की पहचान उस तालिका से होती है जिससे वह संबंधित है, जैसे तालिका को उस स्कीमा द्वारा पहचाना जाता है जिसमें वह है, और इसी तरह। यह जानते हुए कि एक कॉलम को NAME कहा जाता है आपको नहीं बताता कि यह कौन सा कॉलम है। यह जानते हुए कि यह NAME है CUSTOMER . में कॉलम तालिका मदद करती है। (आपको यह भी जानना होगा कि कौन सा स्कीमा CUSTOMER में है, और आगे)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL के ANSI और यूनिकोड ड्राइवरों के बीच अंतर

  2. किसी स्तंभ को केवल 2 मान स्वीकार करने के लिए प्रतिबंधित करना

  3. Django 500 आंतरिक सर्वर त्रुटि - अनुचित रूप से कॉन्फ़िगर किया गया:MySQLdb मॉड्यूल लोड करने में त्रुटि:

  4. MySQL/PHP लेनदेन व्यवहार

  5. PHP MySql JQuery का उपयोग करके अजाक्स ड्रॉप-डाउन मेनू में डेटा पुनर्प्राप्त करें