mysql实体关系(mysql学习五)
2014-03-02 20:14
375 查看
实体关系
表设计
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是这两个实体关联的外键。
被指向的实体称为主实体(主表),也叫父实体(父表)
负责指向的实体称为从实体(从表),也叫子实体(子表)
一般在哪个表里定义外键 这个表就是子表
作用:
约束处于关系内的实体
增加子表记录时,是否有与之对应的父表记录。删除和更新主表记录时,从表应该如何处理与之相关的记录。
[b]定义一个外键[/b]
在从表上增加一个外键字段,指向主表的主键使用关键字 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)
表设计
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是这两个实体关联的外键。
被指向的实体称为主实体(主表),也叫父实体(父表)
负责指向的实体称为从实体(从表),也叫子实体(子表)
一般在哪个表里定义外键 这个表就是子表
作用:
约束处于关系内的实体
增加子表记录时,是否有与之对应的父表记录。删除和更新主表记录时,从表应该如何处理与之相关的记录。
[b]定义一个外键[/b]
在从表上增加一个外键字段,指向主表的主键使用关键字 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学习第二天:分组查询、连接查询、嵌套查询、外键(foreign key)、“一对多”,“多对多”关系表设计
- 40.笔记 MySQL学习——带关系比较运算符的子查询
- java学习笔记--工厂模式、实体关系
- MySQL学习笔记20150925时间数据类型以及字符集与varchar(M)M最大值关系
- Hibernate学习小结之实体对象之间关系
- MySQL学习笔记 第五讲:实体和外键
- MySql (四) ER图与实体关系映射
- 基于神经网络的实体识别和关系抽取联合学习
- MySQL关系数据库SQL命令使用学习记录
- mysql 学习疑问: sql语句关键字选项之间的顺序关系???
- MySQL学习笔记(8)之实体间的联系
- mysql实体关系
- mysql学习(5):多表之间的关系
- 数据库实体表的关系学习
- entityframework学习笔记--008-实体数据建模基础之继承关系映射TPH
- 框架学习之hibernate-02实体与实体之间的关系
- Hibernate学习笔记之ORM实体间关系“OneToOne”详解
- Entity Framework with MySQL 学习笔记一(关系整理版)
- MySQL 实体间的对应关系
- mysql _外键、实体关系与ER图