哪一种模式能更好地设计用于存储访问权限的数据库?
发布于 2013-02-11 13:00:17
你的第一种选择不像它可能的那样灵活,你的第二种选择也没有它可能的那样的可管理性。
访问控制的标准模式称为基于角色的安全。随着用户数量和所需不同类型权限数量的增加,用户到权限链接的管理将变得越来越困难。
例如,如果您有5个管理员和50个用户,那么如何使每个组的权限保持同步?当您的用户被提升为管理员时,您需要做多少编辑?答案是创建两个交叉点:users-to-roles和roles-to-permissions.

发布于 2013-02-11 09:01:45
对于简单的系统来说,选项1是可以的。一个查询,为您提供一行所需的所有信息。这是非常有效的。效率是好的。它甚至可以被称为“更好”,以满足你的需要。
如果操作权限很可能随着时间的推移以一种不可预测的方式扩展,并且被本质上孤立的模块使用,则选项2是很棒的,这些模块的目的是确认用户只能访问其唯一的子系统。更复杂的是,如果同时检索参与者和访问信息,则必须执行“连接”。但是我喜欢加入,所以我不会说效率太低,而且DBS天生就是擅长它们的。明智地使用索引,它们很好。
从编码的角度来看,使用链接表更为复杂。您已经隔离了数据,因此必须编写更复杂的代码来处理其中的每个不同部分。但是,我个人认为这是“好的”复杂性,因为每个唯一的数据段都有自己独特的依赖代码。允许模块化和一元封装功能。
发布于 2013-02-11 08:59:45
我认为在大多数情况下,解决方案#2要好得多。我将放弃该解决方案中的"isallowed“标志,而只将给定的用户权限插入权限表中。
https://stackoverflow.com/questions/14808619
复制相似问题