第1章 第3讲—关系规范化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系模式SCD的分解结果如下: ◦ SC(学号,课程号,成绩) ◦ SD(学号,姓名,系名,系主任)
7
定义
◦ 如果关系模式R为第二范式,且R中每个非主属性都不
传递函数依赖于R的主码,则称R属于3NF。
示例
◦ 下列关系模式是2NF,是否为3NF?为什么? SD(学号,姓名,系名,系主任)
绩;每个教师只担任一门课的教学,一门课由若干教师任教;一位教师可以 指导多个学生,一个学生在某个时间和地点只能被一位教师指导。“学生”有 属性:学号、姓名、性别、专业名。“教师”有属性:职工号、教师姓名、职 称,“课程”有属性:课程号、课程名。 试画出ER图,并注明属性和联系类型。
17
谢谢观看
,“商店”有属性:商店编号、商店名、地 址、电话,“顾客”有属性:顾客编号、姓名、地址、年龄、性别。假设一个 商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物 有一个消费金额和日期。
试画出ER图,并注明属性和联系类型。 任务二、假设每个学生选修若干门课程,且每个学生每选一门课只有一个成
05
MySql简介
2
在数据库的设计过程中,对于同一个问题,选用不同的关系模式,其性能的优劣是大不相同的,为 了区分关系模式的优劣,人们常常把关系模式分为各种不同等级的范式。
满足特定要求的关系模式称为范式,按其规范化程度从低到高可分为5级范式(Normal Form), 分别称为1NF,2NF,3NF(BCNF),4NF和5NF。
学习目标
了解数据库系统的基本概念 理解数据模型的类型及相关概念 理解关系、关系模型相关概念 掌握E-R图的绘制的方法 掌握将E-R模型转换为关系模型的方法 理解关系的完整性规则 理解关系规范化
1
输入标题 标题
01 数据库系统 00122 数据模型
03
关系的完整性
04
关系模式规范化
不是。因为:学号→系名,系名→系主任,存在传递依赖关系。
解决方法:消除传递函数依赖。
8
分解为3NF的方法:
◦ 把直接对主码函数依赖的非主属性与决定它们的主码放在一个关系模 式中。
◦ 把造成传递函数依赖的决定因素连同被它们决定的属性放在一个关系 模式中。
◦ 检查分解后的新模式,如果不是3NF,则继续按照前面的方法进行分 解,直到达到要求。
MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总 体拥有成本低,尤其是开放源码这一特点,使得MySQL被广泛地应用在Internet上的 大中小型网站网中作为网站数据库,例如像Fa据库。
MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将 所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
15
MySQL5.7.17,在版本号5.7.17中: (1)’5’表示主版本号,描述了文件格式; (2)’7’表示发行级别,主版本号和发行级别构成了发行序列号; (3)’17’表示此发行系列内的版本号,序列内每发行一个新版该版本号会增加1. 在发行版本号中可能还会含有后缀,用该后缀标示发行版的稳定级别。可能的后缀有: (1)没有后缀,说明这是一个稳定版(General Avaliablity,GA),说明已经通过早期发
11
不属于BCNF的关系模式存在数据冗余,比如有40个学生选定某一门课程,则教师与 该课程的关系就会重复存储40次。可以将3NF分解为BCNF的关系模式,以消除数据冗 余。将3NF分解为BCNF的关系模式的方法:
(1)在3NF关系模式中去掉一些主属性,只保留主键,使该关系模式只有唯一候选键; (2)把去掉的主属性分别同各自的非主属性组成新的关系模式; (3)检查分解结果,如果仍有不满足BCNF,则按前两步骤继续分解。 按此方法,将S-T-J关系模式分解为满足BCNF的两个关系模式:S-T(学生,教师),
行阶段的测试,修复了重大bug,已经稳定并适合产品环境。只有一些关键的修复才会被该 发行版应用。 (2)mN。这是一类里程碑式的版本号。每一个里程碑内的版本号可能只关注测试完善一部 分特性,当这部分特性完善后则开始下一个里程碑。 (3)rc。表明这是候选发布版本,预示该版本已经经过内部测试,所有已知的致命bug被 修复。但由于该版本尚未被长时间广泛使用,是一个发行了一段时间的beta版本。 (4)alpha和beta:alpha版是发行包含大量未被完全测试的新代码;beta版表明所有新代 码已被测试,在一个月内没有出现致命错误,并且没有计划新增可能导致不稳定的新功能。
18
一位固定教师授课。 根据上述假设,可知该关系模式具有如下的函数依赖: (学生,课程)→教师,(学生,教师)→课程,教师→课程。 该关系模式的候选键为(学生,课程),(学生,教师)。因为该关系模式所有属性
都是主属性,所以S-T-J满足3NF,但不满足BCNF,因为教师属性是课程决定因素, 但教师属性是单一属性,不是键。
◦ 第一范式是对关系的最低要求。
示例:判断哪一张表是1NF?
4
✓ 第一范式可能存在的问题:
数据冗余:如各位老师的信息重复。 插入异常:如果要插入刘老师的个人信息,但刘老师未开课,会造成缺关键字“学
号”、“课程号”。 删除异常:当要删除 课程号=“C3” 的元组,会丢失李老师的信息。 修改量大。
T-J(教师,课程)。
12
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是一个真正的多用户、多线程SQL数据库服务器。
MySQL是一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和许多不 同的客户程序以及库组成的。
规范化程度较高的范式是较低范式的子集,一个低一级范式的关系模式,通过分解可以转换为若干 个高一级范式的关系模式,这个过程称为关系的规范化。
关系规范化的基本方法是逐步消除关系模式中不恰当的数据依赖,使关系模式达到某种程度的分离, 用一个关系来表达一事或一物。
3
定义
◦ 如果关系模式R的每个属性都是不可分解的,则称R属于1NF。
10
例如,要学生关系模式S (学号,姓名,性别,出生日期,系名)中,如果姓名有重 名的情况,则主键学号是该模型唯一决因素,所以S是BCNF范式;如果姓名没有重名, 则学号和姓名都是候选键,且除候选键外,该模型没有其它决定因素,所以S仍是 BCNF范式。
例如:设关系模式S-T-J(学生,教师,课程)。 其中:每位教师只教一门课程;每门课程有若干教师;某一学生选定某门课后就只有
13
MySQL数据库主要有以下特点: 可移植性:用C和C++编写,并用大量不同的编译器测试,保证了源代码的可移植 性。 多平台支持:MySQL支持如Linux、MAC、Windows等多种操作系统,在一个操作 系统中实现的应用可以很方便地移植到共他操作系统。 强大的查询功能:支持常见的SQL语句规范,可以对不同表的查询在同一查询中实 现,支持子查询、视图、存储过程、.触发器、事务、外键约束等等功能。 支持大型的数据库:可以处理拥有上千万条记录的大型数据库,在前面提到过,像 国内外的很多大型网站都在使用MySQL作为网站数据库。 完全免费:在网上可以任意下载,并且可以查看到它的源文件,进行必要的修改。 稳定性:MySQL服务器的功能齐全,运行速度很快,十分可靠,有很好的安全感。
关系模式SD的分解结果如下:
◦ SD1(学号,姓名,系名) ◦ SD2(系名,系主任)
9
BCNF:关系模式R的所有非主属性依赖于整个主属性, 则称R满足BCNF。BCNF是比3NF更高级别的范式。
根据BCNF的定义,可以知道满足BCNF的关系模式具有 以下特点:
所有非键属性对每一个键属性都是完全函数依赖; 所有的键属性对每一个不包含它的键也是完全函数依赖; 没有任何属性完全函数依赖于非键的任何一组属性。
5
定义
◦ 如果关系模式R为第一范式,且R中每个非主属性完全函数依赖 于R的主码,则称R属于2NF。
示例
◦ 下列关系模式是1NF,是否是2NF?为什么? SCD(学号,姓名,课程号,成绩,系名,系主任)
主码为复合码:学号+课程号
不是。因为:“姓名、系名、系主任”与主码是部分函数依赖(即: 只依赖于学号)
解决方法:消除部分函数依赖。
6
分解为2NF的方法: ◦ 把关系模式中对主码完全函数依赖的非主属性与决定它们的主码放在 一个关系模式中。 ◦ 把对主码部分函数依赖的非主属性和决定它们的主属性放在一个关系 模式中。 ◦ 检查分解后的新模式,如果仍不是2NF,则继续按照前面的方法进行 分解,直到达到要求。
14
1. 按操作系统分类 按操作系统类型,MySQL可分为Windows版、UNIX版、Linux版以及Mac OS版。
同时,针对这些操作系统的不同版本,也有相应的MySQl版本。因此在下载 MySQL时,需要根据不同的操作系统及版本选择下载相应的MySQL。 2.按用户群分类 针对不同的用户群,MySQL可分为以下四个不同的版本。 (1) MySQL Community Server 社区版本,开源免费,但不提供官方技术支 持。 (2) MySQL Enterprise Edition 企业版本,需付费,可以试用30天。 (3) MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个 Server。 (4) MySQL Cluster CGE 高级集群版,需付费。
7
定义
◦ 如果关系模式R为第二范式,且R中每个非主属性都不
传递函数依赖于R的主码,则称R属于3NF。
示例
◦ 下列关系模式是2NF,是否为3NF?为什么? SD(学号,姓名,系名,系主任)
绩;每个教师只担任一门课的教学,一门课由若干教师任教;一位教师可以 指导多个学生,一个学生在某个时间和地点只能被一位教师指导。“学生”有 属性:学号、姓名、性别、专业名。“教师”有属性:职工号、教师姓名、职 称,“课程”有属性:课程号、课程名。 试画出ER图,并注明属性和联系类型。
17
谢谢观看
,“商店”有属性:商店编号、商店名、地 址、电话,“顾客”有属性:顾客编号、姓名、地址、年龄、性别。假设一个 商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物 有一个消费金额和日期。
试画出ER图,并注明属性和联系类型。 任务二、假设每个学生选修若干门课程,且每个学生每选一门课只有一个成
05
MySql简介
2
在数据库的设计过程中,对于同一个问题,选用不同的关系模式,其性能的优劣是大不相同的,为 了区分关系模式的优劣,人们常常把关系模式分为各种不同等级的范式。
满足特定要求的关系模式称为范式,按其规范化程度从低到高可分为5级范式(Normal Form), 分别称为1NF,2NF,3NF(BCNF),4NF和5NF。
学习目标
了解数据库系统的基本概念 理解数据模型的类型及相关概念 理解关系、关系模型相关概念 掌握E-R图的绘制的方法 掌握将E-R模型转换为关系模型的方法 理解关系的完整性规则 理解关系规范化
1
输入标题 标题
01 数据库系统 00122 数据模型
03
关系的完整性
04
关系模式规范化
不是。因为:学号→系名,系名→系主任,存在传递依赖关系。
解决方法:消除传递函数依赖。
8
分解为3NF的方法:
◦ 把直接对主码函数依赖的非主属性与决定它们的主码放在一个关系模 式中。
◦ 把造成传递函数依赖的决定因素连同被它们决定的属性放在一个关系 模式中。
◦ 检查分解后的新模式,如果不是3NF,则继续按照前面的方法进行分 解,直到达到要求。
MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总 体拥有成本低,尤其是开放源码这一特点,使得MySQL被广泛地应用在Internet上的 大中小型网站网中作为网站数据库,例如像Fa据库。
MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将 所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
15
MySQL5.7.17,在版本号5.7.17中: (1)’5’表示主版本号,描述了文件格式; (2)’7’表示发行级别,主版本号和发行级别构成了发行序列号; (3)’17’表示此发行系列内的版本号,序列内每发行一个新版该版本号会增加1. 在发行版本号中可能还会含有后缀,用该后缀标示发行版的稳定级别。可能的后缀有: (1)没有后缀,说明这是一个稳定版(General Avaliablity,GA),说明已经通过早期发
11
不属于BCNF的关系模式存在数据冗余,比如有40个学生选定某一门课程,则教师与 该课程的关系就会重复存储40次。可以将3NF分解为BCNF的关系模式,以消除数据冗 余。将3NF分解为BCNF的关系模式的方法:
(1)在3NF关系模式中去掉一些主属性,只保留主键,使该关系模式只有唯一候选键; (2)把去掉的主属性分别同各自的非主属性组成新的关系模式; (3)检查分解结果,如果仍有不满足BCNF,则按前两步骤继续分解。 按此方法,将S-T-J关系模式分解为满足BCNF的两个关系模式:S-T(学生,教师),
行阶段的测试,修复了重大bug,已经稳定并适合产品环境。只有一些关键的修复才会被该 发行版应用。 (2)mN。这是一类里程碑式的版本号。每一个里程碑内的版本号可能只关注测试完善一部 分特性,当这部分特性完善后则开始下一个里程碑。 (3)rc。表明这是候选发布版本,预示该版本已经经过内部测试,所有已知的致命bug被 修复。但由于该版本尚未被长时间广泛使用,是一个发行了一段时间的beta版本。 (4)alpha和beta:alpha版是发行包含大量未被完全测试的新代码;beta版表明所有新代 码已被测试,在一个月内没有出现致命错误,并且没有计划新增可能导致不稳定的新功能。
18
一位固定教师授课。 根据上述假设,可知该关系模式具有如下的函数依赖: (学生,课程)→教师,(学生,教师)→课程,教师→课程。 该关系模式的候选键为(学生,课程),(学生,教师)。因为该关系模式所有属性
都是主属性,所以S-T-J满足3NF,但不满足BCNF,因为教师属性是课程决定因素, 但教师属性是单一属性,不是键。
◦ 第一范式是对关系的最低要求。
示例:判断哪一张表是1NF?
4
✓ 第一范式可能存在的问题:
数据冗余:如各位老师的信息重复。 插入异常:如果要插入刘老师的个人信息,但刘老师未开课,会造成缺关键字“学
号”、“课程号”。 删除异常:当要删除 课程号=“C3” 的元组,会丢失李老师的信息。 修改量大。
T-J(教师,课程)。
12
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是一个真正的多用户、多线程SQL数据库服务器。
MySQL是一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和许多不 同的客户程序以及库组成的。
规范化程度较高的范式是较低范式的子集,一个低一级范式的关系模式,通过分解可以转换为若干 个高一级范式的关系模式,这个过程称为关系的规范化。
关系规范化的基本方法是逐步消除关系模式中不恰当的数据依赖,使关系模式达到某种程度的分离, 用一个关系来表达一事或一物。
3
定义
◦ 如果关系模式R的每个属性都是不可分解的,则称R属于1NF。
10
例如,要学生关系模式S (学号,姓名,性别,出生日期,系名)中,如果姓名有重 名的情况,则主键学号是该模型唯一决因素,所以S是BCNF范式;如果姓名没有重名, 则学号和姓名都是候选键,且除候选键外,该模型没有其它决定因素,所以S仍是 BCNF范式。
例如:设关系模式S-T-J(学生,教师,课程)。 其中:每位教师只教一门课程;每门课程有若干教师;某一学生选定某门课后就只有
13
MySQL数据库主要有以下特点: 可移植性:用C和C++编写,并用大量不同的编译器测试,保证了源代码的可移植 性。 多平台支持:MySQL支持如Linux、MAC、Windows等多种操作系统,在一个操作 系统中实现的应用可以很方便地移植到共他操作系统。 强大的查询功能:支持常见的SQL语句规范,可以对不同表的查询在同一查询中实 现,支持子查询、视图、存储过程、.触发器、事务、外键约束等等功能。 支持大型的数据库:可以处理拥有上千万条记录的大型数据库,在前面提到过,像 国内外的很多大型网站都在使用MySQL作为网站数据库。 完全免费:在网上可以任意下载,并且可以查看到它的源文件,进行必要的修改。 稳定性:MySQL服务器的功能齐全,运行速度很快,十分可靠,有很好的安全感。
关系模式SD的分解结果如下:
◦ SD1(学号,姓名,系名) ◦ SD2(系名,系主任)
9
BCNF:关系模式R的所有非主属性依赖于整个主属性, 则称R满足BCNF。BCNF是比3NF更高级别的范式。
根据BCNF的定义,可以知道满足BCNF的关系模式具有 以下特点:
所有非键属性对每一个键属性都是完全函数依赖; 所有的键属性对每一个不包含它的键也是完全函数依赖; 没有任何属性完全函数依赖于非键的任何一组属性。
5
定义
◦ 如果关系模式R为第一范式,且R中每个非主属性完全函数依赖 于R的主码,则称R属于2NF。
示例
◦ 下列关系模式是1NF,是否是2NF?为什么? SCD(学号,姓名,课程号,成绩,系名,系主任)
主码为复合码:学号+课程号
不是。因为:“姓名、系名、系主任”与主码是部分函数依赖(即: 只依赖于学号)
解决方法:消除部分函数依赖。
6
分解为2NF的方法: ◦ 把关系模式中对主码完全函数依赖的非主属性与决定它们的主码放在 一个关系模式中。 ◦ 把对主码部分函数依赖的非主属性和决定它们的主属性放在一个关系 模式中。 ◦ 检查分解后的新模式,如果仍不是2NF,则继续按照前面的方法进行 分解,直到达到要求。
14
1. 按操作系统分类 按操作系统类型,MySQL可分为Windows版、UNIX版、Linux版以及Mac OS版。
同时,针对这些操作系统的不同版本,也有相应的MySQl版本。因此在下载 MySQL时,需要根据不同的操作系统及版本选择下载相应的MySQL。 2.按用户群分类 针对不同的用户群,MySQL可分为以下四个不同的版本。 (1) MySQL Community Server 社区版本,开源免费,但不提供官方技术支 持。 (2) MySQL Enterprise Edition 企业版本,需付费,可以试用30天。 (3) MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个 Server。 (4) MySQL Cluster CGE 高级集群版,需付费。