开发者学堂课程【Linux MySQL 服务器搭建与应用:关系型数据库规范】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/578/detail/7982
关系型数据库规范
内容介绍
一、 联系类型
二、 数据三要素
三、 简易数据规划流程
四、 数据库的正规化分析
五、 范式
六、 SQL 概念
七、 约束
八、 基本概念
九、 数据模型
十、 MySQL 历史
十一、 MySQL 和 MariaDB
一、 联系类型
1. 联系的类型(表和表之间的关系)
假设有两张表,每张表上都有一些记录,每张表的每一条记录和另外一张表的一些记录之间构成一对一、一对多或者多对多的关系。
(1) 一对一联系(1:1),例如学员的成绩表和学员的报名表;
(2) 一对多联系(1:n),例如员工信息表和员工部门表,一个部门对应多个员工;
(3) 多对多联系(m:n),例如学员信息表和学员所学课程统计表。
二、 数据三要素
1. 数据结构:包括两类
(1) 一类是与数据类型、内容、性质有关的对象,比如关系模型中的域、属性和关系等;
(2) 另一类是与数据之间联系有关的对象,它从数据组织层表达数据记录与字段的结构(例如主外键)。
2. 数据的操作:
(1) 数据提取:在数据集合中提取感兴趣的内容。SELECT(选择性的显示结果)
(2) 数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE
3. 数据的约束条件:是一组完整性规则的集合
(1) 实体(行)完整性 Entity integrity(主键 pk(只有一个,允许为空)、唯一键uk(保证每条记录都不一样,不允许为空));
(2) 域(列)完整性 Domain Integrity:限定某个字段在一定的范围内;
(3) 参考完整性 Referential Integrity:外键,两个表或者两个字段之间有一定的关联。
三、 简易数据规划流程(将数据存到数据库)
1. 第一阶段:收集数据,得到字段
(1) 收集必要且完整的数据项
(2) 转换成数据表的字段
2. 第二阶段:把字段分类,归入表,建立表的关联
(1) 关联:表和表间的关系
(2) 分割数据表并建立关联的优点
(3) 节省空间
(4) 减少输入错误
(5) 方便数据修改
3. 第三阶段:
规范化数据库:适当的添加主键、唯一键、字段约束、限定。
规范化:使数据库中尽量不要出现重复的数据,节约空间。
四、 数据库的正规化分析
1. RDMBS 设计范式基础概念
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小,但同时用起来不是很灵活,相对来讲难度较大,逻辑较复杂。
2. 目前关系数据库有六种范式:
第一范式 (1NF)、第二范式 (2NF)、第三范式 (3NF)、巴德斯科范式(BCNF) 、第四范式 (4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。
在第一范式的基础上进一步满足更多规范要求的称为第二范式 (2NF),其余范式以次类推。一般说来,数据库只需满足第三范式 (3NF) 即可。
五、 范式
1. 1NF:
无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。除去同类型的字段,就是无重复的列。
违反 1NF 的情况:
多次考试成绩登在一张表上(列重复);同一个成绩中输入多个值(某个属性不能有多个值)
解决:
再加一个字段,如加时间,将每一个成绩分离开;或者多做几张表,每一次的成绩都分开。
说明:第一范式 (1NF) 是对关系模式的基本要求,不满足第一范式 (1NF) 的数据库就不是关系数据库。
2. 2NF:
属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。
通常为表加上一个列,以存储各个实例的唯一标识 PK,非 PK 的字段需要与整个 PK 有直接相关性。
例:
一张员工表,包含姓名、性别、所在城市名字,所在城市编号,设置姓名为主键。此时发现:性别和所在城市名字依赖于姓名,但所在城市编号却依赖于所在城市,不满足第二范式。
此时,应将所在城市姓名和所在城市编号新做一张表,如命名为城市信息,包含上述两个信息,同时原表包含的内容变为姓名、性别和城市信息,两张表之间也形成了多对多的关系,就符合第二范式了。
复合主键,设立一个主键,由两个或者两个以上的字段组成。如将姓名和城市信息作为一个主键,可以避免重名带来的影响。
3. 3NF:
属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非 PK 的字段间不能有从属关系。
六、 SQL 概念
1. SQL: Structure Query Language
(1) 结构化查询语言(只关注需要得到的数据,不关注物理保存)
(2) SQL 解释器:
(3) 数据存储协议:应用层协议,C/S
2. S:server,监听于套接字,接收并处理客户端的应用请求
3. C:Client
(1) 客户端程序接口
CLI(字符界面)
GUI(图形界面)
(2)应用编程接口
ODBC:Open Database Connectivity
JDBC : Java Data Base Connectivity
七、 约束
1. 约束:constraint,表中的数据要遵守的限制
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即 NOTNULL,一个表只能有一个
唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为 NULL,一个表可以存在多个
外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
检查:字段值在一定范围内
八、 基本概念
1. 索引(目录):
将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储。
2. 关系运算:
(1) 选择:挑选出符合条件的行;
(2) 投影:挑选出需要的字段;
(3) 连接:表间字段的关联。
九、 数据模型
1. 数据抽象:
(1) 物理层:数据存储格式,即 RDBMS 在磁盘上如何组织文件。如考虑如何分类放置文件,使性能最优化;
(2) 逻辑层:DBA 角度,描述存储什么数据,以及数据间存在什么样的关系;
(3) 视图层:用户角度,描述 DB 中的部分数据。
2. 关系模型的分类:
(1) 关系模型
(2) 基于对象的关系模型
(3) 半结构化的关系模型:XML数据
例:
数据:
[root@centos6~]#vim/etc/goncf.xml.default/%gconf-tree.xml
切换字符界面 [root@centos6~]#init 3
切换图形界面 [root@centos6~]#init 5
十、 MySQL 历史
1979年:TcX 公司 Monty Widenius,Unireg
1996年:发布 MySQL1.0,Solaris 版本,Linux 版本
1999年:MySQL AB 公司,瑞典
2003年:MySQL5.0 版本,提供视图、存储过程等功能
2008年:Sun 收购
2009年:Oracle 收购 sun
2009年:Monty 成立 MariaDB
十一、 MySQL 和 MariaDB
1. 官方网址:
2. 官方文档
3. 版本演变:
MySQL : 5.1 --> 5.5 --> 5.6 --> 5.7
MariaDB: 5.5 -->10.0
--> 10.1--> 10.2 --> 10.3