外键约束 以及 数据库中实体的对应关系(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 多表设计中的三种实体关系:
一对多:
一个部门可以对应多个员工,一个员工只能属于一个部门!
一个客户可以对应多个订单,一个订单只能属于一个客户!
* 一对多关系建表原则:
* 需要在多的一方添加一个字段,作为外键指向一的一方主键!

多对多:
一个学生可以选择多门课程,一个课程可以被多个学生所选择的!
* 多对多关系建表原则:
* 需要创建第三张表,第三张表中需要两个字段,这两个字段分别作为外键指向多对多双方的主键!

一对一:(使用比较少)
一个公司只能对应一个地址,一个地址也只能对应一个公司!
一对一的关系式比较少用!
* 公司表:地址是公司的表的字段.
* 一对一的关系的建表原则:
* 主键对应:
* 唯一外键对应:

外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)的更多相关文章
- sql操作数据库(3)-->外键约束、数据库表之间的关系、三大范式、多表查询、事务
外键约束 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) 在已有表中添加外键约束:alter t ...
- SQL约束(主键约束、外键约束、自动递增、不允许空值、值唯一、值默认、值限制范围)
NOT NULL 不允许空值约束 NOT NULL 约束强制列不接受 NULL 值(NULL值就是没有值或缺值).NOT NULL 约束强制字段始终包含值,即不向字段添加值,就无法插入新记录或者更新记 ...
- MySQL外键约束_ON DELETE CASCADE/ON UPDATE CASCADE
MySQL通过外键约束实现数据库的参照完整性,外键约束条件可在创建外键时指定,table的存储引擎只能是InnoDB,因为只有这种存储模式才支持外键. 外键约束条件有以下4种: (1)restrict ...
- MySQL基础9-主键约束、外键约束、等值连接查询、一对一和多对多关系
1.主键约束和外键约束 外键约束 * 外键必须是另一表的主键的值(外键要引用主键!) * 外键可以重复 * 外键可以为空 * 一张表中可以有多个外键! 概念模型在数据库中成为表 数据库表中的多对一关系 ...
- 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句
最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...
- MySQL数据库有外键约束时使用truncate命令的办法
MySQL数据库操作中,Delete与Truncate两个命令都可以删除一个数据表中的全部数据,使用办法分别是: DELETE FROM t_question TRUNCATE TABLE t_que ...
- mysql数据库导入外键约束问题
在网站搬迁过程中,很重要一点是数据的迁移.你的数据库可能已经包含了一个设计良好的数据表集合,并且在网站运营过程中,产生了重要的数据.这时你必须做好包含数据表schema以及数据本身的迁移. 完成上述数 ...
- 数据库 SQL 外键约束 多表查询
多表设计与多表查询 1.外键约束 表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来 ...
- 详解MariaDB数据库的外键约束
1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...
随机推荐
- iOS静态库小结--(yoowei)
准备知识: 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImage.AFNetw ...
- yii2 funson86\yii2-setting
Yii2 Setting for other application, especially for Yii2 Adminlte Installation The preferred way to i ...
- FIFO学习心得
1,名字.FIFO=First in first out. 2,特点.顺序读入,顺序读出,先入先出. 3,用途.数据缓冲.使两个数据传输速率不一样的设备相匹配. 4,参数. ①,THE WIDTH和T ...
- kafka+zookeeper环境配置(Mac 或者 linux环境)
一.zookeeper下载与安装 1)下载 adeMacBook-Pro:zookeeper_soft apple$ wget http://mirrors.cnnic.cn/apache/zooke ...
- Junit使用
eclipse Junit的简单使用: eclipse自带了Junit插件. 安装Junit,如下图所示,右键项目-->Properties-->Add Library 选择Junit 选 ...
- High Frequency Trading (整理中...)
什么是高频交易系统 1 交易指令完全是由电脑发送,对市场数据的响应延时在微秒级2 系统有专用的软硬件组成,研发时需要大量的计算机专家级的工作3 系统的硬件需要放在离交易所主机很近的位置,所谓co-lo ...
- 正确地组织python项目的结构
统一的项目结构 写了不少python项目后, 越来越认识到python项目结构重要性. 不管项目是否要开源, 是否要提交pypi, 项目结构的一致性带来的好处还有很多: 多人合作开发大家都有个基本的g ...
- ASP数据库操作方法
首先,必须要使用打开数据库方法: <% dim objconn,objconnstr set objconn=server.createobject("adodb.connection ...
- 浏览器兼容性之Css篇
本文与上一篇随笔<浏览器兼容性之Javascript篇>有一定关联,下来我会继续不断总结,旨在解决浏览器兼容性,对遇到类似问题的同仁有所帮助,如有更多解决浏览器兼容性的案例还望大家分享一起 ...
- CSS样式案例(1)-文字的排版
本篇介绍的是小窗文字内容的排版,通过该篇文章可以让小伙伴们熟悉以下几个知识点: word-space.overflow.text-overflow. 最终的展示效果如下: 参考步骤: 1. 建立htm ...