我有表Users
与ID
, username
, password
&type
列。我想通过创建一个普通用户来添加层次结构,一个可以管理几个普通用户的超级用户。它只有2级。我应该添加一个parent
列并在那里保存超级用户的ID吗?Idk .
正确的设置方法是什么?
我主张尽可能保持简单,所以我认为你的解决方案是一个很好的。parent
列将完成这项工作。
有一些潜在的问题可以在应用程序级别解决,特别是:
- 超级用户家长
添加父用户时,您必须检查该用户是否已经是父用户。您还可以定期检查循环,尽管只要您正确执行其他检查,它们就不应该是可能的。
防止这些问题的另一个相当简单的解决方案是创建另一个表,例如Groups
,其中包含该组的ID和用户ID,该用户ID是该组的超级用户,也是唯一的。然后用户可以有一个groupID列。这可以防止上述两个问题,但它不是规范化的,因为超级用户的groupID列可能与组的超级用户ID列不同。不过,您可以简单地忽略超级用户的groupID列。
如果您知道每个用户只关联一个超级用户,并且您总是从用户搜索到超级用户,那么只需添加额外的parent
列就可以了。
如果这些假设不成立,那么您需要创建一个连接表,将用户连接到他们的父用户。
CREATE TABLE UserParents (
id INT,
user_id int,
parent_user_id int,
)
user_id
和parent_user_id
都是Users
的外键。