关系数据库规范化
第7章 关系数据库规范化理论

7.2.1 关系模式中的码
例:
关系模式S(Sno,Sdept,Sage),单个属性Sno是码
SC(Sno,Cno,Grade)中,(Sno,Cno)是码 关系模式R(P,W,A)
P:演奏者
W:作品
A:听众
一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品 码为(P,W,A),即All-Key
Sno→SName
Sno→Sdept
Sno→Sage
例:SC(Sno, Cno, Grade)
(Sno, Cno)→Grade
8
7.1.2 一些术语和符号
平凡函数依赖与非平凡函数依赖
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y X,则称X→Y是非平凡的函数依赖
若X→Y,但Y X,
则称X→Y是平凡的函数依赖
例:在关系SC(Sno, Cno, Grade)中,
非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno
(Sno, Cno) → Cno
如不作特别说明,总是讨论非平凡函数依赖。
9
7.1.2 一些术语和符号
若X→Y,则X称为这个函数依赖的决定属性
24
7.2.1 关系模式中的码
外部码:用于关系表之间建立关联的属性(组)。 关系模式 R 中属性或属性组X 并非 R的码,但 X
是另一个关系模式的码,则称 X 是R 的外部码,也 称外码。
如在SC(Sno,Cno,Grade)中,Sno不是码,
但Sno是关系模式S(Sno,Sdept,Sage)的码, 则Sno是关系模式SC的外部码
关系数据库的规范化设计

第二范式
确保每个非主键列完全依赖于主键,消除非主键列之间的传递依赖。
第三范式
确保每个列只与键直接相关,消除非键列之间的传递依赖。
规范化设计的优点
1 数据一致性
通过消除数据冗余和重 复,确保数据库中的数 据一致性。
2 查询效率
通过优化数据结构,提 高查询性能,减少数据 操作的时间。
3 存储优化
通过合理的数据分解和 组织,减少数据存储空 间的占用。
规范化设计的挑战
复杂性
规范化设计需要考虑多个表之间的关系和依赖,增加了设计的复杂性。
性能折衷
规范化设计可能导致性能折衷,某些查询可能需要多个表的连接操作。
更新操作
规范化设计可能导致更新操作的复杂性,特别是在涉及多个表的更新操作时。
最佳实践和常见错误
最佳实践
• 了解业务需求和数据关系 • 谨慎添加冗余数据 • 使用正确的数据类型和约束
常见错误
• 拆分过分,导致过多的连接操作 • 忽略实际查询需求,导致性能问题 • 不正确地处理关联关系,导致数据不一致
总结和重点
1 规范化设计是优化关系数据库结ቤተ መጻሕፍቲ ባይዱ
构的重要技术
3 规范化设计有优点和挑战,需要
权衡设计决策
2 三个范式规则用于确保数据的一
致性和查询效率
4 遵循最佳实践并避免常见错误是
实现成功的关键
关系数据库的规范化设计
在关系数据库设计中,规范化是一种重要的技术,它的目标是优化数据库结 构以提高数据的存储效率和查询性能。
规范化设计的概念和目的
规范化设计是一种组织和优化数据库结构的过程,通过将数据分解成更小的关系表,消除数据冗余和不 一致,以提高数据存储和查询效率。
关系数据库的规范化之第一范式、第二范式、第三范式以及BC范式

关系数据库的规范化之第⼀范式、第⼆范式、第三范式以及BC范式 关系数据库设计的⽅法之⼀就是设计满⾜适当范式的模式,通常可以通过判断分解后的模式达到⼏范式来评价模式规范化的程度。
范式有1NF,2NF,3NF,BCNF,4NF,5NF,其中1NF的级别最低。
这⼏种范式之间,5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF成⽴。
通过分解,可以将⼀个低⼀级范式的关系模式转化成若⼲个⾼⼀级范式的关系模式,这个过程为规范化。
下⾯我们来看⼀个栗⼦(好吃),有错误的地⽅希望读者可以提出改正。
供应者和它所提供的零件信息,关系模式FIRST和函数依赖集F如下: FIRST(Sno,Sname,Status,City,Pno,Qty)(公司编号,名称,状态,城市,产品编号,数量) F={Sno->Sname,Sno->Status,Status->City,(Sno,Pno->Qty)} 可以很明显的看出,该关系中不含有可以再分的数据项(什么是可以再分的数据项?想象⼀张table,不应存在两个相同的字段,即两个相同的数据项。
如果存在了,就说明他有了可以再分的数据项,就不是关系模式的数据库了。
存在了可再分的数据项,就要考虑新增实体,将两个数据项分别放到两个实体上),所以该关系满⾜第⼀范式的条件。
1NF 第⼀范式 定义:若关系模式R的每⼀个分量是不可再分的数据项,则关系模式R属于第⼀范式 第⼀范式有四个缺点:(1)冗余度⼤(2)引起数据修改不⼀致(3)插⼊异常(4)删除异常此处对该四个缺点不进⾏详细描述 当我们使⽤第⼀范式设计数据库的时候,会发现我们以Sno作为主键(码)的时候,不能唯⼀标识⾮主键字段(⾮主属性)Qty,但是⾮主属性Sname,Status却可以被Sno唯⼀标识且和Pno没有关系,此时对于数据库的使⽤会存在影响,所以要消除这种部分函数依赖的情况。
消除了这种部分函数依赖关系后,所得到的两个关系中⾮主属性完全依赖于码,这种规范称为第⼆范式。
关系数据库规范化理论

规范化可以消除数据冗余,确保每个数据只在数据库中存储一次,从而提高数据的一致性。
第一范式 (1NF)
表结构
第一范式要求每个数据表都应具有原子性,即每 个表中的列不能再进一步分解。
主键
每个表必须具有一个唯一标识记录的主键,用于 保证数据的唯一性和关联性。
第二范式 (2NF)
1 函数依赖
数据表中出现函数依赖时,就需要进行第二范式的规范化。避免冗余数据。
关系数据库规范化理论
规范化是设计关系数据库中的一项重要理论,它能使数据存储结构更加合理、 高效。通过划分数据表,规范化能够消除数据冗余、提高数据一致性和查询 性能。
规范化定义
目的明确
规范化通过一定的规则将一个大的数据表拆分成多个小的数据表,以实现数据的高内聚和低 耦合。
数据准确性
规范化能确保数据的准确性,因为数据被划分为更小的范围,每个数据表只存储特定类型的 数据。
3 学生管理系统
拆分学生、课程、成绩等信息,确保学生信息的一致性和教务管理的高效性。
规范化的局限性及未来研究方向
局限性
规范化可能导致表结构复杂,加重查询和维护 的工作量。某些情况下,冗余数据可能是必要 的。
未Hale Waihona Puke 研究方向未来的研究可以探索如何在规范化的基础上平 衡数据一致性和查询性能,以及结合其他技术 实现更灵活的数据存储。
优点 数据一致性提高 数据冗余减少 数据更新更容易
缺点 可能会导致过度分解数据表,增加查询复杂性 可能引起频繁的表连接操作,影响查询性能 增加了设计和维护的复杂性
规范化的应用举例
1 在线购物系统
将用户、订单、商品等信息拆分为多个表,确保数据的一致性和查询效率。
数据库课件第4章关系数据库(RDB)规范化设计理论

3. 完全函数依赖与部分函数依赖
完全函数依赖: 在关系模式R(U)中,如果X→Y,并且对于X的任何一 个真子集X′,都有X′ Y,则称Y完全函数依赖于X, 记作X f Y。 部分函数依赖: 若X→Y,但Y不完全函数依赖于X,则称Y部分函数依 p Y。 赖于X,记作X
例8: 学生(学号,姓名,所在系,系主任姓名,课程号,成绩) 学生关系模式存在的部分函数依赖: p (学号,课程号) 姓名 p 所在系 (学号,课程号) p (学号,课程号) 系主任姓名
教师姓 名
李林 78号
住址
课程号
C1
课程名
N1
李林
李林 汪佳 吴仪
78号
78号 59号 79号
C2
C3 C4 C5
N2
N3 N4 N5
师帆
76号
C6
N6
⑷当执行数据插入时,DB中的数据不能产生插入 异常现象 所谓“插入异常”是指希望插入的信息由于不 能满足数据完整性的某种要求而不能正常地被 插入到DB中的异常问题。 比如:上例中插入一个尚未安排授课的新进教师 信息. 原因: 因多种信息混合放在一个表中,可能造成因一 种信息被捆绑在其他信息上而产生的信息之间 相互依附存储的问题,使得信息不能独立插入。
第4章
关系数据库(RDB)规范化理论
4.1 关系模式规范化的必要性 4.2 数值依赖 4.3 范式与规范化 、关系分解原则
RDB规范化理论的目的是要设计“好的”RDB模式。要设计 好的关系模式,必须是关系满足一定的约束条件,此约束 形成了规范。 范式(Normal Form):衡量DB规范的层次或深度,DB规范化 层次由范式来决定。简记作NF. 根据关系模式满足的不同性质和规范化的程度,将关系模 式分为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、 BC范式、第四范式(4NF)、第五范式(5NF),范式越高规范 化程度越高。 规范化:低级关系模式通过模式分解转换为若干高级范式 的关系模式集合的过程。 规范化是在RDB中减少数据冗余的过程。
数据库中的关系规范化与优化

数据库中的关系规范化与优化随着现代信息技术的迅猛发展,数据管理和存储成为企业和机构关注的焦点。
数据库作为当前最为普遍和有效的数据存储技术,其重要性愈发凸显。
而在数据库中,关系规范化和优化是必不可少的环节。
本篇文章将着重探讨数据库中的关系规范化与优化,包括概念、作用、方法和注意事项等方面。
一、概念与作用关系规范化是数据库设计的核心环节之一,其主要目的是提高数据在数据库中的存储效率,同时减少数据冗余和数据不一致性等问题。
具体而言,关系规范化可以被理解为一个将原始数据表拆分成多个关联表的过程。
在这个过程中,设计人员需要根据一定的规则将原始表中的数据行分成若干个新的关联表,并保证每个表中只包含相关的数据。
关系规范化对数据库设计和管理的作用非常重要。
首先,它可以减少数据冗余并提高数据的存储效率,这就意味着数据库系统的整体性能将会得到提升。
其次,关系规范化还可以保证数据不会重复出现在多个表中,从而降低数据不一致性的发生率,保障了数据库的数据准确性。
最后,关系规范化还可以更加灵活地维护数据表之间的关联关系,让数据库的数据结构更加清晰、简洁。
二、基本步骤和方法一旦我们认识到关系规范化的重要性,就需要了解具体的规范化方法和流程。
在本节中,我们将简要介绍关系规范化的基本步骤和方法,以便更好地了解和实践这个技术。
1. 第一范式关系规范化的第一步通常是将原始数据表拆分成第一范式。
也就是说,所有数据表中的数据都应该是原子性的,即不可再分解为更小的单元。
这样做的好处是,可以避免重复数据、数据冗余和数据不一致等问题。
2. 第二范式在第一范式基础上,我们需要进一步拆分数据表,将所有非主键属性与主键属性之间的关系提取出来,作为一个新的数据表。
这样做的好处是,可以避免非主键属性对主键造成干扰,保持数据表的清晰度和规整性。
3. 第三范式第三范式是指,每个数据表中的属性都要与主键直接相关,并且每个数据表中只包含一个“事实”或“示例”。
数据库原理第五章关系数据库的规范化设计

12
模式分解是关系规范化的 主要方法(二)
与TDC相比,分解为三个关系模式后,数据的冗余度明显 降低。 当新插入一个系时,只要在关系D中添加一条记录。 当某个教师尚未讲课,只要在关系T中添加一条教师记录, 而与TC授课关系无关,这就避免了插入异常。 当某个系的教师不再讲课时,只需在TC中删除该教师的 全部授课记录,而关系D中有关该系的信息仍然保留,从 而不会引起删除异常。 同时,由于数据冗余度的降低,数据没有重复存储,也不 会引起更新异常。
24
2.2 完全函数依赖和部分函数依赖
例如:学生成绩表中
姓名 王一 王二 王三 王一
学号 1 2 3 4
年龄 16 15 16 16
籍贯 河北 山东 北京 天津
姓名不能推出年龄,学号也不能推出年龄,但是 姓名 + 学号能推出年龄,故完全依赖;
学号能直接推出籍贯,故是部分依赖
25
2.3 传递函数依赖
当关系中的元组增加、删除或更新后都不能被破 坏这种函数依赖。因此,必须根据语义来确定属 性之间的函数依赖,而不能单凭某一时刻关系中 的实际数据值来判断。
20
函数依赖的定义和性质(六)
函数依赖可以保证关系分解的无损连接性
设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果X Y或X Z,则有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示关 系R在属性(X,Y)上的投影,即 R等于其投影在X上的自然连 接,这样便保证了关系R分解后不会丢失原有的信息,称为 关系分解的无损连接性
关系数据库的设计与规范化

关系数据库的设计与规范化关系数据库是一种基于关系模型的数据库系统,它以表格的形式存储和组织数据。
在设计和组织关系数据库时,规范化是一项关键任务。
规范化是一种数据组织方法,其目的是通过消除冗余和不一致性,提高数据库的性能和灵活性。
本文将探讨关系数据库的设计和规范化的重要性,以及规范化的常用规则和技巧。
1. 规范化的重要性关系数据库的设计和规范化对于数据的一致性、完整性和性能有着重要影响。
以下是规范化的重要性:1.1 数据一致性:规范化可以消除数据中的冗余信息,确保每个数据片段只有一次出现在数据库中。
这样可以避免数据冲突和不一致性,提高数据的一致性。
1.2 数据完整性:规范化可以帮助保持数据的完整性。
通过将数据分解为更小的表,并通过外键和主键建立关系,可以确保数据的完整性和准确性。
1.3 性能提升:规范化可以提高数据库的性能。
通过减少数据冗余,可以节省存储空间,并提高查询和更新的速度。
2. 规范化的规则和技巧规范化涉及到一系列规则和技巧,以确保数据的一致性和完整性。
以下是规范化的常用规则和技巧:2.1 第一范式(1NF):确保表中的每个列都是原子的,即不可分解的。
每个列都应该只包含一个数据值,不允许有重复的列。
2.2 第二范式(2NF):确保每个表中的非主键列只与主键有关,而不是与其他非主键列有关。
这样可以消除非主键列之间的数据冗余。
2.3 第三范式(3NF):确保每个表中的非主键列只与主键有关,而不是与其他非主键列有关。
如果有一个非主键列与其他非主键列有关,应该将其移动到另一个表中。
2.4 层次化范式:将数据分解为多个逻辑层次上的表。
每个表都应该表示一个单独的实体或关系,避免表中信息的重复和冗余。
2.5 使用外键关系:通过外键约束来建立关系数据库中不同表之间的连接。
外键可以确保数据的完整性和一致性,同时还能提高查询性能。
2.6 避免主键冲突:在为表选择主键时,应确保每个记录都可以唯一地识别。
避免使用自然主键(如姓名、电话号码等),而是使用带有唯一性约束的人工主键。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013年9月16日星期一
2. 关系规范化可能出现的问题
在我们构造关系时,经常会发现数据冗余和更新异常等现象, 这是由关系中各属性之间的相互依赖性和独立性造成的。如果一 个关系没有经过规范化,可能会导致上述谈到的数据冗余大、数 据更新造成不一致、数据插入异常和删除异常问题。
例如,要求设计一个教学管理数据库,希望从该数据库中得到学 生学号、姓名、性别、年龄、所在系、系主任姓名、学生学习的 课程和该课程的成绩信息。若将此信息要求设计为一个关系,则 关系模式为:学生(学号,姓名,性别,年龄,所在系,系主任 姓名,课程名,成绩)。
2013年9月16日星期一
3. 完全函数依赖与部分函数依赖
完全函数依赖: • 在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集 X′,都有X′ Y,则称Y完全函数依赖于X,记作X f Y。
部分函数依赖: • 若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记 作X p Y。
2013年9月16日星期一
1.关系模式应满足的条件
关系数据库是根据关系模式设计的。好的关系模式除了能满 足用户对信息存储和查询的基本要求外,还应当使它的数据库满 足如下要求。 • ⑴ 元组的每个分量必须是不可分的数据项 • 关系数据库特别强调,关系中的属性不能是组合属性,必须是基 本项,并把这一要求规定为鉴别表格是否为“关系”的标准。如 果表格结构的数据项都是基本项,则该表格为关系,它服从关系 模式的第一范式,以后可以在此基础上进一步规范化。否则,如 果表格结构中含有组合项,必须先使之转换为基本数据项。因为 关系的一切数学理论都是基于关系服从于第一范式基础之上的。
学号→所在系
所在系→系主任姓名 学号→系主任姓名
2013年9月16日星期一
2.4.3 关系的 范式及规范化
1. 第一范式(1NF) 2. 第二范式(2NF) 3. 第三范式(3NF) 4.BC范式 5.多值依赖 6.第四范式
2013年9月16日星期一
•
•
⑸ 数据库中的数据不能在执行删除操作时产生删除异常问题
删除异常是指在删除某种信息的同时把其他信息也删除了。 删除异常也是数据库结构不合理产生的毛病。和插入异常一样, 如果关系中多种信息捆绑在一起,当被删除信息中含有关系的 主属性时,由于关系要满足实体完整性,整个元组将全部从数 据库中被删除,即出现删除异常。
2013年9月16日星期一
⑶ DB设计者可对现实世界作强制规定
例:在学生关系中,设计者可强行规定不允许出现相同姓名的人, 因而使函数依赖“姓名→年龄”成立。 • 当插入某元组时,该元组上的属性值必须满足规定的函数依赖, 若发现有相同姓名的人存在,则拒绝插入该元组。
⑷ 若X→Y,则X称为这个函数依赖的决定属性集。
2013年9月16日星期一
•
由上述4条可见,学生关系尽管看起来很简单,但存 在的问题比较多,它不是一个合理的关系模式。
2013年9月16日星期一
2.4.2 数据依赖
1. 函数依赖 2. 平凡函数依赖与非平凡函数依赖 3. 完全函数依赖与部分函数依赖 4. 传递函数依赖
2013年9月16日星期一
存在以下的函数依赖: 学号→姓名 学号→性别 学号→年龄 学号→班级号 说明: ⑴ 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是 指R的所有关系实例均要满足的约束条件。 ⑵ 函数依赖是RDB用以表示数据语义的机制。人们只能根据数据的语义来确 定函数依赖。 例:“姓名→年龄”这个函数依赖只有在没有相同姓名人的条件下成立。若 有相同姓名的人,则“年龄”就不再函数依赖于“姓名”了。
2013年9月16日星期一
•
函数依赖普遍地存在于现实生活中。例如,描述一个 学生的关系,可以有“学号”、“姓名”、“所在系”等 几个属性。由于一个学号只对应一个学生,一个学生只在 一个系。因而当“学号”值确定之后,姓名及其所在系的 值也就被唯一地确定了。
• 属性间的这种依赖关系类似于数学中的函数。因此说学号 函数决定姓名和所在系,或者说姓名和所在系函数依赖于 学号,记作:学号→姓名,学号→所在系。
2013年9月16日星期一
• ⑷ 当执行数据插入操作时,数据库中的数据不能产生插入异 常现象 • 所谓插入异常是指希望插入的信息由于不能满足数据完整性的 某种要求而不能正常地被插入到数据库的异常问题。
• 出现数据插入异常问题的主要原因是数据库设计时没有按“一 事一地”的原则进行。由于多种信息混合放在一个表中,就可 能造成因一种信息被捆绑在其他信息上而产生的信息之间相互 依附存储的问题,这是使得信息不能独立插入的关键所在。
2013年9月16日星期一
2.4.1 关系模式规范化的必要性
1. 关系模式应满足的条件 2. 关系规范化可能出现的问题
2013年9月16日星期一
• 关系数据库的设计主要是关系模式的设计。关系模式设计 的好坏将直接影响到数据库设计的成败。 • 将关系模式规范化,使之达到较高的范式是设计好关系模 式的唯一途径。否则,所设计的关系数据库会产生一系列 的问题。
2013年9月16日星期一
• 为了消除冗余和潜在的更新异常,关系数据库的规范化理论为关系模 式确定了多种范式。 • 所谓范式(Noranal Form)是指规范化的关系模式。由于规范化的程度 不同,就产生了不同的范式。 • 从1971年起,E.F.Codd相继提出了第一范式(1NF)、第二范式(2NF)、 第三范式(3NF),Codd与Boyce合作提出了Boyce-Codd范式(BCNF)。 在1976~1978年间,Fagin、Delobe以及Zaniolo又定义了第四范式。到 目前为止,已经提出了第五范式(5NF)。 • 满足最基本规范化的关系模式叫第一范式,第一范式的关系模式再满 足另外一些约束条件就产生了第二范式、第三范式、BC范式等等。 每种范式都规定了一些限制约束条件。
• 数据之间存在的各种联系现象称为数据依赖(Data Dependency),它是同 一关系中属性间的相互依赖和相互制约。 • 而数据冗余和更新异常等现象与数据依赖有着紧密的关联。
• 关系规范理论致力于解决关系模式中不合适的数据依赖问题。
• 在数据依赖中,函数依赖(Functional Dependency,FD)是最基本的一种 依赖形式,它反映了同一关系中属性间一一对应的约束,它是关系模式 中属性之间最常见的一种依赖关系,也是关系模式中最重要的一种约束。
2013年9月16日星期一
例8:
学生(学号,姓名,所在系,系主任姓名,课程号,成绩) 学生关系模式存在的部分函数依赖: (学号,课程号) p
(学号,课程号) p 所在系 p (学号,课程号) 系主任姓名
姓名
2013年9月16日星期一
4. 传递函数依赖
• 在关系模式R(U)中,如果X→Y,Y→Z,且Y X,Z Y,Y X, 则称Z传递函数依赖于X。 例9:学生(学号,姓名,所在系,系主任姓名,课程名,成绩), 存在如下的函数依赖:
关系数据库的设计
一、关系数据库的规范化理论
二、关系数据库的设计过程
2013年9月16日星期一
2.4 关系数据库规范化理论
2.4.1 关系模式规范化的必要性
2.4.2 数值依赖
2.4.3 范式与规范化
2.4.4 关系分解原则
2013年9月16日星期一
• 关系数据库是以关系模型为基础的数据库,它利用关系描述现实 世界。一个关系即可用来描述一个实体及其属性,也可用来描述 实体间的一种联系。 • 关系模式是用来定义关系的,一个关系数据库包含一组关系,定 义这组关系的关系模式的全体就构成了该数据库的模式。 • 关系数据库的设计归根到底是如何构造关系,即如何把具体的客 观事物划分为几个关系,而每个关系又由哪些属性组成,就是要 构造“好的”、“合适”的关系模式,它涉及一系列的理论与方 法,形成了关系数据库的模式设计理论和技术。 • 由于合适的关系模式要符合一定的规范化要求,所以又称其为关 系数据库的规范化理论。
2013年9月16日星期一
关系模式的表示
• 关系模式的完整表示: R<U,D,DOM,F> – R为关系名,U为关系的属性集合 – D为属性集U中属性的数据域 – DOM为属性到域的映射 – F为属性集U的数据依赖集
• 简化表示:R<U,F>
2013年9月16日星期一
1. 函数依赖
• 假设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。 对于R(U)的任意一个可能的关系r,如果r中不存在两个元组, 它们在X上的属性值相同,而在Y上的属性值不同,则称“X函 数确定Y”或“Y函数依赖于X”,记作X→Y。
2013年9月星期一
• ⑹ 数据库设计应考虑查询要求,数据组织应合理
•
在数据库设计时,不仅要考虑到数据自身的结构完整性, 还要考虑到数据的使用要求。为了使数据查询和数据处理高效 简洁,特别是对那些查询实时性要求高、操作频度大的数据, 有必要通过视图、索引和适当增加数据冗余的方法,来增加数 据库的方便性和可用性。
• 注意:X和Y都是属性组,如果X→Y,表示X中取值确定时,Y中 的取值惟一确定,即X决定Y或Y函数依赖于Y,X是决定因素。 • 函数依赖类似于数学中的单值函数,函数的自变量确定时,应 变量的值惟一确定。反映了关系模式中属性间的决定关系,体 现了数据间的相互关系。
2013年9月16日星期一
例7:学生(学号,姓名,性别,年龄,班级号)
此关系模式的主键为(学号,课程名)。仅从关系模式上看,该关系 已经包括了需要的信息,如果按此关系模式建立关系,并对它进 行深入分析,就会发现其中的问题所在。
2013年9月16日星期一
• 该关系存在着如下问题: • ⑴ 数据冗余大。每一个“所在系”和“系主任姓名”存储的次数等于该系 的学生人数乘以每个学生选修的课程门数。 • ⑵ 插入异常。一个新系没有招生时,“所在系”和“系主任姓名”无法插 入到数据库中,因为在这个关系模式中,主键是(学号,课程名),而这时因 没有学生而使得学号无值,所以没有主属性值,关系数据库无法操作,因 此引起插入异常。 • ⑶ 删除异常。当一个系的学生都毕业了而又没招新生时,删除了全部学生 记录,随之也删除了“所在系”和“系主任姓名”。这个系依然存在,而 在数据库中却无法找到该系的信息,即出现了删除异常。 • ⑷ 更新异常。若某系更换系主任,数据库中该系的学生记录应全部修改。 如有不慎,某些记录漏改了,则造成数据的不一致出错,即出现了更新异 常。