了解为什么外键引用主键在同一个表中?
create table employee
(emp_id smallint unsigned not null auto_increment,
fname varchar(20) not null,
lname varchar(20) not null,
start_date date not null,
end_date date,
superior_emp_id smallint unsigned,
dept_id smallint unsigned,
title varchar(20),
assigned_branch_id smallint unsigned,
constraint fk_e_emp_id
foreign key (superior_emp_id) references employee (emp_id),
constraint fk_dept_id
foreign key (dept_id) references department (dept_id),
constraint fk_e_branch_id
foreign key (assigned_branch_id) references branch (branch_id),
constraint pk_employee primary key (emp_id)
);
我学习这个Example,我注意到在employee table
了解为什么外键引用主键在同一个表中?
emp_id is primary key
,并在同一个表
到emp_id
superior_emp_id which is a foreign key
引用创建外键,其在同一个表为什么主键引用这样的数据库设计可以帮助我吗?
这就是你将如何创建一个层次结构,
将确保你不能有一个没有父母的孩子
也可以确保你不能有一个孩子与一个无效的父母。
也Should you make a self-referencing table column a foreign key?
对不起,应该说“还可以确保你不能有一个孩子有一个无效的父母”(关于参照完整性本身的想法而不是这个具体情况) – Treborbob
“这就是你将如何创建一个层次结构” - 我同意它*应该*是一个层次结构,但它不是一棵树吗? – onedaywhen
@onedaywhen - 你为什么认为树不是一个层次结构? – MatBailie
上级也是员工。所以emp_id = 2的上级可能是emp_id = 1;基本上与同一个表中的行有1:1的关系。 – Andomar
1到n实际上。一个上级可以有许多下属。 – Mchl