搜索

首页  >  问答  >  正文

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

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

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

phpcn_u1582phpcn_u15822756 天前1205

全部回复(4)我来回复

  • 某草草

    某草草2017-06-22 11:56:41

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

    回复
    0
  • 高洛峰

    高洛峰2017-06-22 11:56:41

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

    回复
    0
  • 世界只因有你

    世界只因有你2017-06-22 11:56:41

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

    回复
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-22 11:56:41

    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)
    );
    

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

    回复
    0
  • 取消回复