将我的外键放在哪里以获得最佳数据库设计?
Posted
技术标签:
【中文标题】将我的外键放在哪里以获得最佳数据库设计?【英文标题】:Where to put my foreign keys for a best database design? 【发布时间】:2014-04-17 20:40:30 【问题描述】:我有一个小问题。我要设计一个数据库模型,其中一部分是三个表,分别命名为 Room、Client 和 Employee。规则如下:一个房间只能由一位客户或一位员工使用。不是都。因此,我不确定在 Room 表中放置两个引用 Employee 和 Client 的可选外键是否更好,或者在 Client 和 Employee 中放置 Room 的可选外键是否更好。使用最后一个解决方案,我将在 Room 表中添加一个 CHAR,指示本地是否被占用。选项 A 还是 B?或任何其他建议?谢谢!
【问题讨论】:
我会使用Room
表中的两个可选外键和一个类似 XOR 的约束,如下所示:***.com/questions/11127356/…。它比其他方式更好地模拟您的一对一关系,多个Clients
或Employees
可以引用相同的Room
,除非您在两个表中进行限制。然后你仍然必须以某种方式处理要么-Client
-or-Employee
-rule..
【参考方案1】:
根据您指定的规则,您需要room
表中的外键。
向employee
和client
表添加外键不会对多个员工或多个客户使用的房间实施任何限制。
【讨论】:
以上是关于将我的外键放在哪里以获得最佳数据库设计?的主要内容,如果未能解决你的问题,请参考以下文章