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

एकाधिक अभी तक परस्पर अनन्य विदेशी कुंजी - क्या यह जाने का रास्ता है?

यदि हम यहां मॉडल को देखें, तो हम निम्नलिखित देखेंगे:

  1. एक उपयोगकर्ता ठीक एक वेबसाइट से संबंधित है
    • एक कंपनी बिल्कुल एक वेबसाइट से संबंधित है
    • एक वेबसाइट ठीक एक उपयोगकर्ता या कंपनी से संबंधित है

तीसरा संबंध एक "उपयोगकर्ता या कंपनी" इकाई के अस्तित्व का तात्पर्य है जिसका PRIMARY KEY कहीं संग्रहित किया जाना चाहिए।

इसे स्टोर करने के लिए आपको एक टेबल बनाने की जरूरत है जो एक PRIMARY KEY store स्टोर करेगी एक website owner . का इकाई। यह तालिका उपयोगकर्ता और वेबसाइट के लिए सामान्य विशेषताओं को भी संग्रहीत कर सकती है।

चूंकि यह एक-से-एक संबंध है, वेबसाइट विशेषताओं को इस तालिका में भी संग्रहीत किया जा सकता है।

उपयोगकर्ताओं और कंपनियों द्वारा साझा नहीं की गई विशेषताओं को अलग तालिका में संग्रहीत किया जाना चाहिए।

सही संबंधों के लिए बाध्य करने के लिए, आपको PRIMARY KEY बनाना होगा website . के owner type . के साथ संयुक्त इसके एक भाग के रूप में, और चाइल्ड टेबल में सही प्रकार को CHECK . के साथ बाध्य करें बाधा:

CREATE TABLE website_owner (
    type INT NOT NULL,
    id INT NOT NULL,
    website_attributes,
    common_attributes,
    CHECK (type IN (1, 2)) -- 1 for user, 2 for company
    PRIMARY KEY (type, id)
)

CREATE TABLE user (
    type INT NOT NULL,
    id INT NOT NULL PRIMARY KEY,
    user_attributes,
    CHECK (type = 1),
    FOREIGN KEY (type, id) REFERENCES website_owner
)

CREATE TABLE company (
    type INT NOT NULL,
    id INT NOT NULL PRIMARY KEY,
    company_attributes,
    CHECK (type = 2),
    FOREIGN KEY (type, id) REFERENCES website_owner
)


  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 प्रदर्शन - धीमी क्वेरी और innodb_buffer_pool_size

  2. MySQL योग, समूह द्वारा गिनें और शामिल हों

  3. ओएस एक्स पर mysql मणि स्थापित नहीं कर सकता

  4. एसक्यूएल:प्रति समूह अधिकतम रिकॉर्ड खोजें

  5. वैश्विक सेट करें max_allowed_packet काम नहीं करता है