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
和superior_emp_id which is a foreign key
引用同一个表中的emp_id
在同一个表中创建引用主键的外键为什么这样的数据库设计可以帮助我?
答案 0 :(得分:8)
这就是你如何创建一个层次结构,将确保你没有一个没有父母的孩子也可以确保你不能让一个孩子的父母无效。
另见Should you make a self-referencing table column a foreign key?
答案 1 :(得分:6)
它应该表明一个员工可以有一个优越的
emp_id, fname, lname, superior_emp_id
----------------------
1, 'Big', 'Boss', null,
2, 'Viswanathan', 'Iyer', 1
在这个例子中,Big Boss是你的老板,他自己也没有老板。