在 SQL 中,我有一个表
FACILITIES
(FacilityID 主键、FacilityName、FacilityAddress、FacilityPhone、FacilyType)
FacilityType
指的是的子类型表
AFFILIATION
(设施 ID PK、从属关系开始日期、从属关系结束日期、员工类型、从属关系已验证);
EMPLOYER
(设施 ID PK、雇用日期、学期日期、职位、HR 联系人姓名)
CLIENT
(设施 ID PK、联系人姓名、联系人电子邮件、ContractStart、ContractEnd、ContractActive)
照原样,
FACILITY
可以是 1 个或多个子类型 - 这是事实。设施既可以是客户,也可以是雇主。如何编写将子类型绑定到 FACILITY
的脚本?
我正在考虑使用连接表,但是我可以使用子类型表来做到这一点吗?
子类型(或子)表 - 需要自己的 PK,并且父 PK 成为外键,允许您将一个或多个子记录关联到父记录。
所以你的子类型表定义变成:
AFFILIATION (AffiliationID PK, FacilityID FK, AffiliationStartDate, AffiliationEndDate, StaffType, AffiliationVerified);
EMPLOYER (EmployerID PK, FacilityID FK, HireDate, TermDate, Position, HRContactName)
CLIENT (ClientID PK, FacilityID FK, ContactName, ContactEmail, ConstractStart, ContractEnd, ContractActive)
那么你的查询就变成了
SELECT * FROM
FACILITY F
AFFILIATION A LEFT OUTER JOIN F.FacilityID = A.FacilityID
EMPLOYER E LEFT OUTER JOIN F.FacilityID = E.FacilityID
CLIENT A LEFT OUTER JOIN F.FacilityID = C.FacilityID