-- User USR exists.
--
user {USR}
PK {USR}
-- Role ROL exists.
--
role_ {ROL}
PK {ROL}
Xorg
एक विश्वविद्यालय, एक संगठन, या एक फाउंडेशन के लिए एक सामान्य शब्द है। भेदभाव करने वाला TYP
इन तीनों के बीच अंतर करने के लिए प्रयोग किया जाता है।
-- Xorg XOG, of type TYP, named XNM was created
-- (is owned) by user USR.
--
xorg {XOG, TYP, USR, XNM, ...common_cols}
PK {XOG}
SK {XOG, TYP}
CHECK TYP in {'U', 'O', 'F'}
FK {USR} REFERENCES user {USR}
-- University (xorg) XOG, of xorg-type TYP = 'U', exists.
--
university {XOG, TYP, ...university_specific_cols}
PK {XOG}
CHECK TYP = 'U'
FK {XOG, TYP} REFERENCES xorg {XOG, TYP}
-- Organization (xorg) XOG, of xorg-type TYP = 'O', exists.
--
organization {XOG, TYP, ...organization_specific_cols}
PK {XOG}
CHECK TYP = 'O'
FK {XOG, TYP} REFERENCES xorg {XOG, TYP}
-- Foundation (xorg) XOG, of xorg-type TYP = 'F', exists.
--
organization {XOG, TYP, ...foundation_specific_cols}
PK {XOG}
CHECK TYP = 'F'
FK {XOG, TYP} REFERENCES xorg {XOG, TYP}
-- User USR is member of xorg XOG, of xorg-type TYP,
-- in role ROL.
--
user_xorg {USR, XOG, TYP, ROL}
PK {USR, XOG}
FK1 {XOG, TYP} REFERENCES
xorg {XOG, TYP}
FK2 {USR} REFERENCES user {USR}
FK3 {ROL} REFERENCES role_ {ROL}
नोट:
All attributes (columns) NOT NULL
PK = Primary Key
AK = Alternate Key (Unique)
SK = Proper Superkey (Unique)
FK = Foreign Key
उपप्रकारों . के बारे में एक शब्द . उपप्रकारों के लिए बाधाओं को लागू करने का उचित तरीका अभिकथनों का उपयोग करना होगा (CREATE ASSERTION
), लेकिन यह अभी भी प्रमुख डीबी में उपलब्ध नहीं है। मैं FKs
. का उपयोग कर रहा हूं इसके बजाय, और अन्य सभी स्थानापन्न विधियों की तरह यह सही नहीं है। SO और SE-DBA पर लोग बहुत बहस करते हैं कि क्या बेहतर है। मैं आपको अन्य तरीकों की भी जांच करने के लिए प्रोत्साहित करता हूं।