-- User USR exists.
--
user {USR}
PK {USR}
-- Role ROL exists.
--
role_ {ROL}
PK {ROL}
Xorg
là một thuật ngữ chung cho một trường đại học, một tổ chức hoặc một cơ sở. được sử dụng để phân biệt giữa ba điều này.
-- 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}
Lưu ý:
All attributes (columns) NOT NULL
PK = Primary Key
AK = Alternate Key (Unique)
SK = Proper Superkey (Unique)
FK = Foreign Key
Một từ về loại phụ . Cách thích hợp để triển khai các ràng buộc cho các kiểu con là sử dụng các xác nhận ( TẠO CHỨNG NHẬN
), nhưng nó vẫn không có sẵn trong các DB chính. Tôi đang sử dụng FKs
thay vào đó, và như tất cả các phương pháp thay thế khác, nó không hoàn hảo. Mọi người tranh cãi rất nhiều, trên SO và SE-DBA, cái gì tốt hơn. Tôi cũng khuyến khích bạn kiểm tra các phương pháp khác.