我有以下设计。每个用户都有自己的联系人,自己的主机,并将它们分配给只属于他的域。
我想确保您分配给域的主机属于该域分配给的用户。
这是我必须在我的应用程序逻辑中确保的东西吗?
如果我设置domains.user_id
foreign key
为参考host.user_id
,user_id.id
它会消除我的问题吗?
顺便说一句,谁能建议我更好地设计我的架构?
我有以下设计。每个用户都有自己的联系人,自己的主机,并将它们分配给只属于他的域。
我想确保您分配给域的主机属于该域分配给的用户。
这是我必须在我的应用程序逻辑中确保的东西吗?
如果我设置domains.user_id
foreign key
为参考host.user_id
,user_id.id
它会消除我的问题吗?
顺便说一句,谁能建议我更好地设计我的架构?
当设计具有“菱形”形状时,这是一个相当普遍的问题。参见类似问题:
多对多和弱实体
对于 MySQL,我会使用这样的东西:
(0)请注意,我更喜欢
user_id
作为主键的名称users
而不是id
所有表的名称。我发现 SQL 代码在其他方面完全令人困惑(而且您可以使用JOIN ... USING (tablename_id)
语法)。(1)表中的额外
UNIQUE
约束以及表hosts
中contacts
的外键所需要的domains
。(2)表中的两个
FOREIGN KEY
约束domains
更改为使用组合键(包括user_id
)。桌子
users
桌子
contacts
桌子
hosts
桌子
domains