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. margin小结

    一. margin百分比 1. 普通元素的百分比margin都是相对于容器的宽度计算 2. 绝对定位元素的百分比margin是相对于第一个定位祖先元素(relative/absolute/fixed) ...

  2. 数据库逆向框架代码生成工具:MyBatis Generator的使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  3. java在继承中父类的成员变量是否会被子类所覆盖

    假如 父类 int num =7:子类 int num =9:父类是否会被子类所覆盖? 给你看两个例子: 第一个例子: 第二个例子: 这两个例子的区别只有一句话   由此证明了子类从父类继承的时候   ...

  4. android自定义控件(3)-自定义当前按钮属性

    那么还是针对我们之前写的自定义控件:开关按钮为例来说,在之前的基础上,我们来看看有哪些属性是可以自定义的:按钮的背景图片,按钮的滑块图片,和按钮的状态(是开还是关),实际上都应该是可以在xml文件中直 ...

  5. Linux启动流程CentOS6

    1.运行级别 0 关机 1 单用户模式,可以想象为Windows的安全模式,主要用与系统修复 2 不完全的命令行模式,不含NFS服务 3 完全的命令行模式,就是标准字符界面 4 系统保留 5 图像模式 ...

  6. thinkPHP3.2.3集成swoole扩展

    swoole.php #!/bin/env php <?php /** * 默认时区定义 */ date_default_timezone_set('Asia/Shanghai'); /** * ...

  7. 【C语言入门教程】3.2 数据的输入 与 输出

    在程序的运行过程中,通常需要用户输入一些数据,而程序运算所得到的计算结果等又需要输出给用户,由此实现人与计算机之间的交互.所以在程序设计中,输入输出语句是一类必不可少的重要语句.在 C 语言中,没有专 ...

  8. Swift语法入门

    正文参考: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Progra ...

  9. 汉字转拼音(pinyin4j)

    1.引入依赖 <dependency> <groupId>pinyin4j.sourceforge.net</groupId> <artifactId> ...

  10. Unity3D客户端和Java服务端使用Protobuf

    转自:http://blog.csdn.net/kakashi8841/article/details/17334493 前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖 ...