`
wangyanlong0107
  • 浏览: 480304 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

数据库系统概论--第八章--关系数据库的规范化理论

阅读更多

   8.1问题的提出

    数据库逻辑设计的一个强有力的工具--关系数据库的规范化理论。

    一个关系既可以用来描述一个实体及其属性,又可以用来描述实体间的联系。

    关系模式是用来定义关系的。

    一个数据库包含一组关系,定义这些关系的关系模式的全体就构成了该数据库的模式,建成模式Scheme。

    数据依赖指数据间的相互关联(主要体现于值的是否相等)。

    关系模式应当是一个五元组:

                R<U,D,DOM,F>

        (1)关系名R它是符号化的元组语义;

        (2)一组属性U;

        (3)属性组U中属性所来自的域D;

        (4)属性到域的映射DOM;

        (5)属性组U上的一组数据依赖F。

    数据依赖分类:函数依赖(Function Dependency)、多指依赖(Multivalued Dependency)。

    函数依赖:如学号(S#)、姓名(SN)、系名(SD)。一个学号对应一个学生,一个学生只能在一个系。就像自变量X确定后,相应的函数值f(x)也就唯一确定了一样。我们说S#函数决定SN、SD或者说SN、SD函数依赖于S#,记为S# ->SN,s#->SD。1:1单调函数,n:1费单调函数

    例如:现在建一个数据库描述学校中的情况,面临的对象有:学生(用学号S#描述),系(用系名SD描述),系主任(用姓名MN描述),课程(用课程名CN描述)和成绩(G)。于是得到了一组属性。

    U={S#,SD,MN,CN,G}

    根据现实需求:

      1.一个系有若干学生,一个学生只能属于一个系。

    2.一个系只有一个系主任。

    3.一个学生可以选多门课,一门课可以供多个学生选修。

    4.每个学生选修一门课有一个成绩。

    于是得到了属性组U上的一组函数依赖:F={S#->SD,SD->MN,(S#,CN)->G}

    如果只考虑函数依赖,得到一个关系模式S<U,F>

    在一个关系模式中,必然存在一个属性组E,对于该关系模式的任何一个关系,当E的值确定之后,关系中别的属性的值也唯一地被确定了,并且E的任何一个真子集不再具有这样的性质。那么E就是这个关系模式的一个,或叫做候选码。一个关系模式可有多个候选码,指定其中一个作为主码。在上面的关系模式中只有唯一码(S#,CN)。

    以上例子有三个“毛病”:

        1.如果系刚成立,还没有学生,或者有学生但是没有安排课程。则无法把该系及其负责人的信息存入数据库。这叫插入异常

        2.反过来,如果某系学生全部毕业,我们在删除该系同学的时候把这个系及其负责人的信息也删除了,这叫删除异常

        3.冗余太大。每一个系负责人的信息与该系每一个学生的每门课成绩出现一样多次数。浪费存储空间,维护困难。如换系主任了,逐一更改每一个学生选课元组。

    分析原因,函数依赖X->Y不仅给出了对关系的一个完整性约束,而且给出了数据库用作存储的某种联系:从X的信息应该知道Y的信息。若X不含码,就不能从X确定其他信息。即从存储的观点看,一个关系只能反映出码函数决定关系中别的属性的函数依赖。于是,本来S#->SD,SD->MN,但由于他们都不是码,这些信息就无法依附于S#或SD在数据库中存在,而必须让他们依附于(S#,CN)这个属性组(码)存在。这样就导致了三个“毛病”。

    解决办法就是使模式中的各个关系模式打到某种程度的“分离”。可以把关系模式S分成三个关系模式:SD<S#,SD,S#->SD>,SG<S#,CN,G,(S#,CN)->G>,D<SD,MN,SD->MN>。这就是一事一地的原则(one fact one place)一种关系值用来描述一个实体或实体间的属性。下面介绍规范化理论就是基于这样一个简单的概念。

   8.2规范化(Normalization)

    上节的例子说明并非所有满足1NF的关系都能很好的描述现实世界,必须做进一步的分析,以确定如何设计一个好的、反应显示世界的模式。本节描述如何将具有不合适性质的关系转换为更合适的形式。

    完全函数依赖:R(U)中,若X->Y,且对X的任何真子集X'均有X'->Y不成立,则,Y对X完全函数依赖。

    主属性:包含在任何一个候选码中的属性,叫做主属性。不包含在任何码中的属性叫做非主属性。

    传递依赖:R(U)中,若X->Y,(Y不是X的子集)Y->X不成立(n:1),Y->Z,则称Z对X传递函数依赖。若X<->Y(1:1)则X->Z,不是传递依赖了。

    全码:整个属性集U作为码。属性间多对多对多的关系为全码。

    范式:通常按照属性间的依赖情况区分关系规范化的程度为1NF,2NF,3NF,4NF,4NF等。

         投影运算:简单的说便是在关系中选择某些属性列。

    规范化:一个低一级范式的关系模式,通过投影运算可以转换为若干个高一级范式的关系模式的集合,这种过程就叫做规范化。

    2NF:若R∈1NF,且每一个非主属性完全函数依赖于码。-----不要有联合主键就满足2NF

如:上一节的例子码为(S#,C#),函数依赖有:

    (S#,C#)->G,S#->SD, (S#,C#)->SD, (S#,C#)->SL,S#->SL,SD->SL(因为每个系只住一个地方)。 (S#,C#)为码,决定G,SD,SL。可实际上S#就可以决定SD,SL。因此非主属性部分依赖于码。

    不满足2NF就会产生插入异常,删除异常,冗余太大。

    解决办法,用投影运算把关系模式分解为两个模式,SC=S-L-C[S#,C#,G];SL=S-L-C[S#,SD,SL]这样,均满足2NF。

    3NF:每个非主属性不部分依赖于码(2NF),也不传递依赖于码

    上例中SC∈3NF,SL不∈3NF,SL中有传递依赖。传递依赖会产生于2NF相似的问题。

    解决办法,用投影运算分解S-L为S-D[S#,SD]与D-L[SD,SL]。

    BCNF:关系模式R(U,F)∈1NF,若X->Y且Y不包含于X时,X必包含有码(表中(非主,主)属性必须依赖于码),则R<U,F>∈BCNF。BCNF比3NF又进一步。为修正的第三范式,有时也称第三范式。

    属性间关系:1:1X<->Y ; 1:nX->Y; n:n无函数依赖关系; 1:1:n X<->Y->Z; 1:m:mn X->Y->Z传递依赖

    3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的度量。一个模式中的关系模式如果都属于BCNF,n那么在函数依赖范畴,已经实现了彻底分离,已经消除了插入和删除异常。3NF的不彻底性表现在可能存在主属性对码的部分依赖和传递依赖

    BCNF是否就完美了呢?在函数依赖范畴内完美了,可是没有考虑多值依赖。

    多值依赖:设R(U)是属性集U上的一个关系模式,X、Y是U的子集。若对R(U)的任一关系R,对于X的一个给定值,存在Y的一组值与其对应。而Y的这组值又不以任何方式与U-X-Y中的属性值相关,那么就说Y多值依赖与X,记为X->->Y(n:m或1:n)。当Y的这组值的个数总为1时,X->->Y就成了X->Y。

    多值依赖具有对称性,若X->->Y,则x->->Z,其中Z=U-X-Y(多值依赖定义中的蓝字)。函数依赖可以看作是多值依赖的一种特殊形式。在关系模式中,若删除一些元组,则多值依赖可能被破坏。

    若X->->Y,而Z=∅,则称X->->Y为平凡的多值依赖

    多值依赖与函数依赖的比较:

    首先,在关系模式R(U)中函数依赖X->Y的有效性仅决定于X、Y这两个属性集的值。只要在R(U)的任何一个关系R中,元组在X和Y上的值满足定义8.1,则函数依赖X->Y在任何属性集W(XY包含于W包含于U)上成立。也就是说X->Y在R[W](XY包含于W包含于U)上成立的充要条件为X->Y在R[XY]上成立。

    而多值依赖并非如此。X->->Y在U上是否成立,不仅要检查X、Y上的值,而且要检查Z=U-X-Y上的值。因此若X->->Y在w(w包含于U)上成立,而在U上则不一定成立。所以多值依赖的有效性与属性集的范围有关。X->->Y在U上成立则在W(XY包含于W包含于U)上成立,反之则不然。

    4NF:关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y  X),X都含有候选码,则R∈4NF。(X→Y)如果R ∈ 4NF, 则R ∈ BCNF4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。因为根据定义,对于每一个非平凡的多值依赖X→→Y,X都含有候选码,于是就有X→Y,所以4NF所允许的非平凡的多值依赖实际上是函数依赖

  总结:

      在关系数据库中,对关系模式的基本要求是满足第一范式。这样的关系模式就是合法的、允许的。但是,人们发现有些关系模式存在插入、删除异常、修改复杂,数据冗余等毛病。人们寻找解决这些问题的方法,这就是规范化的目的。

      规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的‘分离’,即‘one fact one place’的模式设计原则。让一个关系描述一个概念,一个实体或者实体间的一种联系。若多于一个概念就把它‘分离出去’。因此所谓规范化实质上是概念的单一化。关系模式的规范化过程是通过对关系模式的分解来实现的。用投影运算把低一级的关系模式分解为若干个高一级的关系模式。这种投影分解不是唯一的。投影运算的原则下节会介绍。

        按照one fact one place的原则构造关系模式(建表)。

        1.建表不要定义联合主键,避免违反2NF。

        2.one fact one place,表中的码只能取一到两个,再多就要拆表了,避免违反3NF的传递依赖。

        3.两个以上多值依赖就拆分表,变成4NF。

        4.拿不准具体属性的表,用本章的规范化方法,画图,分析依赖关系,符合BCNF,投影运算,拆表,多值依赖变成4NF。

分享到:
评论

相关推荐

    数据库系统概论(基础篇)教学大纲.docx

    通过数据库系统概论(高级篇)的学习,学员可以系统地掌握数据库规范化理论和数据库设计的方法与步骤,具有设计和开发数据库应用系统的基本能力;掌握数据库事务处理、并发控制与恢复的基本技术、初步掌握数据库...

    数据库系统概论-第四版-第一章练习题及答案(1).doc

    第一章 习题 一、单项选择题 1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶 段。在这几个阶段中,数据独立性最高的是____阶段。 A. 数据库系统 B.文件系统 C.人工管理 D.数据...

    2017数据库系统概论作业-在线作业.docx

    A 数据库独立性 B 数据库安全性 C 结构规范化 2017数据库系统概论作业-在线作业全文共22页,当前为第2页。2017数据库系统概论作业-在线作业全文共22页,当前为第2页。D 操作可行性 2017数据库系统概论作业-在线作业...

    数据库课程设计--图书管理系统.doc

    分析关系模式中的依赖关系,对关系模式规范化处理 4、完成系统物理结构设计 为每个关系分配存储长度,建立数据库的索引和视图,定义关系中的主码和外码,写 出关系创建和查询的SQL语句。 5、编码 选择你自己熟悉的...

    数据库系统概论(第五版)ppt

    第一章:数据库系统的基本原理 第二章:关系数据库标准语言SQL 第三章:数据库编程 第四章:关系模型基本理论 第五章:数据库的安全性 第六章:事务与并发控制 第七章:故障恢复 ...第九章:关系模型规范化设计理论

    数据库系统导论(第七版)

    第8章 完整性 179 8.1 引言 179 8.2 类型约束 180 8.3 属性约束 181 8.4 关系变量约束 182 8.5 数据库约束 182 8.6 黄金法则 183 8.7 静态约束和动态约束 184 8.8 码 185 8.9 SQL对完整性的支持 191 8.10 小结 194 ...

    《数据库系统概论》知识点总结.docx

    关系数据库的(规范化理论)是使数据库设计方法走向完备的理论基础; 10.(数据库管理系统)是管理数据库的机构,是位于用户与操作系统之间的一层数据管理软件; 四.设计题: 某医院病房计算机管理中需要如下信息:...

    数据库系统教程课后答案(施伯乐)(第二版)

    第4章 关系数据库的规范化设计 4.1基本内容分析 4.2 教材中习题4的解答 4.3 自测题 4.4 自测题答案 第5章 数据库设计与ER模型 5.1基本内容分析 5.2 教材中习题5的解答 5.3 自测题 5.4 自测题答案 第6章 数据库的存储...

    数据库系统概论.pdf

    关系规范化中的插入操作异常是指 ( ) A.不该删除的数据被删除 B.不该插入的数据被插入 14.在关系数据库设计中,设计关系模式是数据库设计中( )阶段的 任务 A. 逻辑设计 B.物理设计 C.需求分析 D.概念设计 ...

    空间数据库管理系统概论.docx

    第一章 绪论 空间数据库管理系统概论全文共3页,当前为第1页。 空间数据库管理系统概论全文共3页,当前为第1页。 1.空间数据:空间数据是指以地球表面空间位置为参照的自然、社会和人文经济景观。 2.矢量数据:矢量...

    SQL-server数据库设计-餐饮管理系统.doc

    5 数据库实现 7 2.2程序设计 11 2.2.1概要设计 11 2.2.2程序实现 11 第3章 设计总结 14 参考文献 15 第1章 设计目的与要求 1.1设计目的 本设计专题是软件工程类专业的有关管理信息系统设计开发的一个重要环节,...

    数据库习题及答案 课后练习

    第4章 关系数据库的规范化设计 4.1基本内容分析 4.2 教材中习题4的解答 4.3 自测题 4.4 自测题答案 第5章 数据库设计与ER模型 5.1基本内容分析 5.2 教材中习题5的解答 5.3 自测题 5.4 自测题答案 第6章 数据库的存储...

    数据库原理与应用期末复习重点

    第1章数据库系统概论/1 1.1信息、数据、数据处理与数据管理/1 1.1.1信息与数据/1 1.1.2数据处理与数据管理/2 1.2数据库技术的产生与发展/3 1.3数据库系统的组成/8 1.4数据库系统体系结构/11 1.4.1数据库系统内部体系...

    网上书店管理信息系统-数据库课程设计.doc

    、题目的目的和要求 通过数据库系统原理课程设计的操作与实践,使学生了解关系数据库的相关理论知 识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识 、创新能力,具体掌握的基本能力...

    数据库设计与应用开发.docx

    《数据库系统概论》实验报告 数据库设计与应用开发全文共5页,当前为第1页。 专业班级 11网工1-2 实验地点 计算机大楼423机房 学生学号 指导教师 学生姓名 实验时间 实验项目 实验3 数据库设计与应用开发(6学时) ...

    数据库系统概论笔记整理——第二章(关系数据库之主码,候选码,关键字,外码,全码,主属性,笛卡尔积,关系的完整性等)

    :red_heart_selector: 关系数据结构及形式化定义 1.笛卡尔积:当做一个表来说,就是一行是一个元组,一列是一个域,是域的基数的相乘 2.关系:一张规范的二维表 3.域:是一组具有相同的数据类型的值的集合 4.域的...

    MySQL 5权威指南(第3版) 中文版 下载地址

     第8章 数据库设计概论  8.1 参考读物  8.2 数据表类型  8.3 MySQL数据类型  8.4 数据库设计技巧  8.5 规范化  8.6 层次关系的处理  8.7 关系  8.8 主键和外键  8.9 索引  8.10 视图  8.11 ...

    图书销售系统的数据库设计.doc

    用3NF等方法对每个关系模式进行规范化设计后,如下: 用户(用户号,客户名,密码,邮箱,地址,电话,身份证,权限) 图书(ISBN号,书名,单价,作者,出版社,分类ID,用户号) 分类(分类号,类名) 订单(订单号,数量,总价,...

    旅店管理信息系统课程设计.doc

    第2章 设设计内容 2.1数据库设计 2.1.1需求分析 本系统是一个综合性旅店收费管理系统,针对中国旅店实际需要来开发,现代化旅店 是集客房、餐饮、通讯、娱乐,商务文化及其他各种服务及设施为一体化消费场所,组 织...

Global site tag (gtag.js) - Google Analytics