降低此数据库设计的复杂性

时间:2012-03-02 02:57:00

标签: database database-design

数据库结构是这样的:每个用户都创建了他们的列表,并具有访问权限分配:

例如

table: user
attribute: UserID

table: list
attribute: ListID

table: user_list
attribute: ListID,UserID, Rights

有两种权利:阅读,编辑

一切正常,直到我公开一个权利电话(每个人都可以编辑) 因此,如果我有100个成员,10个列表,我必须创建1000个userID - 权限:编辑行

规模令人难以置信地增加。

如何解决这个问题:

1)创建一个名为public的单独表,并将ListID放入其中?

2)将行存储为ListID,将UserID存储为空,并将权限存储为“公共”?

哪种方法更好?谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定我对你的情况完全清楚,但是......

如果您想有效地公开列表,为什么不在列表中创建IsPublic字段。检查列表是否公开时。如果列表是IsPublic,则不需要检查用户特定权限。

如果您担心user_list表中的行太多,可以使用以下字段进行设置:

UserIDListIDCanEditCanRead

如果用户权限的数量不可能继续增长,我只会这样做。而且我不确定性能会有什么不同。