下面给出几个应用关系代数进行查询的实例。解题说明:该题的求解思路是在全部学号中去掉选修“C2”课程的学生学号,就得出没有选修课程号为“C2”课程的学生学号。应当特别注意的是,由于选择操作为元组操作,本题不能写为求既选修“C2”课程,又选修“C3”课程的学生学号。①除关系和被除关系都为选课表。通过选择运算,求出学号为“98002”学生所选课程的元组;通过投影运算,得出除关系的结构。......
2023-11-24
关系数据库的设计主要是关系模式的设计。关系模式设计的好坏将直接影响到数据库设计的成败。将关系模式规范化,使之达到较高的范式,这是设计好关系模式的主要途径。
1.关系模式应满足的基本要求
好的关系模式除了能满足用户对信息存储和查询的基本要求外,还应当使它的数据库满足如下要求。
(1)元组的每个分量必须是不可分的数据项
关系数据库特别强调关系中的属性不能是组合属性,必须是基本项,并把这一要求规定为鉴别表格是否为“关系”的标准。如果表格结构的数据项都是基本项,则该表格为关系,它服从关系模式的第一范式,以后可以在此基础上进一步规范化。否则,如果表格结构中含有组合项,必须先使之转换为基本数据项。因为关系的一切数学理论都是基于关系服从1 NF的基础上的。
换一种角度讲,假如关系中允许组合项,例如允许“成绩”项中含有“数据结构、数据库、操作系统”3个基本项,会使关系结构变为多层次的混合结构。它将大大增加关系操作的表达、优化及执行的复杂度,使有些问题变得非常难处理,所以关系数据库中必须遵守这一规定。
(2)数据库中的数据冗余应尽可能少
数据冗余大是指重复的数据多。“数据冗余”是数据库最忌讳的毛病,数据冗余会使数据库中的数据量剧增,系统负担加重,并浪费大量的存储空间。数据冗余还可能造成数据的不完整,增加数据维护的代价。数据冗余还会造成数据查询和统计的困难,并导致错误的结果。
尽管关系数据是根据外码建立关系之间的连接运算的,外码数据是关系数据库不可消除的“数据冗余”,但在设计数据库时,应千方百计将数据冗余控制在最小的范围内,不必要的数据冗余应坚决消除。
(3)关系数据库不能因为数据更新操作而引起数据不一致问题
如果数据模式设计得不好,就可能造成不必要的数据冗余,一个信息就会多次在多个地方重复存储。对于“数据冗余大”的关系数据库,当执行数据修改时,这些冗余数据就可能出现有些被修改,而有些没有修改,从而造成数据不一致问题。数据不一致问题影响了数据的完整性,使得数据库中数据的可信度降低。
(4)数据库中的数据不能在执行数据插入时产生插入异常现象
所谓“插入异常”是指希望插入的信息由于不能满足数据完整性的某种要求,而不能正常地被插入数据库的问题。出现数据插入异常问题的主要原因是数据库设计时没有按“一事一地”的原则进行,多种信息混合放在一个表中,就可能造成因一种信息被捆绑在其他信息上,而产生信息之间相互依附存储的问题,这是使得信息不能独立插入的关键所在。
(5)数据库中的数据不能在执行删除操作时产生删除异常问题
“删除异常”是指在删除某种信息的同时把其他信息也删除了。“删除异常”也是数据库结构不合理产生的毛病。和“插入异常”一样,如果关系中多种信息捆绑在一起,当被删除信息中含有关系的主属性时,由于关系要满足实体完整性,整个元组将全部从数据库中被删除,即出现“删除异常”。
(6)数据库设计应考虑查询要求,数据组织应合理
在数据库设计时,不仅要考虑数据自身的结构完整性,还要考虑数据的使用要求。为了使数据查询和数据处理高效简洁,特别是对那些查询实时性要求高、操作频度大的数据,有必要通过视图、索引和适当增加数据冗余的方法,来增加数据库的方便性和可用性。
2.关系规范化可能出现的问题
如果一个关系没有经过规范化,可能会导致上述谈到的数据冗余大,数据更新造成不一致、数据插入异常和删除异常问题。下面的例子说明了上述问题。
例如,要求设计一个教学管理数据库,希望从该数据库中得到学生学号、学生姓名、年龄、性别、系别、系主任姓名、学生学习的课程和该课程的成绩信息。若将此信息要求设计为一个关系,则关系模式为
教学(学号,姓名,年龄,性别,系名,系主任,课程名,成绩);
可以推出此关系模式的码为(学号,课程名)。
仅从关系模式上看,上述教学关系已经包括了系统需要的全部信息。但是,我们如果按此关系模式建立关系,就会发现其中的问题所在。下面我们通过具体实例,对该数据模式进行分析,找出不足之处。(www.chuimin.cn)
表2—1 不规范关系的实例——教学关系
从表2-1中的数据情况可以看出,该关系存在着如下问题。
(1)数据冗余大
每一个系名和系主任的名字存储的次数等于该系的学生人数乘以每个学生选修的课程门数,系名和系主任数据重复量太大。
(2)插入异常
一个新系没有招生时,系名和系主任名无法插入数据库中,因为在这个关系模式中,主码是学号或课程名,而这时因没有学生而使得学号无值,所以没有主属性值,关系数据库无法操作,因此引起插入异常。
(3)删除异常
当一个系的学生都毕业了而又没招新生时,删除了全部学生记录,随之也删除了系名和系主任名。这个系依然存在,而在数据库中却无法找到该系的信息,即出现了删除异常。
(4)更新异常
若某系换系主任,数据库中该系的学生记录应全部修改。如有不慎,某些记录漏改了,则造成数据的不一致错误,即出现了更新异常。
由上述4条可知,教学关系尽管看起来很简单,但存在的问题比较多,它不是一个合理的关系模式。
3.模式分解是关系规范化的主要方法
对于有问题的关系模式,可以通过模式分解的方法使之规范化。
例如,上述的关系模式“教学”,可以按“一事一地”的原则分解成“学生”“教学系”和“选课”3个关系,其关系模式为
学生(学号,姓名,年龄,性别,系名称);
教学系(系名,系主任);
选课(学号,课程名,成绩)。
表2-1中的数据按分解后的关系模式组织,得到表2-2。对照表2-1和表2-2会发现,分解后的关系模式克服了“教学”关系中的4个不足之处,这样更加合理和实用。
表2—2 教学关系分解后形成的3个关系
有关数据库技术与应用教程的文章
下面给出几个应用关系代数进行查询的实例。解题说明:该题的求解思路是在全部学号中去掉选修“C2”课程的学生学号,就得出没有选修课程号为“C2”课程的学生学号。应当特别注意的是,由于选择操作为元组操作,本题不能写为求既选修“C2”课程,又选修“C3”课程的学生学号。①除关系和被除关系都为选课表。通过选择运算,求出学号为“98002”学生所选课程的元组;通过投影运算,得出除关系的结构。......
2023-11-24
约束元组变量和自由元组变量若在元组关系演算公式中:元组变量前有全称量词或存在量词,该变量为约束元组变量;否则为自由元组变量。元组关系演算公式的递归定义①每个原子公式都是公式。④在元组关系演算公式中,运算符的优先次序为:括号算术比较存在量词、全称量词逻辑非、与、或。⑤元组关系演算公式是有限次应用上述规则的公式,其他公式不是元组关系演算公式。......
2023-11-24
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
两个关系表达式E1和E2是等价的,可记作E1≡E2。常用的等价变换规则有以下几种。,Bm是E2的属性,则:10.投影与并的交换若E1和E2为可比属性,则有......
2023-11-24
分解是关系规范化采用的主要手段,分解后的关系可以自然连接将关系合并。连接依赖是有关分解和自然连接的理论,第五范式是有关如何消除子关系的插入和删除异常的理论。、xn上具有n目连接依赖。例如,设关系模式SPJ,其中SNO表示供应者号,PNO表示零件号,JNO表示项目号。因为多值依赖是连接依赖的特殊情况,所以任何5 NF的关系自然也都是4 NF的关系。......
2023-11-24
如果要使用缺省参数创建一个学籍管理数据库StuData,可以使用如下命令:Create Database StuData如果希望为数据库或事务日志指定一个或者多个特定文件,增加一个On Primary子句,列出一个或者多个文件,并可为分配这个文件的空间指定一个可选值,其命令形式如下:Create Database StuDataOn Primary,;如果为了提高性能和可恢复性,则可以使用Log On子句来指定数据库的SQL Server事务日志将存储在一个与数据库对象不同的设备上,示例如下:Create Database StuDataOn Primary,Log On;GO......
2023-11-24
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2023-11-24
虽然对视图的操作最终都转换为对基本表的操作,视图看起来似乎没什么用处,但实际上,如果合理地使用视图会带来许多好处。定义视图可以将表与表之间复杂的连接操作和搜索条件对用户隐藏起来,用户只需简单地查询一个视图即可。这在多次执行相同的数据查询操作时尤为有用。......
2023-11-24
相关推荐