database - 我应该如何在数据库中表示唯一的 super 管理员权限?

标签 database relational-database

我的项目需要有很多管理员,其中只有一个拥有 super 管理员权限。

在数据库中表示它的最佳方式是什么?

最佳答案

有几种方法可以做到这一点。

第 1 点:在你的管理员(或用户)表中有一列名为 IsSuperAdmin 并有一个插入/更新触发器以确保在任何给定时间只有一个设置了它。

第 2 点:在您的表中有一个 TimestampWhenMadeSuperAdmin 列。然后,在您的查询中找出它是谁,使用类似的东西:

select user_id from users
where TimestampWhenMadeSuperAdmin is not null
order by TimestampWhenMadeSuperAdmin desc
fetch first 1 row only;

编号 3/4:使用编号 1 或编号 2 中的触发器或最后一个人拥有权力的方法,将 SuperAdmin 用户 ID 放入单独的表中。

就个人而言,我喜欢数字 2,因为它可以为您提供所需的东西而无需不必要的触发器,并且有一个关于在任何给定时间谁拥有权力的审计跟踪(尽管不是完整的审计跟踪,因为它只会存储某人成为 super 管理员的最近时间)。

第 1 个问题是,如果您只是清除当前的 SuperAdmin,该怎么办。要么你必须把权力交给别人,要么没有人拥有。换句话说,您可能会陷入没有 super 管理员的境地。 3 号和 4 号的额外表格只会让事情变得复杂。

关于database - 我应该如何在数据库中表示唯一的 super 管理员权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509026/

相关文章:

mysql - 在线商店的数据库

c# - 在 C# 代码中组织数据库更改跟踪的方法

relational-database - 1NF 到底是什么?

php - 基本 MYSQL/PHP 事件注册(数据库关系)

mysql - 连接mysql中的两列

sql-server - 如何用随机数据填充我的数据库的所有表?

Mysql:如果父状态更新,则更改所有子记录的状态

mysql - 将所有字段添加到另一个表的最快方法?

java - 如何使用带有用户、组和权限的简单权限系统的 JPA?

mysql - 如果一个值在一个表中但不在另一个表中,如何加入并给出默认值?