我的项目需要有很多管理员,其中只有一个拥有 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/