数据库复习之规范化理论

声明:本文为作者复习数据库课程时简单记录的笔记,如有错误之处,敬请指出,谢谢。

6.1问题的提出

1.一个关系模式是一个五元组,形如R(U,D,DOM,F)。其中D、DOM与模式设计关系不大,可以看作三元组R<U,F>。

  • 关系名R是符号化的元组定义;
  • U为一组属性;
  • D为属性组U中的属性所来自的域;
  • DOM为属性到域的映射;
  • F为属性组U上的一组数据依赖。

2.数据依赖:一个关系内部属性与属性之间的一种约束关系。最重要的是函数依赖(FD)多值依赖(MVD),还有一个叫连接依赖。

3.分析关系模式常见问题:

  • 数据冗余:重复出现,浪费空间。(尽可能少)
  • 更新异常:更新代价(最好没有)
  • 插入异常:插入部分信息时无法插入(最好没有)
  • 删除异常:可能删除了其他想要的数据(最好没有)

6.2规范化

1.函数依赖:(概念省略,X、Y是属性组U的子集)X函数确定Y或Y函数依赖于X,记作X→Y。例如:系号→系名,学号→姓名。

  (1)函数依赖不是指关系模式R中的某些关系满足的约束条件,而是指R上的一切关系都要满足的约束条件。函数依赖关系的存在与时间无关,而只与数据之间的语义规定有关。 函数依赖的存在与时间无关,只与数据之间的语义定义有关。

  (2)函数依赖的基本性质:扩张性,投影性,合并性,分解性,

2.非平凡的函数依赖X→Y:X→Y,但Y不包含于X。默认我么讨论的都是非平凡的函数依赖。

3.平凡的函数依赖X→Y:X→Y,但Y包含于X。必然成立(好像是废话)。

4.若X→Y,则称X为这个函数依赖的决定属性组,也称决定因素,Y为依赖因素。



5.完全函数依赖:在R(U)中,如果X → Y,并且对于X的任何一个真子集X’,都有X’ /→ Y,则称Y对X完全函数依赖。记作X F→ Y。

  推论:单一决定因素一定是完全函数依赖。

  例:(学号,课程号)→成绩

6.部分函数依赖:在R(U)中,如果X→Y,且Y不完全函数依赖于X,则称Y对X部分函数依赖。记作X P→ Y。

  例:(学号,课程号)→课程名  (因为课程号→课程名,而课程号是(学号,课程号)的真子集)

7.传递函数依赖:在R(U)中,如果X→Y(Y不包含于X),Y /→ X,Y→Z(Z不包含于Y),则称Z对X传递函数依赖。记为X 传递(t)→ Z。

  注:条件中要有Y /→ X,是因为如果Y→ X,则Y←→ X,则X直接→ Z,属于直接函数依赖,而非间接。

  例:系号→系名,系名→系主任名。



8.候选码:设K为R<U,F>中的属性或属性组合,若K F→ U,则称K为R的候选码(候选键)。(即U完全依赖于K)。

9.超码:若U部分依赖于K,即K P→ U,则称K为超码(超键)。候选码是最小的超码

10.候选码可能多于一个,可选其中一个作为主码。包含在任何一个候选码中的属性称为主属性;不包含在任何一个候选码中的属性称为非主属性(非码属性)。最简单的情况,单个属性是码(主码或候选码);最极端的情况,整个属性组U是码,称为全码。(主码and候选码都简称码)

11.关系模式R中的属性或属性组X不是R的码,但X是另一个关系模式的码,则称X为R的外部码(外码)



12.第一范式(1NF):每一个分量必须是不可分的数据项(关系中每个属性都是不可再分的简单项)。

13.第二范式(2NF):若R满足第一范式,且每一个非主属性完全函数依赖于任何一个候选码。

  推论:候选码为单属性或者全码,则属于2NF。

  特点:不存在非主属性对候选码的部分函数依赖。

  1NF→2NF:消除非主属性对候选码的部分函数依赖,把部分函数依赖投影出来单独成表。(一事一表)

14.第三范式(3NF):若R满足第二范式,且它的每一个非主属性都不传递依赖于任何候选码。

  定义:关系模式R<U,F>属于第一范式,若R中不存在这样的码X,属性组Y及非主属性Z(Y不包含于Z)是的X→Y,Y→Z成立,Y/→X,则称R属于3NF。

  定义理解:3NF的定义由1NF推过来的,不太好理解,判定的话用上上行2NF推导过来的就可以了,这个定义同时也可以证明,若R属于3NF,则R必属于2NF。

  特点:每一个非主属性对候选码没有部分函数依赖,也没有传递依赖。

  缺点:3NF只限制了非主属性对键的依赖关系,而没有限制主属性对键的依赖。

  2NF→3NF:消除非主属性传递依赖,把传递依赖投影出来单独成表。(一事一表)

15.BCNF:关系模式R<U,F>中,每一个决定因素都包含R的一个码(候选键),则R属于BCNF。

  定义:关系模式R<U,F>属于第一范式,若X→Y(Y不包含于X)是X必含有码,则R属于BCNF。

  特点:排除任何属性对候选码的传递依赖和部分依赖。在函数依赖范畴内实现彻底分离,消除插入和删除异常。

  推论:如果R属于BCNF,则

  • R中所有非主属性对每一个码都是完全函数依赖;
  • R中所有主属性对每一个不包含它的码,都是完全函数依赖;
  • R中没有任何属性完全函数依赖于非码的任何一组属性。

  定理:如果R属于BCNF,则R属于3NF一定成立。反之不一定成立,因为3NF的不彻底性(可能存在主属性对码的部分依赖和传递依赖)。

  例:(S,J)→T,(S,T)→J,T→J。候选码为(S,J)、(S,T),T是决定因素,但T不包含码。

16.第四范式4NF:限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。(不要求)

17.一个低一级范式的关系模式可以通过模式分解转换为若干个高一级范式的关系模式集合,这个过程叫做规范化

  总结:在实际应用中,最有价值的是3NF和BCNF,在进行关系模式的设计时,通常分解到3NF就可以了。

作者: AlvinZH

出处: http://www.cnblogs.com/AlvinZH/

本人Github:https://github.com/Pacsiy/JobDu

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

时间: 2024-10-11 08:20:39

数据库复习之规范化理论的相关文章

数据库复习之规范化理论应用(第八次上机内容)

声明:本文为作者复习数据库课程时简单记录的笔记,如有错误之处,敬请指出,谢谢. 一.理论基础 1.无损连接性(Lossless Join):设关系模式R(U,F)被分解为若干个关系模式R1(U1,F1),R2(U2,F2),…, Rn(Un,Fn),其中U=U1U2…Un,且不存在UnUj式,Fi为F在Uj上的投影,如果R与R1,R2,…,Rn自然连接的结果相等,则称关系模式R的分解具有无损连接性. (上面别看了,看下面!) 简单来说,就是如果对分解后的新关系进行自然连接得到的元组的集合与原关系

数据库复习1——数据库体系结构和关系系统

数据库复习 CH2 数据库体系结构 2.1 数据库体系结构层次 数据库体系结构可以分成3个层次: 外部层次 概念层次 内部层次 外部层次是指每个用户用不同的高级语言来访问数据库所面对的接口,概念层次数据库信息的表示以及模的式定义(包括安全性和完整性约束等等),而内部层次就是的存储表示(非物理记录也非机器相关),数据库的设计需要保证这三个层次之间的独立性: 概念层和内部层之间物理数据的独立性 外部层和概念层之间逻辑数据的独立性 2.2 DBA和DBMS DBA(数据库管理员)必须很好的了解企业的数

数据库复习11——关系模式与范式

数据库复习 CH11 关系模式与范式 11.1 关系模式的设计 数据库模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,关系型数据库的模式又叫关系模式,我所理解的关系模式就是数据库中表结构的定义以及多张表之间的逻辑联系 关系模式的设计就是根据一个具体的应用,把现实世界中的关系用表的形式来表示的逻辑设计过程,不规范的关系模式设计会带来以下的问题: 数据冗余 更新异常 插入异常 删除异常 举ppt中例子说明四种问题,如下表中描述了老师信息(一个老师一个地址,可以教多门课,一门课只有一名老

数据库复习3——数据库完整性

数据库复习 CH5 完整性 5.1 完整性约束 数据库完整性是指数据库中数据在逻辑上的一致性.正确性.有效性和相容性,那么完整性约束就是指用户插入.修改和删除操作时,DBMS为了保证数据库逻辑上的一致性.正确性.有效性和相容性所必需要检查的约束条件 C.J.Date在<An Introduction to Database Systems>一书中描述了四种完整性约束: 类型约束 属性约束 关系变量约束 数据库约束 C.J.Date提出的理论多半是建立在他自创的Tutorial D这个概念型数据

数据库复习7——恢复

数据库复习 CH14 恢复 13.1 恢复的概念 数据库系统中恢复是指让数据库从发生某些"失败"后的不一致的状态恢复到正常的一致状态的行为,恢复的基础是冗余(物理上冗余,非逻辑上) 这些失败包括了: 事务失败:包括逻辑错误(事务不满足某些条件不能执行)和系统错误(DBMS强制终止事务,如事务发生死锁) 系统崩溃:断电.物理硬件损坏.软件系统(如OS)崩溃,本章假设系统崩溃不会改变非易失存储器 磁盘失败:磁盘存储发生错误,本章假设可利用检查和监测磁盘失败 大体上,恢复策略分成两个步骤:

数据库复习5——安全性

数据库复习 CH7 安全性 7.1 数据库安全性介绍 如果说完整性是针对授权用户的数据库保护措施,那么安全性就是针对非授权用户的数据库保护措施 安全性问题涉及的层面很多,非法用户可以从以下各层面对数据库的窃取或篡改: 层面 窃取或篡改行为 应对措施 数据库系统 获取高级用户数据库权限 身份验证,权限和可获取数据对等 操作系统 获取操作系统root权限想干啥就能干啥,不仅仅限于对数据库的操作了 提升操作系统安全级别 网络 通过网络窃听和身份伪装也能窃取线上机密数据 身份验证和加密传输 物理 物理上

数据库复习10——PL/SQL

数据库复习 CH10 PL/SQL 10.1 PL/SQL简介 PL/SQL是Oracle对SQL的过程化的扩展,PL/SQL可以实现SQL相关的过程化程序,并且能够以存储过程和函数的方式让一段SQL业务逻辑驻留在SQL服务器中,以便减少客户机计算任务并减少网络I/O 10.2 PL/SQL编程基础 (1)简介 PL/SQL编程框架为: DECLARE <Variable List> BEGIN <Extented SQL Execution> EXCEPTION <Exce

数据库复习6——事务

数据库复习 CH13 事务 13.1 事务的概念 事务是作为单个逻辑工作单元执行的一系列数据库操作,这些操作可能会修改多个表中的多个元组 事务正常执行的结构是: begin; SQL execution 1 SQL execution 2 ... SQL execution N commit; begin标志开始一个事务,多个SQL语句就是事务逻辑工作单元,commit(提交)是结束当前事务并提交事务内数据变更,让其生效 数据库一致性在事务上表现的比较特殊,具体来说:事务执行的过程中可以让数据库

数据库复习4——视图

数据库复习 CH6 视图 6.1 视图的概念 视图是从一个或多个表(或视图)导出的虚表,DBMS仅在数据字典中存放视图的定义,而视图的数据仍然实际存储于导出它的基表中 Tutorial D中定义视图的基本语句如下: VAR <view_name> VIEW (<relational_condition>) {<property_list>}; 那么视图有什么作用呢? 为hidden data提供安全性,即屏蔽某些不希望外界用户看到的机密数据 提供一种简写的方式,有了视图