首頁  >  問答  >  主體

mysql - 請問資料庫的中間關聯表,有沒有必要單獨設定一列為主鍵?

例如常見的角色和使用者關聯的角色使用者關聯表,欄位如下:
role_id
user_id

當有這兩個欄位的時候是否有必要單獨設定一列id來當主鍵?

phpcn_u1582phpcn_u15822676 天前1112

全部回覆(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
  • 取消回覆