我們在應用程序中有「用戶」和「學習」實體,存儲在各自的表中。 一項研究代表了一種研究和收集到的數據。 他們有多對多的關係,所以我們需要一個鏈接表:studies_users。MySQL表(重新)設計
我們爲用戶分配角色。有一些「正常」的角色,這是依賴研究的,所以對於同一個用戶,他們可以是不同的,這取決於所選擇的研究。這意味着這些角色必須作爲studies_users表的一部分進行存儲。
然而,對於一個新的「特殊」角色的請求,我們稱它爲superadmin,這基本上意味着用戶在各種研究中都具有所有可能的角色(或權利)。這意味着這樣的屬性不必存儲在studies_users鏈接表中,它足以將其存儲在用戶表中的新列(例如is_superadmin)中,因爲它適用於所有研究。但是,如果我將它與其他角色(在用戶表中)分開存儲,它似乎有點不合邏輯並可能導致處理相關邏輯的代碼中出現不必要的複雜性。
我應該在鏈接表還是在用戶表中存儲這樣的屬性? 爲什麼?
爲表一些非常基本的SQL:
CREATE TABLE `users` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`EMAIL` varchar(100),
PRIMARY KEY (`ID`)
);
CREATE TABLE `studies` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`NAME` varchar(150),
PRIMARY KEY (`ID`)
);
CREATE TABLE `studies_users` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`STUDY_ID` int(10),
`USER_ID` int(10),
`ROLE_ID` tinyint(3),
PRIMARY KEY (`ID`)
);
公平的問題,編輯帖子 –
你可以發佈'create table' sql嗎? –
如果您提供一些樣本數據,這將有所幫助。我還不知道什麼樣的信息角色和研究。 –