Database design 使用数组获取权限
我正在使用RubyonRails,但我认为这个问题可以应用于任何数据库设计。我正在尝试开发自己的权限系统 拥有一个用户可以编辑的数组是不是很糟糕?i、 e.Database design 使用数组获取权限,database-design,Database Design,我正在使用RubyonRails,但我认为这个问题可以应用于任何数据库设计。我正在尝试开发自己的权限系统 拥有一个用户可以编辑的数组是不是很糟糕?i、 e.用户有一列可以编辑,值为[文章、事件、成本],或者用户可以查看,值为[全部] 然后我可以检查正在编辑的内容。或者这是一个糟糕的设计?一般来说,您的数据库设计应该得到适当的规范化。这意味着您不应该在一行中存储多个值。有三张桌子的设计可能会更好地为您服务 Permission具有列Permission\u id和Permission\u typ
用户
有一列可以编辑,值为[文章、事件、成本]
,或者用户
可以查看,值为[全部]
然后我可以检查正在编辑的内容。或者这是一个糟糕的设计?一般来说,您的数据库设计应该得到适当的规范化。这意味着您不应该在一行中存储多个值。有三张桌子的设计可能会更好地为您服务
具有列Permission
和Permission\u id
,并列出有效的权限Permission\u type
有一个User
列,列出了用户的值User\u id
是两者之间的映射表。它具有列User\u Permission
和permission\u id
,这两个列分别定义为user\u id
和permission
表的外键user
网络
课程。其中用户
属于网络
,并且权限
特定于给定的网络
。用户
也可以是多个网络
的一部分。你可以有一个三重组合键,或者有其他方法可以做到这一点吗?或者我会有一个User\u Network
表,然后是Network\u Permission
表的外键吗?如果这没有意义,很抱歉。@JDewzy-如果权限取决于网络,那么您通常需要用户表、用户网络表、网络表、网络权限表,和权限
表。那么是什么将权限
连接到用户
?User\u Network
表中是否存在Network\u Permission
的外键?@JDewzy-您可以通过User\u Network
将User
加入Network
到Permission
通过Network\u Permission
。如果将权限分配给网络而不是用户,则用户
和权限
之间不应存在直接联系。很抱歉造成混淆。我的意思是用户
可以在网络1中拥有编辑权限
,或者在网络2中拥有删除权限
。但是在给定的网络中可以有自定义的权限。权限对网络
是唯一的,但随后应用于该网络
中的用户。也许角色/权限是更准确的描述?我完全理解你所说的正常化和感谢!我想我一开始描述得很糟糕。那么这更有意义吗?