我们有一个具有复杂用户权限的系统,用于确定用户可以在应用程序中看到的联系人,我正在研究构建表的最佳方式,以使我们能够扩展。权限太复杂,无法动态解决,因此需要写入表格,然后在执行管理功能或添加/编辑/删除联系人时更新表格。
联系人表格中有1000万条记录。我的第一个想法是创建一个contactUserLink表,它将具有contactUserLinkID,contactID,userID和contactUserLinkID上的聚簇索引,以及contactiD和userID上的非聚集索引,以便快速搜索。
我对此的担忧是:
如果我们有200个用户并且他们对大部分数据都有不同的访问权限,那么contactUserLink可能会膨胀到数百万行。
随着联系人的编辑和管理层对规则的更改发生,此表中会有大量添加/编辑/删除。
管理员更改可能导致大量删除/插入,因为用户权限被重新处理,如果他们花了很长时间,可能会让用户无法访问。
如果添加了新用户并且他可以访问所有记录,那么在该表中写入1000万条记录可能不会很快?
我们正在使用SQL 2008。
我希望我能够解释这一点,以便它有所帮助。
对此的任何帮助将不胜感激。
答案 0 :(得分:0)
这种细粒度的用户权限并不理想。正如#4中所述,编写1000万条记录以便为所有联系人提供管理员访问权限绝对不可扩展。您是否尝试过基于角色的权限?这是您的方案中的一个选项吗?