database-design - 如何设计带有需要引用自身的表的数据库?

标签 database-design

我正在构建一个数据库并遇到了一个我似乎无法解决的问题。数据库比图片复杂得多,但问题可以归结为下面的表结构。

问题是每个员工都有一个经理,每个经理都是一个员工。这些表似乎必须相互引用。但是,当我设置它时,这似乎无法正常工作。

alt text

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

最佳答案

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

这称为递归的一对一关系,而且很常见。在您的情况下,它还可以防止您在两个实体(姓名、密码、职位等)之间定义重复的字段。

关于database-design - 如何设计带有需要引用自身的表的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589587/

相关文章:

mysql - 如何在 MySQL(或任何其他 SQL)中存储和计算动态表达式

sql - 您通常将哪种 T-SQL 数据类型用于权重和长度?

mysql - 通常/大多数情况下将 NULL 列存储在一个表中或创建 1 :1 relationship?

database - 查询与 View

sql - 使用 && 加入 TSTZRANGE 时,Postgresql 9.4 查询变得越来越慢

php - 带播放列表的视频数据库的数据库设计

mysql - 如何为同一数据库中的所有表设置唯一的主键

database-design - Web 应用程序中的数据库设计技巧

具有多个多对多关系的数据库设计

sql - 我应该使用外键来显示 SQL 中的树关系吗