mysql - 自引用关系表设计 : one or two tables?

标签 mysql sql self-referencing-table

CREATE TABLE Employee 
(
     id        INT,
     boss      INT REFERENCES Employee(id),
     PRIMARY KEY (id)
);

一名员工可以拥有多个老板,一名老板可以拥有多名员工。

此表的功能与此双表设计相同吗?

  CREATE TABLE Employee 
    (
         id        INT,         
         PRIMARY KEY (id)
    );

Create table ManagerRelation (
  id_from int NOT NULL,
  id_to int NOT NULL, 
  PRIMARY KEY (id_from, id_to),
  FOREIGN KEY (id_from) REFERENCES Employee(id),
  FOREIGN KEY (id_to) REFERENCES Employee(id)
);

第二个表 ManagerRelation 存储具有老板-雇员关系的 worker 的 ID。

我的问题是,这两个设计对吗?如果正确,它们的功能完全相同吗?

最佳答案

这两种设计有很大不同。第一个要求每个员工(最多)有一个老板,尽管每个老板可以有很多员工。

第二个允许员工拥有多个老板。

从你对问题的描述来看,第二种形式是更合适的数据模型。根据我对老板与员工关系的理解,我认为第一个是正确的。

关于mysql - 自引用关系表设计 : one or two tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35808840/

相关文章:

php - 如何使用 PHP Load Data Infile 将表的当前副本替换为新副本?

php - 检查用户是否更改了多个表中的任何数据

mysql - 如何在 mysql 中进行原子更新和选择查询?

MySQL sum() 来自多个表

mysql - 如何在自引用表中添加记录?

php - mysql,自上次登录列表以来的时间

mysql - 在没有唯一索引/约束的情况下防止 MySQL 中的重复行?

sql - 内连接与笛卡尔积的性能

sql - 自引用表 SQL 查询

java - 如何改变hibernate中sql的执行顺序