外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)
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 多表设计中的三种实体关系:
一对多:
一个部门可以对应多个员工,一个员工只能属于一个部门!
一个客户可以对应多个订单,一个订单只能属于一个客户!
* 一对多关系建表原则:
* 需要在多的一方添加一个字段,作为外键指向一的一方主键!
多对多:
一个学生可以选择多门课程,一个课程可以被多个学生所选择的!
* 多对多关系建表原则:
* 需要创建第三张表,第三张表中需要两个字段,这两个字段分别作为外键指向多对多双方的主键!
一对一:(使用比较少)
一个公司只能对应一个地址,一个地址也只能对应一个公司!
一对一的关系式比较少用!
* 公司表:地址是公司的表的字段.
* 一对一的关系的建表原则:
* 主键对应:
* 唯一外键对应:
最新文章
- Spring映射器、适配器、解析器
- Windows Store App JavaScript 开发:WinJS库控件
- what is SVD and how to calculate it
- HtmlHelper使用大全
- Activity生命周期(一) 暨 帮助文档的使用
- Count Colour_poj2777(线段树+位)
- innerHtml and Jquery.html()
- WPF/Silverlight Layout 系统概述——Measure(转)
- c函数调用过程原理及函数栈帧分析
- Oracle超出最大连接数问题及解决
- SQL Server 查询分析器提供的所有键盘快捷方式(转)
- 一步步学习NHibernate(1)——NHibernate介绍
- Java web 文件下载
- 1084: [SCOI2005]最大子矩阵
- javaScript绑定事件委托 demo
- 安卓笔记-- popupwindow back键不消失的问题
- Http 1.x弊端与Http 2.0比较
- 【Objective-C】内存管理
- Quartus prime 16.0 signaltap II 使用
- 【转】ETL介绍与ETL工具比较