首页 > 数据库 >【数据库系统原理与设计】(五)关系数据理论与模式求精

【数据库系统原理与设计】(五)关系数据理论与模式求精

时间:2022-11-23 11:33:14浏览次数:40  
标签:3NF 依赖 范式 函数 关系数据 模式 分解 求精 数据库系统

五. 关系数据理论与模式求精

5.1 问题提出

 1. 数据冗余导致的问题:

 

  • 冗余存储:信息被重复存储,导致浪费大量存储空间
  • 更新异常:当重复信息的一个副本被修改,所有副本都必须进行同样的修改。因此当更新数据时,系统要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险
  • 插入异常:只有当一些信息事先已经存放在数据库中时,另外一些信息才能存入数据库中
  • 删除异常:删除某些信息时可能丢失其它信息

 

 2.  模式分解导致的问题 

  • 将一个关系模式分解为较小关系模式集可解决冗余问题。但由此可能产生两个新的问题:
    • 什么样的关系模式需要进一步分解为较小的关系模式集?
      • 根据范式要求决定(后面讨论)
    • 是否所有的模式分解都是有益的?
      • 实例
  • 模式分解存在的问题
    • 有损分解:两个分解后的关系通过连接运算还原得到的信息与原来关系的信息不一致
    • 丢失依赖关系

 3. 一个“好”的关系模式应该是:

  • 数据冗余尽可能少(即数据共享尽可能高)
  • 不发生插入异常、删除异常、更新异常等问题
  • 模式分解时,分解后的模式应具有无损连接、 保持依赖等特性

 

 

 

 5.2 函数依赖定义

 1. 函数依赖

  •  α函数确定β  , 或β函数依赖于α,记作 α→β

 

  • α→β 函数依赖图:

 

  • 函数依赖是指关系模式r(R)的所有关系实例均要满足的约束条件
  • 函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖,是不能够被证明的
  • 数据库设计者可以对现实世界作强制的规定
  • 码约束是函数依赖的一个特例

 

 

 2. 平凡与非平凡函数依赖 

  •  若 α→β,但 β¢(不属于)α,则称 α→β 是非平凡函数依赖。否则,若β属于α, 则称 α→β 是平凡函数依赖

     

     

  • 平凡与非平凡函数依赖图:

 

 3. 完全函数依赖和部分函数依赖

 

  • 部分 α→β 依赖图:

 

 

 

 4. 传递函数依赖

 

 

 

 

 

 

5.3 范式

  • 基于函数依赖理论,关系模式可分成
    • 第一范式(1NF):所有属性都是原子的
    • 第二范式(2NF):不存在非主属性对候选码的部分依赖
    • 第三范式(3NF):不存在非主属性对候选码的传递依赖
    • Boyce-Codd范式(BCNF)
  • 这几种范式的要求一个比一个严格,它们之间的联系为:
    • 满足BCNF范式的关系一定满足3NF范式,满足3NF范式的关系一定满足2NF范式,满足2NF范式的关系一定满足1NF范式

 

5.3.1 第一范式(1NF) ——码 

 

 

 

  •  第一范式的目标是:将基本数据划分成称为实体集或表的逻辑单元,当设计好每个实体后,需要为其指定主码
  • 关系数据库的模式至少应是第一范式

 

5.3.2 第二范式(2NF) ——全部是码 

 

 

 

 

 

 

  •  第二范式的目标:将只部分依赖于候选码(即依赖于候选码的部分属性)的非主属性移到其他表中
  • 2NF范式虽然消除了由于非主属性对候选码的部分依赖所引起的冗余及各种异常,但并没有排除传递依赖

 

5.3.3 第三范式(3NF) ——仅仅是码 

 

 

 

  •  第三范式的目标:去掉表中不直接依赖于候选码的非主属性
  • 所有的非主属性应该直接依赖于(即不能存在传递依赖,这是3NF的要求)全部的候选码(即必须完全依赖, 不能存在部分依赖,这是2NF的要求)

 

 5.3.4 Boyce-Codd范式(BCNF) 

 

 

 

  • 从函数依赖角度可得出,一个满足BCNF的关系模式必然满足下列结论:( 如果 α→β 非平凡, 则 α 是r(R)的一个超码)
    • 所有非主属性都完全函数依赖于每个候选码;
    • 所有主属性都完全函数依赖于每个不包含它的候选码;
    • 没有任何属性完全函数依赖于非候选码的任何一组属性。

 

 

 

 

 

  • 3NF与BCNF范式的区别在于第3个条件

 

 

 

 

  •  3NF与BCNF比较:
    • BCNF比3NF严格。
    • 3NF存在数据冗余和异常问题,而BCNF是基于函数依赖理论能够达到的最好关系模式。
    • BCNF范式分解是无损分解,但不一定是保持依赖分解;而3NF分解既是无损分解,又是保持依赖分解

 

 5.4 函数依赖理论

 5.4.1 函数依赖集闭包 

 

 

 

 

 

 

 

 5.4.2 属性集闭包

 

 

 

 *5.4.3 正则覆盖

 (略...宛如天书)

 

 5.4.4 无损连接分解

 

 

 

 

 

 5.4.5 保持依赖分解

 

 

 

 5.5 模式分解算法

 

 

 

 

 

 

 

 

 

 

 

 

未完待续....

 

标签:3NF,依赖,范式,函数,关系数据,模式,分解,求精,数据库系统
From: https://www.cnblogs.com/ZWJ-zwj/p/16917406.html

相关文章

  • 《数据库原理及应用》PPT整理第1章数据库系统概述
    学习更多的时候还是自己去看书,老师看了一周的知识,整理才讲一次课。                                ......
  • MySQL数据库系统(十四章)
    目录第14章:MySQL数据库系统MySQL简介安装与使用MySQL第14章:MySQL数据库系统知识点归纳总结:本章讨论了MySQL关系数据库系统;介绍了MySQL并指出了它的重要性;MySQL简介......
  • Unix/Linux编程(MySQL数据库系统)
    1MySQL介绍MySQL是一个关系数据库系统在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关联。关系结构使得可在表上运行......
  • 数据库系统
    数据库系统数据库的四个基本概念:1、数据:描述事物的符号记录2、数据库:3、数据库管理系统4、数据库系统数据库系统的特点:数据结构化数据共享性高,冗余度低且易扩充......
  • 第14章——MySQL数据库系统
    第14章——MySQL数据库系统摘要MySQL关系数据库系统;在Linux机器上安装和运行MySQL;使用MySQL在命令模式和批处理模式下使用SQL脚本创建和管理数据库;将MySQL与C编......
  • sql server 数据库系统表及表结构查询
    sysobjects表结构:列名数据类型描述namesysname对象名,常用列idint对象标识号xtypechar(2)对象类型,常用列。xtype 可以是下列对象类型中的......
  • 第三章 关系数据库标准语言SQL
    3.1SQL概述(略)3.2学生-课程数据库3.3数据定义数据库>模式>表、视图和索引一个数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模......
  • rqlite 基于sqlite 的轻量级分布式关系数据库
    rqlite是基于sqlite做为存储的分布式关系数据库,对于分布式处理基于了raft协议包含的特性部署简单使用简单,包含了httpapi以及,命令行接口,以及clientsdk完整企业级......
  • 第二章 关系数据库
    2.1关系数据结构集形式化定义2.1.1关系域:一组具有相同数据类型的值的集合。例:{0,1}{男,女}笛卡儿积:域上的一种集合运算关系:关系中涉及的码:候选码:某......
  • 第六章-关系数据理论
    本章的目的:如何构造一个好的数据库模式6.1问题的提出:关系模式的表示:关系模式由五部分组成,是一个五元组:R(U,D,DOM,F)R表示关系模式名U表示一组属性D表示U的取值范......