2012-03-02 204 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

我只能这样做,如果数量用户权利不可能继续增长。我不确定在性能上会有什么差异。