2012-03-02 129 views
0

數據庫結構是這樣的:每個用戶創建自己的列表,並有訪問權限分配:降低複雜性

例如

table: user 
attribute: UserID 

table: list 
attribute: ListID 

table: user_list 
attribute: ListID,UserID, Rights 

主要存在兩種權利:閱讀,編輯

一切都正常工作,直到我有權利呼籲市民(每個人都可以編輯) 所以,如果我有100個成員與10名名單,我必須創建1000個用戶ID - 權利:編輯行

規模難以置信地增加。

如何解決這個問題:

1)創建一個名爲公共單獨的表,並把ListID的呢?

2)將行存儲爲ListID,null用戶標識,並且使用Rights'Public'?

哪種方法更好?謝謝。

+1

如果每個人都可以編輯,爲什麼你需要檢查編輯權是否存在? – gangreen 2012-03-02 03:02:17

+0

你是對的。所以如果我想添加'公共'列表,我只需要添加***** ListID ***,用戶名,權利到user_list表?或做的是單獨的?或者檢查user_list和list之間的區別?謝謝。 – user782104 2012-03-02 03:04:46

+0

例如,使用從列表中選擇List *,User_List其中User_List.ListID <> List.ListID來獲取這些公共列表? – user782104 2012-03-02 03:14:16

回答

1

我不知道我自己的情況完全清楚,但是......

如果你想高效地列表公開,你爲什麼不只是在你的名單表中創建一個IsPublic場。檢查清單何時公開。如果列表IsPublic,則不需要檢查用戶特定的權限。

如果你在你的USER_LIST表有關的行數過多,您可以用字段設置它:

UserIDListIDCanEditCanRead

我只能這樣做,如果數量用戶權利不可能繼續增長。我不確定在性能上會有什麼差異。