首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂多到多MySQL表中的主键

复杂多到多MySQL表中的主键
EN

Stack Overflow用户
提问于 2017-10-05 11:48:22
回答 1查看 78关注 0票数 1

我读过,当设计一个简单的多表时,处理主键的最好方法是在两列上设置主键。这就是我如何在表中这样做的,该表将用户分配给工作组。但是现在,我有了更复杂的表,它描述了在访问共享FSO (文件系统对象=文件夹或文件)时,用户或工作组拥有什么权限。我使用了来自this answer的解决方案,所以我使用两个列来指定‘FSO’,两个列用于指定允许的用户或工作组。我的桌子是这样的:

代码语言:javascript
复制
id INT (primary key)
shared_file INT (foreign key)
shared_folder INT (foreign key)
allowed_user INT (foreign key)
allowed_workgroup INT (foreign key)
permission TINYINT
CONSTRAINT CHECK (shared_file IS NOT NULL OR shared_folder IS NOT NULL)
CONSTRAINT CHECK (allowed_user IS NOT NULL OR allowed_workgroup IS NOT NULL)

但是现在我想出了一个想法,我实际上不需要为id增加一个列,基本上这个表对很多人来说也是很多的。但我不知道是否应该在所有4列上设置主键,也不知道如何做才能保持一致性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 11:55:56

保持很简单。不要将标准化概念与业务/应用程序需求混在一起。最好在每个表中有一个基于整数的自动递增列作为主键,并在其他表中引用它。

如果需要检查所述列组合的唯一性,则应该使用具有唯一约束的复合索引。业务或应用程序需求不断变化。在出现这种情况时,您不希望对主键进行更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46584857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档