实体关系

 表设计

1:1

两个实体表内,存在相同的主键字段

如果记录的主键值等于另一个关系表内记录的主键值,则两条记录的对应为一一对应

优化上称为垂直分割

1n

一个实体对应多个其他实体(一个班级对应多个学生)

设计:在多的那段增加一个字段,用于指向该实体所属的另外实体的标识

M:n

多对多

设计典型的利用一个中间表表示实体之间的对应关系。中间表的每一条记录表示一个关系。

 可以分析:一个m:n可拆解为 1:m  1:n来实现

外键 foreign key

概念:如果一个实体(student)的某个字段(student:class_id)指向(引用)另一个实体(class)的主键(class:class_id)

就称student实体的class_id是这两个实体关联的外键。

被指向的实体称为主实体(主表),也叫父实体(父表)

负责指向的实体称为从实体(从表),也叫子实体(子表)

一般在哪个表里定义外键 这个表就是子表

作用:

约束处于关系内的实体

  增加子表记录时,是否有与之对应的父表记录。删除和更新主表记录时,从表应该如何处理与之相关的记录。

定义一个外键

在从表上增加一个外键字段,指向主表的主键  使用关键字 foreign key

Foreign key (外键字段) references 主表名 (关联字段) [主表记录删除时动作][主表记录更新时记录]

建完表后插入

在子表增加记录时,父表中必须有与之对应的记录存在

设置级联操作

 在主表数据发生改变时,与之关联的从表数据该如何变化

主表更新

主表删除

使用关键字on update,on delete来标识

允许的级联操作:

 Cascade:关联操作如果主表被删除,那么从表也会执行相关的操作

 Set null : 设置为null表示从表不指向任何主表记录

 Restrict :拒绝主表的相关操作

修改外键:先删除再新建外键,通过修改表来完成。

Alter table student drop foreign key (class_id) 有问题

删除外键需要通过指定外键名达到目的

可以通过创建外键时指定名称或者使用Mysql默认生成的名称

新建外键:

Alter table student add foreign key (class_id) references class (class_id)

 On delete set null

注意关联的字段必须类型一致

class_id定义时要能为null

On update指的是只有主表的主键发生变化,才能对从表产生影响。

现在表中数据默认都是restrict show 里默认不显示

Php实际项目中只有关联,不设置外键,删除或更新时通过sql语句叠加操作

有名无实,在支持外键的存储引擎表中才能使用(只有innodb

mysql实体关系(mysql学习五)的更多相关文章

  1. mysql实体关系

    数据库连接细节架构: 数据库编码: 关系数据库玩的是生活中物与物之间的关系.那么数据库要保存数据,事先就要描述情况数据如何保存.事务之间的关系如何处理等等. 现实生活中物称为实体,如商品,学生,文章, ...

  2. day04关于MySqL—Android小白的学习笔记

    Mysql入门 1. 数据库基本知识(了解) 1.1.数据库介绍 1.1.1.什么是数据库?数据库的作用是什么? 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户 ...

  3. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  4. MySQL实战45讲学习笔记:第三十九讲

    一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...

  5. MySQL实战45讲学习笔记:第二十四讲

    一.引子 在前面的文章中,我不止一次地和你提到了 binlog,大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了 binlog 就可以跟主库保持一致 ...

  6. 基于【 MySql 】二 || mysql详细学习笔记

    mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...

  7. MySQL事务控制语句(学习笔记)

    MySQL事务控制语句(学习笔记) MySQL事务控制语句         在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作.因此开启一个事务必须使用begi ...

  8. 深挖计算机基础:MySQL实战45讲学习笔记

    参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 My ...

  9. MySQL实战45讲学习笔记:第二十九讲

    一.引子 我在第25和27篇文章中,和你介绍了主备切换流程.通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库:而在一主多从架构里,主备切换除了要把 ...

随机推荐

  1. nyoj 84 阶乘的0

    点击打开链接 阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N& ...

  2. nyoj 76 超级台阶

    点击打开链接 超级台阶 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规 ...

  3. Asp.net树形递归算法

    using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq ...

  4. What is Split Brain in Oracle Clusterware and Real Application Cluster (文档 ID 1425586.1)

    In this Document   Purpose   Scope   Details   1. Clusterware layer   2. Real Application Cluster (d ...

  5. JQuery上传插件uploadify整理(Events)

    Arguments fileThe file object being cancelled onCancel:调用calcel方法.$('#upload').uploadify('cancel'); ...

  6. Spring定时任务配置

    可参照http://gong1208.iteye.com/blog/1773177 的详细配置 <!-- 系统定时任务工厂类 --> <bean id="systemDes ...

  7. 关联规则挖掘之apriori算法

    前言: 众所周知,关联规则挖掘是数据挖掘中重要的一部分,如著名的啤酒和尿布的问题.今天要学习的是经典的关联规则挖掘算法--Apriori算法 一.算法的基本原理 由k项频繁集去导出k+1项频繁集. 二 ...

  8. VS error retrieving information from user datastore

    搭建好VS2005+PB6.0的开发环境后,新建MFC智能设备应用程序工程出错,错误信息如下: error retrieving information from user datastore 很奇怪 ...

  9. 如何设置修改WPS批注上的用户信息名称

    http://jingyan.baidu.com/article/6b18230953cec7ba59e1596b.html 点击左上角的“WPS文字”:   选择“选项”:   点击“用户信息”: ...

  10. hadoop的live node为0

    1.重新格式化namenode cd ~ rm -rf name mkdir name rm -rf hadoop-2.7.2/logs/ mkdir hadoop-2.7.2/logs/ hadoo ...