2011-11-11 16 views
8

मैं संबंधों को समझने की कोशिश कर रहा हूं और स्वाभाविक रूप से प्रश्न प्रकट होते हैं।संदर्भ तालिका और संदर्भित तालिका

MySQL Workbench screenshot

संदर्भित तालिका का क्या मतलब है और संदर्भित तालिका क्या मतलब है? उपर्युक्त उदाहरण में किसको संदर्भित किया जाना चाहिए और कौन सा संदर्भ दे रहा है? तर्क के लिए कहें कि settlements तालिका एक बाल तालिका है (निपटान किसी देश के बिना मौजूद नहीं हो सकता है)। क्या इस बच्चे की तालिका को संदर्भित या संदर्भित किया जाना चाहिए?

मैं इस तरह के छोटे प्रश्न के लिए एक नया प्रश्न नहीं खोलना पसंद करता हूं: Mandatory चेकबॉक्स का क्या अर्थ है? क्या इसका मतलब है कि निपटान तालिका आवश्यक है या country_id आवश्यक है? या शायद कुछ और?

+0

शायद मुझे इसे अंग्रेजी में पोस्ट करना चाहिए। Reackexchange.com: डी – abruski

उत्तर

8

PostgreSQL दस्तावेज़ में वास्तव में एक अच्छी व्याख्या मिली। यह भी मान लें कि आप एक मेज उन उत्पादों के आदेश के भंडारण है

CREATE TABLE products (
    product_no integer PRIMARY KEY, 
    name text, 
    price numeric 
); 

चलो:

आप उत्पाद तालिका है कि हम कई बार पहले से ही इस्तेमाल किया है है कहो। हम यह सुनिश्चित करना चाहते हैं कि ऑर्डर टेबल में केवल उन उत्पादों के ऑर्डर शामिल हैं जो वास्तव में मौजूद हैं। तो हम आदेश तालिका का संदर्भ देता है उत्पादों तालिका में एक विदेशी कुंजी बाधा को परिभाषित:

CREATE TABLE orders (
    order_id integer PRIMARY KEY, 
    product_no integer REFERENCES products (product_no), 
    quantity integer 
); 

अब यह product_no प्रविष्टियों उत्पादों तालिका में दिखाई नहीं देते के साथ आदेश बनाने के लिए असंभव है।

हम कहते हैं कि इस स्थिति में आदेश तालिका संदर्भित तालिका है और उत्पादों तालिका संदर्भित टेबल है। इसी प्रकार, संदर्भ और संदर्भित कॉलम हैं।

2

settlements तालिका (country_id क्षेत्र के साथ) को countries तालिका (आईडी क्षेत्र)

संदर्भित कर रहा है मैं अनिवार्य चेकबॉक्स संबंध के साथ कोई संबंध नहीं है लगता है। यह सिर्फ मैदान पर एक शून्य बाधा नहीं है। लेकिन आपको इस पर MySQL वर्कबेंच के उपयोगकर्ता मैनुअल से परामर्श लेना चाहिए।

+0

तो मैंने जो चित्र बनाया है वह सही है? Setmets संदर्भ तालिका होना चाहिए? – abruski

+0

yupp, और 'देशों' को संदर्भित किया जाना चाहिए – bpgergo

+0

मुझे ऐसा नहीं लगता है। मेरा जवाब देखें – Bytemain

0

एक देश में कई बस्तियों हो सकते हैं ताकि देश तालिका संदर्भित तालिका हो और निपटान तालिका संदर्भ तालिका हो। मुझे अनिवार्य क्षेत्र के बारे में पता नहीं है।

+1

'बस्तियों' तालिका में 'country_id' फ़ील्ड है जो' देशों की तालिका का संदर्भ देता है। इसलिए, मैंने निष्कर्ष निकाला है, 'बस्तियों' तालिका 'देशों की तालिका का संदर्भ दे रही है। – bpgergo

+0

सच है, लेकिन एक देश में कई बस्तियों हो सकते हैं। आईएमओ देश सारणी मूल तालिका है। देश को खोजने के लिए बस्तियों के माध्यम से नेविगेट करना असंभव है। – Bytemain

+0

@ बेटरडेव आपका मतलब क्या है कि एक से कई और कई से एक रिश्ते के बीच का अंतर है। –

4

संदर्भित तालिका 'पैरेंट' तालिका है।

संदर्भ तालिका 'बच्चा' तालिका है।

सुराग एसक्यूएल डीडीएल में है उदा।

ALTER TABLE Settlements ADD 
    FOREIGN KEY (country_id) 
    REFERENCES Countries (id); 

निपटान संदर्भ देश, जिसका अर्थ है देशों का संदर्भ दिया जाता है।

1

अनिवार्य चेक बॉक्स, अगर ऐसा लगता है कि उत्पन्न SQL में कोई प्रभाव नहीं है, तो ग्राफिक पर कुछ प्रभाव पड़ता है।यदि अनचेक किया गया है, तो आप संबंधित संबंध रेखा चरम पर थोड़ा सर्कल देख सकते हैं (रिलेशनशिप नोटेशन क्रो के पैर के लिए)।

इसका मतलब है कि विदेशी कुंजी शून्य, उर्फ ​​हो सकती है। अनिवार्य नहीं।

संबंधित मुद्दे