如果我们在这里查看模型,将会看到以下内容:
- 用户与一个网站相关
- 公司与一个网站相关
- 网站仅与一个用户或公司相关
第三个关系意味着存在一个“用户或公司”实体,该实体
PRIMARY KEY应存储在某处。
要保存它,你需要创建一个能够存储表
PRIMARY KEY一的
website owner实体。该表还可以存储用户和网站共有的属性。
由于这是一对一的关系,因此网站属性也可以存储在此表中。
用户和公司未共享的属性应存储在单独的表中。
要强制正确的关系,你需要做
PRIMARY KEY的的
website复合材料
ownertype作为它的一部分,并强制正确的类型与子表
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)



