在我的程序中,我需要从个人开始制作一个组织结构图,并将他们分组在经理之下,然后将这些经理分组在高级经理之下等......关于数据库我该怎么做?这是一个多对一的关系——我认为这是非法的和不可能的——就像从子表开始——个人——在创建它的父表——经理之前。如果有人可以帮助我指出设计数据库的正确方向,我将不胜感激!
----编辑----这是我的问题的更详细的解释:
假设我的程序的用户首先输入了 35 个他们想在他们将要从事的项目中使用的人。现在,可以创建几个可能的管理职位,并将员工/其他(下级)经理分配给这些职位。用户不必创建任何特定位置,但可以随意选择和分配。唯一的限制是总会有一位高级经理——我们称他为总裁——他应该(但不是必须)只为任何给定的经理(包括总裁)分配 5-10 人。所以在这个例子中,我们从 35 个人和一位总统开始。现在我们开始将这 35 个人分组到团队中,并指定其中一位为经理。假设用户决定有两队 6 人,两队 9 人,一个由 5 人组成的团队 - 每个小组都有一名个人成员被指定为该小组的经理。所以现在我们有 5 个团队,每个团队都有自己的经理,这五位经理现在将被分配给总裁。该程序会放手,但会警告用户最后一个团队中经理的人数少于 5(只有 4)。因此,用户现在(或在任何时候)可以返回并更改组织。所以假设他想解决这个问题并改变团队。于是,他将两支 9 人队伍中的一支打散,并给缺人的队伍分配了一个人。这使得最终计数为 3 个团队,每组 6 人(5 名个人成员和 1 名经理),一组 9 人(8 名独立人员和 1 名经理),以及一组 8 人(7 名独立人员和 1 名经理),并且分配了所有 5 名团队经理给总统。
只有在现实生活中,这才能被进一步分解——具有更多管理级别的巢穴。我怎样才能做到这一点?
下面乔·霍普夫加特纳的回答仍然有效吗?即使稍后会分配角色(在最初创建行之后),我是否可以只创建一个“角色”列?还是随时改变?这个自引用外键可以为空吗?(因为在尚未分配经理的情况下)或者我应该在将个人分配到一个团队后将他们移到一个单独的“团队”表中,一旦他们将经理移到一个“经理”表中'已被分配为经理,然后为引用经理表的团队表添加外键?
另外,我正在使用 MySQL,那么您不能使用自引用 ON UPDATE CASCADE 或 ON UPDATE SET NULL 操作这一事实是否会影响我的特定情况(因为用户无疑会经常更改分配)?
非常感谢你帮我解决这个问题!!!