1

我有Users带有ID, username, password&type列的表格。我想通过创建一个普通用户来添加层次结构,一个可以管理一些普通用户的超级用户。只有2级。我应该添加一parent列并将超级用户的 ID 保存在那里。同上。

设置它的正确方法是什么?

4

2 回答 2

1

如果您知道每个用户只会有一个与之关联的超级用户,并且您将始终从用户搜索到超级用户,那么只需添加一个额外的parent列即可。

如果这些假设不成立,那么您将需要创建一个连接表,将用户连接到他们的父级。

CREATE TABLE UserParents (
  id INT,
  user_id int,
  parent_user_id int,
)

user_id, 并且parent_user_id都是 的外键Users

于 2013-06-05T05:47:17.440 回答
1

我会提倡尽可能简单,所以我认为你的解决方案是一个很好的解决方案。一个parent专栏将完成工作。

您可以在应用程序级别解决一些潜在问题,特别是:

  • 超级用户父母的父母
  • 循环

添加父母时,您必须检查用户是否还不是父母。您还可以定期检查周期,但只要您正确执行其他检查,它们就不应该是可能的。

另一个可以防止这些问题的相当简单的解决方案是拥有另一个表,假设Groups它具有组的 ID 和一个用户 ID,该用户 ID 是该组的超级用户并且也是唯一的。然后用户可以有一个 groupID 列。这可以防止上述两个问题,但它没有被规范化,因为超级用户的 groupID 列可能与组的超级用户 ID 列不同。不过,您可以简单地忽略超级用户的 groupID 列。

于 2013-06-05T05:49:07.693 回答