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

wpcxdonn  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(324)

我试图理解数据库设计中类表继承的局限性。例如,如果我有这样一个模式,如何确保school field表或non-profit表中的多个行不引用相同的联系人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
uqzxnwby

uqzxnwby1#

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

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

通过这样做,如果最终得到更多的“字段”类型,则不需要添加更多的表。您只需在字段类型表中添加一条新记录。然后,为了实施所需的行为,您在实体上添加了一个惟一的约束,该约束同时查看contactid和fieldtypeid。这将确保每个联系人只能链接到一个字段类型一次。
https://www.w3schools.com/sql/sql_unique.asp

相关问题