自参照关系 table 设计:一个还是两个 table?
Self-referential relationship table design: one or two tables?
CREATE TABLE Employee
(
id INT,
boss INT REFERENCES Employee(id),
PRIMARY KEY (id)
);
一个员工可以有多个老板,一个老板可以有多个员工。
这个table的功能和这个双table的设计一样吗?
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)
);
第二个 tableManagerRelation 存储具有老板-雇员关系的工人的 ID。
请问这两个设计对吗?如果正确,它们在功能上是否完全相同?
两者的设计截然不同。第一种要求每个员工(最多)有一个老板,尽管每个老板可以有很多员工。
第二种允许员工拥有多个老板。
从你对问题的描述来看,第二种形式是更合适的数据模型。根据我对老板与员工关系的理解,我希望第一个是正确的。
CREATE TABLE Employee
(
id INT,
boss INT REFERENCES Employee(id),
PRIMARY KEY (id)
);
一个员工可以有多个老板,一个老板可以有多个员工。
这个table的功能和这个双table的设计一样吗?
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)
);
第二个 tableManagerRelation 存储具有老板-雇员关系的工人的 ID。
请问这两个设计对吗?如果正确,它们在功能上是否完全相同?
两者的设计截然不同。第一种要求每个员工(最多)有一个老板,尽管每个老板可以有很多员工。
第二种允许员工拥有多个老板。
从你对问题的描述来看,第二种形式是更合适的数据模型。根据我对老板与员工关系的理解,我希望第一个是正确的。