多表设计,外键
1.外键约束
表是用来保存显示生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,向这种约束就叫做外键约束
create table dept(
id int primarykey auto_increment,
name varchar(20)
);
insert into deptvalues(null,'财务部'),(null,'人事部'),(null,'销售部'),(null,'行政部');
create table emp(
id int primarykey auto_increment,
namevarchar(20),
dept_id int,
foreign key(dept_id)references dept(id)
);
insert into empvalues(null,'奥巴马',1),(null,'哈利波特',2),(null,'本拉登',3),(null,'朴乾',3);
如图所示,有2张表,一个是单位部门表,一个是员工表。有四个部门,四位员工。每个部门可以有多个员工,但是每个员工都属于一个部门。如果没有外键约束,我们把4号部门删除掉,春哥和曾哥就找不到部门了。所以在员工表中设一个外键约束的部门ID列,这样的列就叫外键。这个部门ID会时刻盯着部门表中的部门ID列,如果我们想删除四号部门,因为外键约束,就会报错。如果员工表想增加一个新员工,dept-ID设为5,因为部门表没有5号部门,所以也会报错。
一对多:在多的一方保存一的一方的主键做为外键(部门员工)
一对一:在任意一方保存另一方的主键作为外键(教室名称,教室位置)
多对多:创建第三方关系表保存两张表的主键作为外键,保存他们对应关系(老师学生)