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



数据库结构如下:每个用户都创建了自己的列表,并分配了访问权限:

例如

table: user
attribute: UserID
table: list
attribute: ListID
table: user_list
attribute: ListID,UserID, Rights

有两种权限:读取、编辑

一切都很好,直到我有一个权利呼吁公开(每个人都可以编辑)因此,如果我有100个成员和10个列表,我必须创建1000个用户ID-权限:编辑行

这是一个令人难以置信的规模增长。

如何解决这个问题:

1) 是否创建名为public的单独表并将ListID放入其中?

2) 是否将行存储为ListID、null UserID和权限为"Public"?

哪种方法更好?非常感谢。

我不确定我是否完全清楚你的情况,但是。。。

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

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

UserIDListIDCanEditCanRead

只有当用户权限的数量不太可能继续增长时,我才会这么做。我不确定性能会有什么不同。

最新更新