sql - 多角色数据库设计
问题描述
我最近在设计 SQL 数据库时遇到了这个问题。
我想为一所学校创建一个数据库,当然不是所有用户都具有相同的角色或权限。
例如,有老师、校长、学生和家长。
如果我将所有这些放在同一个表中并在表中放置一个角色列,那么我不能随意为特定角色放置任何其他列,例如我不能为学生添加成绩列,因为其他角色没有t有成绩。
此外,我不能将它们放在单独的表中,因为在登录时我无法指定该用户的角色并转到他的表。
做这样的事情的最好方法是什么?
解决方案
在用户表上使用多态性。创建一个包含基本身份验证和常见信息(如电子邮件和凭据)的用户表。现在创建 2 列 authority_type、authority_id(命名可以更改)。
现在为每种类型的新角色或权限创建一个表。例如,在您的情况下,将有一张供老师、校长、学生和家长使用的桌子。都有不同的属性集。
每当保存用户记录时,您将使用它的 authority_type 和它的 authoriy_id (记录另一个表的外键)。
推荐阅读
- gradle - 收到垃圾邮件“启动 Gradle 守护程序,在 x 秒内启动”并填满我的全部记忆
- for-loop - App Script For Loop 很慢 需要优化代码以加快更新速度
- docker - 如何识别 PREvant 管理的 Docker 容器
- javascript - 在 Sequelize 的 WHERE 子句中使用字符串之前,我可以在 javascript 中将字符串转换为 utf8_general_ci 吗?
- python - cmd中streamlit错误的解决方案是什么?
- web-scraping - “requests.get”/beautifulSoup 在同一个 URL 上每次调用都会返回不同的结果
- java - 写入和读取二进制文件
- .net - Amazon SP-API 如何上传 Feed 数据?
- c - 如何将 printf 的输出保存到文本文件中?
- angular - 如何在 PrimeNg 树中通过 id 查找节点?