Database design 使用数组获取权限

Database design 使用数组获取权限,database-design,Database Design,我正在使用RubyonRails,但我认为这个问题可以应用于任何数据库设计。我正在尝试开发自己的权限系统 拥有一个用户可以编辑的数组是不是很糟糕?i、 e.用户有一列可以编辑,值为[文章、事件、成本],或者用户可以查看,值为[全部] 然后我可以检查正在编辑的内容。或者这是一个糟糕的设计?一般来说,您的数据库设计应该得到适当的规范化。这意味着您不应该在一行中存储多个值。有三张桌子的设计可能会更好地为您服务 Permission具有列Permission\u id和Permission\u typ

我正在使用RubyonRails,但我认为这个问题可以应用于任何数据库设计。我正在尝试开发自己的权限系统

拥有一个用户可以编辑的数组是不是很糟糕?i、 e.
用户
有一列可以编辑,值为
[文章、事件、成本]
,或者
用户
可以查看,值为
[全部]


然后我可以检查正在编辑的内容。或者这是一个糟糕的设计?

一般来说,您的数据库设计应该得到适当的规范化。这意味着您不应该在一行中存储多个值。有三张桌子的设计可能会更好地为您服务

  • 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中拥有
删除权限
。但是在给定的网络中可以有自定义的
权限。权限对
网络
是唯一的,但随后应用于该
网络
中的用户。也许角色/权限是更准确的描述?我完全理解你所说的正常化和感谢!我想我一开始描述得很糟糕。那么这更有意义吗?