【问题标题】:Self-referential relationship table design: one or two tables?自引用关系表设计:一张表还是两张表?
【发布时间】:2016-03-05 01:18:01
【问题描述】:
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 存储有老板-雇员关系的工人的 id。

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

【问题讨论】:

  • 在第一种情况下,每个员工只能有一个老板。在第二个示例中,您可以为每个员工建立无限数量的关系(从和到)。每个员工可以有多个老板。

标签: mysql sql self-referencing-table


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 2011-07-28
    • 2012-11-16
    • 1970-01-01
    • 2012-11-10
    • 2014-01-31
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多