mysql实体关系(mysql学习五)
实体关系
表设计
1:1
两个实体表内,存在相同的主键字段
如果记录的主键值等于另一个关系表内记录的主键值,则两条记录的对应为一一对应

优化上称为垂直分割
1:n
一个实体对应多个其他实体(一个班级对应多个学生)
设计:在多的那段增加一个字段,用于指向该实体所属的另外实体的标识

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学习五)的更多相关文章
- mysql实体关系
数据库连接细节架构: 数据库编码: 关系数据库玩的是生活中物与物之间的关系.那么数据库要保存数据,事先就要描述情况数据如何保存.事务之间的关系如何处理等等. 现实生活中物称为实体,如商品,学生,文章, ...
- day04关于MySqL—Android小白的学习笔记
Mysql入门 1. 数据库基本知识(了解) 1.1.数据库介绍 1.1.1.什么是数据库?数据库的作用是什么? 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- MySQL实战45讲学习笔记:第三十九讲
一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...
- MySQL实战45讲学习笔记:第二十四讲
一.引子 在前面的文章中,我不止一次地和你提到了 binlog,大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了 binlog 就可以跟主库保持一致 ...
- 基于【 MySql 】二 || mysql详细学习笔记
mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...
- MySQL事务控制语句(学习笔记)
MySQL事务控制语句(学习笔记) MySQL事务控制语句 在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作.因此开启一个事务必须使用begi ...
- 深挖计算机基础:MySQL实战45讲学习笔记
参考极客时间专栏<MySQL实战45讲>学习笔记 一.基础篇(8讲) MySQL实战45讲学习笔记:第一讲 MySQL实战45讲学习笔记:第二讲 MySQL实战45讲学习笔记:第三讲 My ...
- MySQL实战45讲学习笔记:第二十九讲
一.引子 我在第25和27篇文章中,和你介绍了主备切换流程.通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库:而在一主多从架构里,主备切换除了要把 ...
随机推荐
- PYTHON ASYNCIO: FUTURE, TASK AND THE EVENT LOOP
from :http://masnun.com/2015/11/20/python-asyncio-future-task-and-the-event-loop.html Event Loop On ...
- C Primer Plus(第五版)9
第 9 章 函数 在本章中你将学习下列内容: · 关键字: return (返回) · 运算符 * (一元) & (一元) · 函数及其定义方式. · 参数和返回值的使用方法. · 使用指针变 ...
- uva 11488 Hyper Prefix Sets(狂水)
题意: 获得集合中最长前缀长度*有该前缀个数的最大值 Prefix goodness of a set string is length of longest common prefix*number ...
- 命令行重新安装.net framework
①运行cmd ②运行命令: cd c:\\windows\\microsoft.net\\framework\v4.0.30319 ③在上述目录下执行如下命令 aspnet_regiis.exe -i ...
- OC基础(21)
Foundation框架介绍 NSString基本概念 字符串读写 字符串比较 字符串搜索 字符串截取 字符串替换 字符串与路径 字符串与基本数据类型转换 *:first-child { margin ...
- 转——Android测试之monkey
一.为什么要用Monkey 测试? 简单在说就是象猴子一样乱点,为了测试软件的稳定性,健壮性.号称最快速有效的方法.有时候运行相同系列的测试,即使是复杂的测试,但是以相同的顺序和路径,即使一遍又一 ...
- 关于NopCommerce3.6版用户登录详解
一.登录方式 Nop登录方式有两种(且只能选择一种方式登录):一种是用用户名登录,另一种是用户注册邮箱登录,这个在后台可配置: 第一种:用户名登录 后台配置路径在商城设置à设置管理à客户设置:使用用户 ...
- SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...
- JS 在open打开的子窗口页面中调用父窗口页面的JS方法
需求的情景如下: 1:做新增或修改等操作的时候打开一个新的浏览器窗口(使用window.open(参数等)方法) 2:在新增或修改等的页面上有返回按钮.重置按钮.保存按钮,对于返回就直接关闭此窗口(使 ...
- yii中modules的命名规则
如上图,views下面的文件夹名全小写(否则会出现找不到相应视图的错误),Module文件名称第一个单词首字母大写. 总之,按照上面的格式就不会有错了~