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)的更多相关文章

  1. sql操作数据库(3)-->外键约束、数据库表之间的关系、三大范式、多表查询、事务

    外键约束 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) 在已有表中添加外键约束:alter t ...

  2. SQL约束(主键约束、外键约束、自动递增、不允许空值、值唯一、值默认、值限制范围)

    NOT NULL 不允许空值约束 NOT NULL 约束强制列不接受 NULL 值(NULL值就是没有值或缺值).NOT NULL 约束强制字段始终包含值,即不向字段添加值,就无法插入新记录或者更新记 ...

  3. MySQL外键约束_ON DELETE CASCADE/ON UPDATE CASCADE

    MySQL通过外键约束实现数据库的参照完整性,外键约束条件可在创建外键时指定,table的存储引擎只能是InnoDB,因为只有这种存储模式才支持外键. 外键约束条件有以下4种: (1)restrict ...

  4. MySQL基础9-主键约束、外键约束、等值连接查询、一对一和多对多关系

    1.主键约束和外键约束 外键约束 * 外键必须是另一表的主键的值(外键要引用主键!) * 外键可以重复 * 外键可以为空 * 一张表中可以有多个外键! 概念模型在数据库中成为表 数据库表中的多对一关系 ...

  5. 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句

    最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...

  6. MySQL数据库有外键约束时使用truncate命令的办法

    MySQL数据库操作中,Delete与Truncate两个命令都可以删除一个数据表中的全部数据,使用办法分别是: DELETE FROM t_question TRUNCATE TABLE t_que ...

  7. mysql数据库导入外键约束问题

    在网站搬迁过程中,很重要一点是数据的迁移.你的数据库可能已经包含了一个设计良好的数据表集合,并且在网站运营过程中,产生了重要的数据.这时你必须做好包含数据表schema以及数据本身的迁移. 完成上述数 ...

  8. 数据库 SQL 外键约束 多表查询

    多表设计与多表查询 1.外键约束        表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来 ...

  9. 详解MariaDB数据库的外键约束

    1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...

随机推荐

  1. MVC 随记

    2014-09-04 [1] Json var contact = new Object(); contact.firstname = "Jesper"; contact.surn ...

  2. Mongodb的Samus驱动

    最近开始学习Mongodb方面的东西.. 看到有很多博主都说MongoDB的第三方驱动 Samus 对Linq的支持比较好..能够降低学习的成本..所以就想从这里开始.. 但是弊端在我学习了一半的时候 ...

  3. Java并发编程核心方法与框架-CountDownLatch的使用

    Java多线程编程中经常会碰到这样一种场景:某个线程需要等待一个或多个线程操作结束(或达到某种状态)才开始执行.比如裁判员需要等待运动员准备好后才发送开始指令,运动员要等裁判员发送开始指令后才开始比赛 ...

  4. 好看的CSS按钮

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. Storm:最火的流式处理框架

    伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这 ...

  6. 【9-7】XML学习笔记01

    Tips XML标签大小写敏感: XML文件一般使用国际化通用的编码“utf-8”,所以平时看到的XML文件的头部都会有这样的代码: <?xml version="1.0" ...

  7. Java 线程Thread.Sleep详解

    我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢? 思考下面这两个问题: 1.假设现在是 2008-4-7 12:00:00.000,如果 ...

  8. 黄永成-thinkphp讲解-个人博客讲解26集

    如果是要导入 前后台分组都公用的 第三方类库, 就将类库(*.class.php文件) 放在 App下的Class文件夹中. 导入方法是: import('Class.Image', APP_PATH ...

  9. NetBeans使用习惯:升级与保存配置

    如何升级:点击 netbeans 的升级更新 ,即可升级版本:不推荐官网下载进行安装,否则会出现,以前的旧版本8.0的目录和8.0.1目录,虽然它会自动检测到以前版本的配置,提示导入... 如何备份: ...

  10. “RESTful架构”相关资料收藏

    [阮一峰]理解RESTful架构 [InfoQ]深入浅出REST 用于构建 RESTful Web 服务的多层架构 REST会是SOA的未来吗? Restful 与 SOA 的关系? 回答1: 注意r ...