0

我有一个数据库,通常用户是中心对象。
在数据库中,我有一个表rolesusers in roles因此我可以在站点上为用户提供不同的权限。
但现在我有一个疑问。
我之前看到过一个具有这样结构的数据库(用户与其他表的关系为 1:1):

User{UserId, Username, Email etc.}
Admin{UserId, some specific columns}
Child{UserId, some specific columns}
Admin{Parent, some specific columns}

和其他表连接到用户不是通过用户表而是通过Admin, Child and admin.
因为现在我设计我的数据库我有用户和用户可以Admin, CompanyManager and Professor
我想知道我应该像上面展示的那样设计表格还是仅仅依靠角色?
第一种方法的优点是什么?
而且在我的商业模式中,用户不必是公司经理或教授,所以这实际上是 1 对 0 或 1 设计。
用这样的场景设计数据库的好方法是什么?

4

2 回答 2

1

为某些类型的用户提供特定表的好处是存储仅与该类用户相关的信息。

在你的例子中,

  • 也许所有用户都会有一个经理 - 所以经理 ID 会出现在用户列中。
  • 经理将有权查看某些信息,因此这将通过角色来处理。
  • 只有教授才有 Subject 或“HasTenure”属性。所以这些信息会放在教授表中。使用这种方法,您可以避免在用户表中包含“主题”列,因为它只适用于特定的用户子集。因此,您避免了 users 表中的功能依赖,以及违反第 3 范式。
于 2013-10-13T16:48:29.823 回答
0

我更喜欢这种方法:

在此处输入图像描述

通过这种方式,您可以轻松地将角色分组并分配给用户。

于 2013-10-13T16:42:05.967 回答