http://ift.tt/2xhKOrl
关系型数据库基础知识
关系型数据库基础知识
-
E-R模型
-
又可称为 实体-联系图
- 提供了表示实体型,属性和关联的方法
- 用来描述现实世界的概念模型
- 提供了表示实体型,属性和关联的方法
-
关联关系
- 一对一关联
- 一对多关联
- 多对多关联
- 一对一关联
-
-
范式理论
-
核心:规范化
- 把数据库组织成,在保持存储完整性的同时还能保证最小化冗余数据的结构的过程
- 把数据库组织成,在保持存储完整性的同时还能保证最小化冗余数据的结构的过程
-
常用的范式
-
范式一(1NF):是指数据库表中的每一列都是不可分割的基本数据项,每一列中不能有有多个值,不能共有重复的属性
-
例如:
-
-
-
学号 | 姓名 |
联系方式 |
10001 |
张三 |
18888888888,zhangsan@gmail.com |
10002 |
李四 |
19999999999,lisi@gmail.com |
- 这样就是同一个列中有2个属性(联系方式中有2个属性,电话和邮箱)
- 拆分后:
学号 |
姓名 |
电话 |
|
10001 |
张三 |
18888888888 |
zhangsan@gmail.com |
10002 |
李四 |
19999999999 |
lisi@gmail.com |
-
范式二(2NF):在满足第一范式的基础上,要求改数据表中的任何一个非主键字段的数值都依赖于改数据表的主键字段
-
例如
-
姓名 |
课程 |
教师 |
教师职称 |
教材 |
时间 |
地点 |
张三 |
c语言 |
诸葛亮 |
教授 |
《七天学会c语言》 |
8:00 |
905 |
李四 |
汇编语言 |
令狐冲 |
讲师 |
《汇编语言》 |
10:00 |
605 |
- 上面的例子可以看出,教师职称所依赖的主键是教师,教材所依赖的主键是课程,跟其他的信息没有关系
-
可以分离为
姓名 |
课程 |
教师 |
时间 |
地点 |
张三 |
c语言 |
诸葛亮 |
8:00 |
905 |
李四 |
汇编语言 |
令狐冲 |
10:00 |
695 |
课程 |
教材 |
c语言 |
《七天学会c语言》 |
汇编语言 |
《汇编语言》 |
教师 |
教师职称 |
诸葛亮 |
教授 |
令狐冲 |
讲师 |
-
第三范式(3NF):在满足第二范式的前提下,要求该表中的任何两个非主键字段的数据之间不存在函数依赖关系
-
例如
-
教师 |
教师职称 |
工资 |
奖金 |
诸葛亮 |
教授 |
6000 |
600 |
令狐冲 |
讲师 |
4000 |
400 |
上面这个表就违反了第三范式,因为工资和奖金存在了函数依赖关系
-
拆分如下:
教师 |
教师职称 |
工资 |
诸葛亮 |
教授 |
01 |
令狐冲 |
讲师 |
02 |
工资 |
基本工资 |
奖金 |
01 |
6000 |
01 |
02 |
4000 |
02 |
奖金 |
奖金 |
01 |
600 |
02 |
400 |
The post 数据库(MySQL)编程之关系型数据库基础知识 appeared first on cole.
http://ift.tt/eA8V8J sql September 08, 2017 at 09:27PM
评论
发表评论