1.1.1 外键约束
Create database day16;
Use day16;
创建部门表:
create table dept(
did int primary key auto_increment,
dname varchar(20)
);
insert into dept values (null,'研发部');
insert into dept values (null,'教研部');
insert into dept values (null,'市场部');
创建员工表:
create table emp(
eid int primary key auto_increment,
ename varchar(20),
email varchar(20),
eprice double
);
insert into emp values (null,'张三','zs.itcast.cn',4500);
insert into emp values (null,'李四','ls.itcast.cn',5500);
insert into emp values (null,'王五','ww.itcast.cn',6500);
insert into emp values (null,'赵六','zl.itcast.cn',7500);
现在描述部门和员工之间关系:
* 需要在员工表中添加一个字段.字段就是部门编号!!!
alter table emp add dno int;
* 修改员工添加所对应部门:
update emp set dno = 1 where eid = 1;
update emp set dno = 2 where eid = 2;
update emp set dno = 3 where eid = 3;
update emp set dno = 3 where eid = 4;
* 现在市场部不景气,删除市场部,删除了市场部,那么市场部下属员工要如何处理?
* 如果现在删除部门,那么员工还存在而且还指向的部门是刚删除的那个!!!
* 必须使用外键约束:
* 单表约束的作用:用来保证数据的完整性.
* 外键约束:保证多个表之间的数据完整性.
* foreign key:外键约束
* alter table emp add foreign key (dno) references dept(did);
1.1.2 多表设计中的三种实体关系:
一对多:
一个部门可以对应多个员工,一个员工只能属于一个部门!
一个客户可以对应多个订单,一个订单只能属于一个客户!
* 一对多关系建表原则:
* 需要在多的一方添加一个字段,作为外键指向一的一方主键!
多对多:
一个学生可以选择多门课程,一个课程可以被多个学生所选择的!
* 多对多关系建表原则:
* 需要创建第三张表,第三张表中需要两个字段,这两个字段分别作为外键指向多对多双方的主键!
一对一:(使用比较少)
一个公司只能对应一个地址,一个地址也只能对应一个公司!
一对一的关系式比较少用!
* 公司表:地址是公司的表的字段.
* 一对一的关系的建表原则:
* 主键对应:
* 唯一外键对应: