phpMyAdmin
 sql >> डेटाबेस >  >> Database Tools >> phpMyAdmin

MySQL के साथ प्राथमिक कुंजी और संबंध डेटाबेस को समझना (phpmyadmin)

TL;DR आपको ज़रूरत नहीं क्वेरी के लिए "रिलेशनशिप" यानी विदेशी कुंजी (FK) घोषित करने के लिए। लेकिन यह एक अच्छा विचार है . जब आप ऐसा करते हैं, तो एक FK प्राथमिक कुंजी (PK) या . को संदर्भित कर सकता है कोई अन्य अद्वितीय कॉलम।

कुछ तरीकों और उत्पादों में PK और FK को ग़लती से "रिलेशनशिप" कहा जाता है। अनुप्रयोग संबंध तालिकाओं . द्वारा दर्शाए जाते हैं . (बेस टेबल और क्वेरी परिणाम।) पीके और एफके बाधाएं हैं:वे डीबीएमएस को बताते हैं कि केवल कुछ स्थितियां उत्पन्न हो सकती हैं, इसलिए जब आप कुछ त्रुटियां करते हैं तो यह नोटिस कर सकता है। वे संबंध नहीं हैं, वे प्रत्येक डेटाबेस स्थिति और अनुप्रयोग स्थिति में सत्य कथन हैं। डेटाबेस को अपडेट करने और क्वेरी करने के लिए आपको बाधाओं को जानने की आवश्यकता नहीं है।

बस जानें कि प्रत्येक तालिका का क्या अर्थ है मतलब बेस टेबल में डीबीए-दिए गए अर्थ होते हैं जो आपको बताते हैं कि उनकी पंक्तियों का क्या मतलब है। प्रश्नों के भी अर्थ होते हैं जो आपको बताते हैं कि उनकी पंक्तियों का क्या अर्थ है। क्वेरी अर्थों को आधार तालिका अर्थों से समानांतर में जोड़ा जाता है कि उनके परिणाम मानों को आधार तालिका मानों और शर्तों से कैसे जोड़ा जाता है।

  • image_tbl -- छवि [आईडी] [एल्बमनाम] नामक एक एल्बम में है, जिसका नाम [नाम] है, दिनांक [दिनांक समय] है और इसमें टिप्पणी [टिप्पणी]
  • है
  • album_tbl -- एल्बम [albumID] का नाम [albumName]
  • . रखा गया है

आपके पास है . नहीं है किसी भी पीके/अद्वितीय या एफके घोषित करने के लिए! लेकिन यह एक अच्छा विचार है क्योंकि तब डीबीएमएस असंभव/गलत अपडेट को अस्वीकार कर सकता है। एक PK/UNIQUE का कहना है कि इसके कॉलम के लिए एक सबरो मान केवल एक बार दिखाई देना चाहिए। एक एफके का कहना है कि इसके कॉलम के लिए एक सबरो मान को संदर्भित तालिका में पीके/अद्वितीय सबरो मान के रूप में प्रकट होना चाहिए। तथ्य यह है कि ये सीमाएं बेस टेबल पर हैं, इसका मतलब है कि कुछ सीमाएं क्वेरी परिणामों पर हैं। लेकिन उन क्वेरी परिणामों के अर्थ क्वेरी की तालिका और स्थिति संयोजनों के अनुसार होते हैं, जो उन सीमाओं से स्वतंत्र होते हैं। उदाहरण के लिए एल्बम के नाम अद्वितीय हैं या नहीं,

  • image_tbl JOIN album_tbl USING albumName -- छवि [आईडी] [एल्बमनाम] नामक एक एल्बम में है, जिसका नाम [नाम] है, दिनांक [डेटटाइम] है और इसमें टिप्पणी [टिप्पणी] है और एल्बम [एल्बमआईडी] का नाम [एल्बमनाम] है

यहां एकमात्र समस्या यह है कि यदि एल्बम के नाम अद्वितीय नहीं हैं तो किसी छवि के एल्बम का नाम जानने से आपको यह नहीं पता चलेगा कि वह किस एल्बम में है; आप केवल यह जानते हैं कि यह उस नाम के एल्बम में है। दूसरी ओर, यदि एल्बम के नाम अद्वितीय हैं, तो आपको album_tbl albumID की आवश्यकता नहीं है।

इसलिए यदि एल्बम के नाम अद्वितीय हैं, तो album_tbl में albumName UNIQUE घोषित करें। फिर image_tbl में album_tbl के कुछ PK/UNIQUE कॉलम द्वारा एल्बम की पहचान करें। चूंकि एल्बम_आईडी संभवतः केवल एल्बम की पहचान करने के उद्देश्य से मौजूद है, आमतौर पर हम इसे चुने जाने की अपेक्षा करते हैं। फिर image_tbl में उस कॉलम को एक FK रेफरेंसिंग album_tbl के रूप में घोषित करें।

पीएस इंडेक्स आमतौर पर कुछ समय और स्थान की कीमत पर पूछताछ को तेज करते हैं। तालिका घोषणा में प्राथमिक कुंजी घोषणा स्वचालित रूप से एक अनुक्रमणिका घोषित करती है। PK, UNIQUE और FK कॉलम सेट को इंडेक्स करना एक अच्छा विचार है।



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. तालिका में स्ट्रिंग का हिस्सा निकालें

  2. नोड.जेएस के साथ मुझे किस डेटाबेस का उपयोग करना चाहिए?

  3. एक घातक JavaScript त्रुटि उत्पन्न हुई है। क्या आप त्रुटि रिपोर्ट भेजना चाहेंगे? phpmyadmin पर

  4. MySQL डंप फ़ाइल और टिप्पणी की गई लाइनें

  5. एक निश्चित मान वाली पंक्ति के बाद पंक्तियों का चयन करें