यदि हम यहां मॉडल को देखें, तो हम निम्नलिखित देखेंगे:
- एक उपयोगकर्ता ठीक एक वेबसाइट से संबंधित है
- एक कंपनी बिल्कुल एक वेबसाइट से संबंधित है
- एक वेबसाइट ठीक एक उपयोगकर्ता या कंपनी से संबंधित है
तीसरा संबंध एक "उपयोगकर्ता या कंपनी" इकाई के अस्तित्व का तात्पर्य है जिसका 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
)