文章詳情頁(yè)
mysql - 請(qǐng)問(wèn)數(shù)據(jù)庫(kù)的中間關(guān)聯(lián)表,有沒(méi)有必要單獨(dú)設(shè)置一列為主鍵?
瀏覽:180日期:2022-06-11 09:18:21
問(wèn)題描述
比如常見(jiàn)的角色和用戶關(guān)聯(lián)的角色用戶關(guān)聯(lián)表,字段如下:role_iduser_id
當(dāng)有這兩個(gè)字段的時(shí)候是否有必要單獨(dú)設(shè)置一列id來(lái)作為主鍵?
問(wèn)題解答
回答1:沒(méi)必要。但是你可以將兩個(gè)字段都建立索引以加快查詢速度。
回答2:每一個(gè)表都應(yīng)該設(shè)置一個(gè)主鍵,并且最好是自增的主鍵
回答3:就數(shù)據(jù)庫(kù)設(shè)計(jì)的范式化來(lái)說(shuō),我覺(jué)得如果這2個(gè)id能組成主鍵的化就沒(méi)有必要再加個(gè)id了。
回答4:user和role多對(duì)多關(guān)聯(lián)的話:
CREATE TABLE user_role ( user_id INTEGER NOT NULL, role_id INTEGER NOT NULL, PRIMARY KEY (user_id, role_id), KEY (role_id));
這樣,既可以查到某個(gè)用戶的所有權(quán)限,又可以查到擁有某個(gè)權(quán)限(例如超級(jí)管理員)的所有用戶。
排行榜

熱門(mén)標(biāo)簽
網(wǎng)公網(wǎng)安備