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. Yii2创建多界面主题(Theme)

    Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方: 1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理: 2. 视图文件和Web资源在目 ...

  2. Java并发编程核心方法与框架-Future和Callable的使用

    Callable接口与Runnable接口对比的主要优点是Callable接口可以通过Future获取返回值.但是Future接口调用get()方法取得结果时是阻塞的,如果调用Future对象的get ...

  3. Spring回调方法DisposableBean接口

    除了自定义的destroy-method.还可以实现DisposableBean接口,来回调bean销毁时候执行的方法,这个接口有一个destroy方法,生命周期是是destroy----bean销毁 ...

  4. Java实验2-数据库编程

    目标:掌握Java数据库编程 内容: 学生选课系统包括如下数据库表 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredi ...

  5. PHP无限极分类生成树方法,无限分级

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

  6. 【Solr】数据库数据导入索引库

    目录 分析框图 配置数据库与solrconfig.xml 回到顶部 分析框图 框图画的粗糙!勿喷啊!勿喷啊! 回到顶部 配置数据库与solrconfig.xml Dataimport插件 可以批量把数 ...

  7. Redhat系统网络配置

    1.RedHat系统的网络配置文件/etc/sysconfig/network-scirpts/ifcfg-<interface-name>文件 DEVICE=eth0           ...

  8. PHP基础之 string 字符串函数

    /*=================常用字符串处理函数================== ltrim();        //去掉字符串左边的空格 rtrim();         //去掉字符串 ...

  9. 北美IT公司大致分档

    北美IT公司大致分档(from mitbbs.com) 第一档: Uber, Snapchat, Airbnb, Dropbox, Pinterest 第二档:Facebook, LinkedIn, ...

  10. jersey

    http://www.cnblogs.com/bluesfeng/archive/2010/10/28/1863816.html