0
我正在使用Ruby on Rails,但我认为这个问题可以应用于任何数据库设计。我正在尝试开发我自己的权限系统。使用数组权限
难道设计有一个用户可以编辑的数组吗?即User
具有值为[Articles, Events, Costs]
的can_edit
或具有值为[All]
的User
can_view
。
然后我可以对正在编辑的内容进行检查。或者这是一个糟糕的设计?
我正在使用Ruby on Rails,但我认为这个问题可以应用于任何数据库设计。我正在尝试开发我自己的权限系统。使用数组权限
难道设计有一个用户可以编辑的数组吗?即User
具有值为[Articles, Events, Costs]
的can_edit
或具有值为[All]
的User
can_view
。
然后我可以对正在编辑的内容进行检查。或者这是一个糟糕的设计?
一般来说,你的数据库设计应该被正确地规范化。这意味着你不应该在一行中存储多个值。你可能会好得多由具有三个表
Permission
有列permission_id
和permission_type
并列出了有效的权限User
有user_id
列,列出了设计服务的价值用户User_Permission
是两者之间的映射表。它列permission_id
和user_id
两者定义为外键分别Permission
和User
表
这实际上是真正有用的。但是,我实际上也有一个“网络”类。 “用户”属于“网络”,而“权限”则针对给定的“网络”。 'User'也可以是多个'Networks'的一部分。你可以有一个三重组合键,还是有另一种方式来做到这一点? 或者我有一个'User_Network'表,然后一个外键到'Network_Permission'表? 对不起,如果没有意义。 – dewyze
@JDewzy - 如果'Permission'依赖于'Network',那么你通常需要一个User表,一个User_Network表,一个Network表,一个Network_Permission表和一个Permission。表。 –
然后,将'Permission'连接到'User'? “User_Network”表中存在“Network_Permission”的外键? – dewyze