[英]MySQL many-to-many table relationship with three entities
三个记录表:
帐户、用户和角色
用户可以属于具有不同角色的多个帐户。
目前,我有一个连接表:
accounts_users_roles(具有三列用于每个表 PK 的 FK 关系。)
此表中的主键是 (accounts.id,users.id,roles.id)
是否有更有效的方式来建立这些关系?
编辑:角色和用户可以由帐户共享。 帐户分配用户角色。
从评论中,我了解到业务规则是用户对多个帐户具有多个角色。 Joe 是 ConHugeCo 帐户的经理,同时也为 EvilInc 提供客户服务。 凯西是美发俱乐部的总裁,也是客户。
是的,一个表是合适的。
account user role
ConHugeCo Joe Manager
EvilInc Joe CustomerService
HairClub Kathy President
HairClub Kathy Client
create table accounts_roles_users (
account_id integer not null references accounts(id) on delete cascade,
role_id integer not null references roles(id) on delete cascade,
user_id integer not null references users(id) on delete cascade,
unique(account_id, role_id, user_id)
);
on delete cascade
确保当用户或帐户或角色被删除时,它们的连接表条目也被删除。 我们通过使用户/帐户/角色组合成为唯一来避免重复条目。
您可能希望允许 user_id 为 null 以指示未填充的角色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.