我怎样才能最好地代表关系数据库中的用户和他们向其报告的经理?

How can I best represent users and the managers they report to within a relational database?

例如,我们有User1, User2, and User3。这三个用户中的每一个都向 Manager1 报告,后者又向 Boss1 报告。所有这些人都在 users table 中,并且由 user_id 唯一标识。我们只需要跟踪 table.

中每个用户的当前经理

如何最好地执行?我提出这个问题是因为它本质上是对同一个 table 的引用,我犹豫要不要将 manager_id 列添加到 users table 因为我们可能 运行 进入像 Boss1 这样的情况,他可能没有直接的经理(我想我们可以选择让这个边缘案例自我引用,例如将 Boss1 的经理设置为他自己)。

只是想在设计时获得一些思考。

假设您确定没有用户拥有超过一位管理员,您可以将 Boss1 的管理员设置为 null。这会明确地表明他没有任何东西,并且会阻止一个简单地走上经理链的程序进入无限循环。

如果您不确定用户将永远只有一个管理员,并且您想满足这种情况,您可以创建一个新的user_managertable 与列 user_idmanager_id,每个都是 users table 的外键并且都是主键的一部分。这样,拥有 2 个管理员的用户将在 table 中有两条记录,而 Boss1 将只具有 none,他是 user_id