首页 > 解决方案 > 多角色数据库设计

问题描述

我最近在设计 SQL 数据库时遇到了这个问题。

我想为一所学校创建一个数据库,当然不是所有用户都具有相同的角色或权限。

例如,有老师、校长、学生和家长。

如果我将所有这些放在同一个表中并在表中放置一个角色列,那么我不能随意为特定角色放置任何其他列,例如我不能为学生添加成绩列,因为其他角色没有t有成绩。

此外,我不能将它们放在单独的表中,因为在登录时我无法指定该用户的角色并转到他的表。

做这样的事情的最好方法是什么?

标签: sqldatabaserolesuser-roles

解决方案


在用户表上使用多态性。创建一个包含基本身份验证和常见信息(如电子邮件和凭据)的用户表。现在创建 2 列 authority_type、authority_id(命名可以更改)。

现在为每种类型的新角色或权限创建一个表。例如,在您的情况下,将有一张供老师、校长、学生和家长使用的桌子。都有不同的属性集。

每当保存用户记录时,您将使用它的 authority_type 和它的 authoriy_id (记录另一个表的外键)。


推荐阅读