2013-06-05 101 views
1

我有表UsersID,username,password & type列。我想通过创建一个普通用户来添加层次结构,这是一个可以管理少数普通用户的超级用户。它只有2级。 我应该添加一个parent列并保存超级用户的ID。 IDK。用户拥有/管理其他用户

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

回答

1

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

有,你可以在应用层解决潜在的问题,特别是:

  • 超级用户父母的父母
  • 周期

当增加一个家长,你必须检查用户不是父母。您也可以定期检查周期,但只要您正确执行其他检查,就不应该有可能。

另一个可以防止这些问题的简单解决方案是拥有另一个表格,比如说Groups,其中包含组的ID和用户ID,该用户ID是该组的超级用户,也是唯一的。然后用户可以拥有一个groupID列。这样可以避免上述两个问题,但由于超级用户可能拥有与组超级用户标识列不同的groupID列,因此未对其进行标准化。不过,您可以忽略超级用户的groupID列。

1

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

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

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

user_id,并parent_user_id都是外键Users

相关问题