关系型数据库规范| 学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习关系型数据库规范

开发者学堂课程【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. 官方网址:

https://www.mysql.com/ 

http://mariadb.org/ 

2. 官方文档

https://dev.mysql.com/doc/ 

https://mariadb.com/kb/en/ 

3. 版本演变:

MySQL : 5.1 --> 5.5 --> 5.6 --> 5.7

MariaDB: 5.5 -->10.0--> 10.1--> 10.2 --> 10.3

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
150 6
|
8月前
|
数据库 Python
在数据库中的规范设计
【5月更文挑战第16天】关系数据库规范化理论涉及函数依赖和超键概念。函数依赖如X->Y表示X能唯一确定Y。超键是能唯一标识元组的属性集合,候选键是最小超键,无冗余。主键是用户选定的候选键,外键关联不同表的主键。Armstrong公理用于推导函数依赖。数据库范式从1NF到5NF,消除部分和传递依赖,确保数据完整性。实际操作中,反规范化有时用于优化,如增加冗余列、派生列、重组表和分表策略,以提升查询效率和性能。
232 51
在数据库中的规范设计
|
5月前
|
存储 SQL 关系型数据库
数据库开发设计规范(通用)
数据库开发设计规范(通用)
465 0
|
3月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
81 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
4月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
5月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
67 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
5月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
211 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
5月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
47 6
|
5月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
90 4
|
5月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
42 3