请问数据库的中间关联表,有没有必要单独设置一列为主键?

发布于 2022-09-05 05:27:34 字数 94 浏览 29 评论 0

比如常见的角色和用户关联的角色用户关联表,字段如下:
role_id
user_id

当有这两个字段的时候是否有必要单独设置一列id来作为主键?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

趁微风不噪 2022-09-12 05:27:35

user和role多对多关联的话:

CREATE TABLE user_role (
    user_id INTEGER NOT NULL,
    role_id INTEGER NOT NULL,
    PRIMARY KEY (user_id, role_id),
    KEY (role_id)
);

这样,既可以查到某个用户的所有权限,又可以查到拥有某个权限(例如超级管理员)的所有用户。

我一直都在从未离去 2022-09-12 05:27:35

mysql innodb(索引组织表)表中如果没有显式的创建主键,会内部创建隐式的主键!
最好创建显式的主键,并且是单调递增的主键;加快插入效率

↘人皮目录ツ 2022-09-12 05:27:35

每一个表都应该设置一个主键,并且最好是自增的主键

2022-09-12 05:27:35

就数据库设计的范式化来说,我觉得如果这2个id能组成主键的化就没有必要再加个id了。

孤者何惧 2022-09-12 05:27:34

没必要。
但是你可以将两个字段都建立索引以加快查询速度。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文