外键约束 以及 数据库中实体的对应关系(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)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...
随机推荐
- 后缀.jar的是什么文件?
解压kafka 打开后是一堆.jar结尾的文件,那么后缀.jar的是什么文件? JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种 ...
- Eclipse里项目名有红叉,但是底下的每一个文件都没有红叉
如果是因为java compiler level does not match the version of the installed java, 那么我们打开项目的properties,有一个选项 ...
- java String 中 intern方法的概念
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- Linux下更新时间
方法一.使用命令 ntpdate time-a.nist.gov 方法二.本地安装ntpdate客户端 在本地安装ntpdate客户端,更新时用 ntpdate cn.pool.ntp.org 如果你 ...
- 论Linux运维的一些基础安全知识和简单办法
不知不觉本人来北京也已经第三个年头了,从一个Linux小小鸟,开始,2012年我参加了第一份工作,其实现在想想其实我是幸运的,本来求学的时候,就没好好的学Linux,我认为有Cisco知识从上wind ...
- Linux下用于查看系统当前登录用户信息的4种方法
1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事.该命令所使用的信息来源于/var/run/utmp文件.w命令输出的信息包括: 用户名称 用 ...
- 【AngularJS】—— 11 指令的交互
前面基本了解了指令的相关内容: 1 如何自定义指令 2 指令的复用 本篇看一下指令之间如何交互.学习内容来自<慕课网 指令3> 背景介绍 这例子是视频中的例子,有一个动感超人,有三种能力, ...
- 懒加载的用处和赋nil操作[iOS开发教程]
懒加载的用处和赋nil操作 1:数据,清空操作: self.array = nil; 2:归档从新从本地获取数据 self.archive = nil; ##id = nil的用处 block当参数, ...
- IGV软件
它支持各种各样的数据类型,包括基于芯片测序.二代测序数据和基因组注释数据等.整合基因组浏览器(IGV,Integrative Genomics Viewer)进行可视化浏览,它支持各种各式的数据类型, ...
- Javascript包含对象的数组去重
Array.prototype.clearRepeat = function(){ var result = [], obj = {}; for(var i = 0; i < this.leng ...