当前课程知识点:数据库系统原理与开发 >  第4章 数据库设计与实现 >  4.4 数据库规范化设计 >  4.4.2 数据库规范化设计-2

返回《数据库系统原理与开发》慕课在线视频课程列表

4.4.2 数据库规范化设计-2在线视频

下一节:4.5 数据库设计模型SQL实现

返回《数据库系统原理与开发》慕课在线视频列表

4.4.2 数据库规范化设计-2课程教案、知识点、字幕

大家好!

我是主讲教师陆鑫

下面我们开始学习数据库课程

第4.4小节 数据库规范化设计—关系规范化范式

本节学习目标如下

1)理解不同程度的规范化范式

2)掌握数据库规范化设计方法

3)理解逆规范化处理方法

下面继续学习数据库规范化设计

一、关系规范化范式

关系规范化是把一个有访问异常的

关系分解成结构良好的关系的过程

使得这些关系有最小的冗余或没有冗余

规范化范式(Normal Form,NF)

是指关系表符合特定规范化程度的模式

1.第1范式(1NF)

如果关系表中的属性不可再细分

则关系满足第1范式

反之,该表就不是关系表

2.第2范式(2NF)

如果关系满足第1范式

并消除了关系中的属性部分函数依赖

则关系满足第2范式

例如,有一个关系(A, B, N, O, P)

其复合主键为(A, B)

那么N,O,P这三个非键属性都不存在只依赖A或只依赖B情况

则该关系满足第2范式

反之,不满足第2范式

3. 第3范式(3NF)

如果关系满足第2范式

并切断了关系中的属性传递函数依赖

该关系满足第3范式

例 若有一个关系的属性(A, N, O, P)

主键为A, 那么非键属性N,O或P

都不能由单个的N,O或P或它们的组合所确定

该关系满足第3范式

4.巴斯-科德范式(BCNF)

在关系中所有函数依赖的决定因子都是候选键

该关系满足BCNF范式

例如, 关系STUDENT(StudentNum, Name, Email)

决定因子StudentNum 也是候选键

该关系满足BCNF范式

5. 第4范式(4NF)

如果关系满足BCNF范式

并消除了多值函数依赖

该关系满足第4范式

例如, 设学校中某一门课程由多个教师讲授

每个教师可有自己的参考书

用关系模式Teaching(Course, Teacher, Book)来表示课程

教师和参考书之间的关系

该关系Teaching(Course,Teacher,Book)

属于BCNF范式

但是存在多值函数依赖

即不满足第4NF

将该表进行分解处理

可分解为Teaching(TeachID, CourseID, TeacherID, BookID)

Course(CourseID,CourseName)

Teacher(TeacherID,TeacherName)

Book(BookID, BookName)

即可消除多值依赖

便可满足第4NF范式

6. 关系规范化程度利弊

关系的规范化程度依次提升

第1范式、 第2范式、 第3范式、 BNCF范式、 第4范式

关系的规范化程度越高

关系数据库存储的冗余数据就越少

可消除的数据访问异常就越多

不过关系的规范化程度越高

分解出来的关系表就越多

但实现数据查询访问时

需关联更多的表

其效率更低

二、关系规范化设计实例

例如 “学生”关系的规范化处理

该“学生”关系满足第1范式

第1范式: 如果关系中的属性不可再细分

则该关系满足第1范式

本关系不满足1范式

因为“联系方式”属性可以再细分“电话”、“电子邮件”等

解决办法: 将学生关系的“联系方式”进行属性分解

当学生关系进行属性分解后

它满足第2范式吗?

第2范式: 如果关系满足第1范式

并消除了关系中的属性部分依赖

则该关系满足第2范式

分析学生关系

该关系的主键为

(学号,课程号)

其中学号作为决定因子

决定了系名

学号也决定了学生的住址

学号也决定了电话

学号也决定了电子邮件

因此, 该关系存在部分依赖

不满足第2范式

处理办法

对学生关系进行分解

按照“学生信息”、“课程成绩”主题撤分为两个关系表

以上“学生”关系和“课程成绩”关系均满足第2范式

它们满足第3范式吗?

第3范式: 如果关系满足第2范式

并切断了关系中的属性传递依赖

则该关系满足第3范式

分析: 在学生关系表中

学号属性作为决定因子决定了系名

系名属性又决定了学生住址

故学号决定了住址

因此, 存在传递函数依赖

不满足第3范式

处理办法: 对学生关系再次进行分解

分解为“学生”、“系信息”关系

现在“学生”、“系信息”、“课程成绩”关系均满足第3范式

它们满足BCNF范式吗?

BCNF范式: 在关系中所有函数依赖决定因子都是主键

则该关系满足BCNF范式

“学生”关系、“系信息”关系、“课程成绩”关系均满足BCNF范式

它们满足第4范式吗?

第4范式: 如果关系满足BCNF范式

并消除了多值函数依赖

则该关系满足第4范式

分析: 一个系的学生住址可能有多处

办公电话也有多个

故“系信息”关系存在多值依赖

不满足第4范式

处理办法对“系信息”关系进一步分解为“系编码”

“学生住址”、“电话目录”关系

以上各个关系 现均满足第4范式

三、逆规范化处理

规范化减少了数据冗余

易于保证数据的完整性

但规范化过高也会导致数据库性能降低

因此, 在利用规范化设计数据库时要平衡两者的关系

为此, 有人又提出了逆规范化处理的思想

所谓逆规范化就是适当降低规范化范式

不再要求一个关系表必须达到很高的规范化程度

而是允许适当的数据冗余性

以获取数据访问性能

逆规范化处理基本方法

1)增加冗余列或派生列

2)多个关系表合并为一个关系表

好了, 本节学习结束!

数据库系统原理与开发课程列表:

第1章 数据库系统概论

-1.1 数据库及其系统概念

--1.1 数据库及其系统概念

-1.2 数据库技术发展

--1.2 数据库技术发展

-1.3 数据库应用系统

--1.3 数据库应用系统

-1.4 典型数据库管理系统

--1.4 典型数据库管理系统

-1.5 PostgreSQL对象-关系数据库系统软件

--1.5 PostgreSQL对象-关系数据库系统软件

-第1章 数据库系统概论--本章单元测试

-第1章 数据库系统概论--本章重点问题讨论

第2章 数据库关系模型

-2.1 关系及其相关概念

--2.1.1关系及其相关概念-1

--2.1.2关系及其相关概念-2

-2.2 关系模型原理

--2.2.1关系模型原理-1

--2.2.2关系模型原理-2

-2.3 PostgreSQL数据库关系操作实践

--2.3 PostgreSQL数据库关系操作实践

-第2章 数据库关系模型--本章单元测试

-第2章 数据库关系模型--本章重点问题讨论

第3章 数据库操作SQL语言

-3.1 SQL语言概述

--3.1 SQL语言概述

-3.2 数据定义SQL语句

--3.2.1数据定义SQL语句-1

--3.2.2数据定义SQL语句-2

--3.2.3数据定义SQL语句-3

-3.3 数据操纵SQL语句

--3.3 数据操纵SQL语句

-3.4 数据查询SQL语句

--3.4.1单表数据查询

--3.4.2 内置函数与分组统计

--3.4.3 多表关联查询

-3.5 数据控制SQL语句

--3.5 数据控制SQL语句

-3.6 视图SQL语句

--3.6 视图SQL语句

-3.7 PostgreSQL数据库SQL实践

--3.7 PostgreSQL数据库SQL实践

-第3章 数据库操作SQL语言--本章单元测试

-第3章 数据库操作SQL语言--本章重点问题讨论

第4章 数据库设计与实现

-4.1 数据库设计概述

--4.1 数据库设计概述

-4.2 E-R模型方法

--4.2.1 E-R模型方法-1

--4.2.2 E-R模型方法-2

-4.3 数据库建模设计

--4.3.1 数据库建模设计-1

--4.3.2 数据库建模设计-2

-4.4 数据库规范化设计

--4.4.1 数据库规范化设计-1

--4.4.2 数据库规范化设计-2

-4.5 数据库设计模型SQL实现

--4.5 数据库设计模型SQL实现

-4.6 基于Power Designer的数据库设计建模实践

--4.6 基于Power Designer的数据库设计建模实践

-第4章 数据库设计与实现--本章单元测试

-第4章 数据库设计与实现--本章重点问题讨论

第5章 数据库管理

-5.1 数据库管理概述

--5.1 数据库管理概述

-5.2 事务管理

--5.2 事务管理

-5.3 并发控制

--5.3.1 并发控制-1

--5.3.2 并发控制-2

-5.4 安全管理

--5.4.1 安全管理-1

--5.4.2 安全管理-2

-5.5 数据库备份与恢复

--5.5 数据库备份与恢复

-5.6 PostgreSQL数据库管理项目实践

--5.6 PostgreSQL数据库管理项目实践

-第5章 数据库管理--本章单元测试

-第5章 数据库管理--本章重点问题讨论

第6章 数据库应用编程

-6.1 数据库连接技术

--6.1.1 数据库连接技术-1

--6.1.2 数据库连接技术-2

-6.2 数据库存储过程

--6.2 数据库存储过程

-6.3 数据库触发器

--6.3 数据库触发器

-6.4 数据库游标

--6.4 数据库游标

-6.5 嵌入式SQL编程

--6.5 嵌入式SQL编程

-第6章 数据库应用编程--本章单元测试

-第6章 数据库应用编程--重点问题讨论

第7章 NoSQL数据库技术

-7.1 NoSQL数据库概述

--7.1.1 NoSQL数据库概述-1

--7.1.2 NoSQL数据库概述-2

--7.1.3 NoSQL数据库概述-3

-7.2 列存储数据库

--7.2.1列存储数据库-1

--7.2.2列存储数据库-2

-7.3 键值对数据库

--7.3.1 键值对数据库-1

--7.3.2 键值对数据库-2

--7.3.3 键值对数据库-3

-7.4 文档型数据库

--7.4.1文档型数据库-1

--7.4.2文档型数据库-2

--7.4.3文档型数据库-3

-7.5 图形数据库

--7.5.1图形数据库-1

--7.5.2图形数据库-2

--7.5.3 图形数据库-3

-7.6 HBase数据库项目实践

--7.6 HBase数据库项目实践

-第7章 NoSQL数据库技术--本章单元测试

-第7章 NoSQL数据库技术--本章重点问题讨论

期末考试

-期末测试--期末测试

4.4.2 数据库规范化设计-2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。