如何使用需要引用自身的表来设计数据库?

XL.*_*XL. 4 database-design

我正在构建一个数据库并遇到了一个我似乎无法解决的问题.数据库比图中的复杂得多,但问题可以在下面的表结构中提炼出来.

问题是每个员工都有经理,每个经理都是员工.似乎这些表必须互相参考.但是,当我进行此设置时,这似乎无法正常工作.

替代文字

我正在使用cakephp.这种关系类型的名称是什么?这是错误的设计吗?这种情况的适当设计是什么?我希望它尽可能自动地工作.

ash*_*cus 7

如果我正确理解了这个问题,那么根本不需要Managers表.由于经理是员工,因此没有理由不将经理存储在Employees表中.只需在Employees表中添加一个字段,该字段manager_id对于任何给定的行引用该员工的管理器(这是同一个表中的另一行).

这被称为递归的一对一关系,这是很常见的.在您的情况下,它还将阻止您必须在两个实体(名称,密码,职位等)之间定义重复字段.

  • 我也可以这样做,但是我会添加一个“ Manager”布尔标志来启用“只有Managers可以是Managers”业务规则,并为Manager属性提供一对一的扩展表。 (2认同)