数据库设计确保一对一的关系

时间:2018-04-18 19:27:19

标签: mysql sql database database-design database-schema

我试图理解数据库设计中类表继承的局限性。例如,如果我有这样的模式,我如何确保学校字段表或非盈利表中的多行不引用相同的联系人ID

Contact
--------
id - PK 
fname - String
lname - String
email - String

School Field
--------------
id - PK
contact_id - FK
notes - String

Non Profit Field
-----------------
id - PK
contact_id - FK
donation - unsigned int

1 个答案:

答案 0 :(得分:0)

我会推荐一种不同的方法。

Entity
-------------- 
id - PK 
Field_Type_ID - FK 
contact_id - FK 
notes - String
donation - unsigned int (nullable)

Contact
-------------- 
id - PK 
fname- String
lname- String
email- String

Field_Type
-------------- 
id - PK 
Description- FK 
notes - String

通过这样做,如果您最终使用更多“字段”类型,则无需添加更多表。您只需将新记录添加到Field_Type表中。然后,要强制执行所需的行为,请在Entity上添加一个查看contactID和FieldTypeID的唯一约束。这将确保每个联系人只能链接一次字段类型。

https://www.w3schools.com/sqL/sql_unique.asp