例如,要求设计教学管理数据库,其关系模式SCD如 SCD(SNO, SN, AGE, DEPT, MN, CNO, SCORE) 其中,SN0表示学生学号,SN表示学生姓名,AE表示 学生年龄,DE表示学生所在的系别,MN表示系主任 姓名,CN表示课程号, SCORE表示成绩。 根据实际情况,这些数据有如下语义规定: 1.一个系有若干个学生,但一个学生只属于一个系; 2.一个系只有一名系主任,但一个系主任可以同时兼几个系的 系主任; 3.一个学生可以选修多门功课,每门课程可有若干学生选修; 4.每个学生学习课程有一个成绩。 在此关系模式中填入一部分具体的数据,则可得到SCD 关系模式的实例,即一个教学管理数据库,如图4.1所 示。 U八◆《回
返回 6 例如,要求设计教学管理数据库,其关系模式SCD如下: SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE) ➢ 其中,SNO表示学生学号,SN表示学生姓名,AGE表示 学生年龄,DEPT表示学生所在的系别,MN表示系主任 姓名,CNO表示课程号,SCORE表示成绩。 根据实际情况,这些数据有如下语义规定: 1. 一个系有若干个学生,但一个学生只属于一个系; 2. 一个系只有一名系主任,但一个系主任可以同时兼几个系的 系主任; 3. 一个学生可以选修多门功课,每门课程可有若干学生选修; 4. 每个学生学习课程有一个成绩。 ➢ 在此关系模式中填入一部分具体的数据,则可得到SCD 关系模式的实例,即一个教学管理数据库,如图4.1所 示
SNO AGE DEPT MN CNO 赵亦 17计算机刘伟 Cl SI 赵亦 17计算机刘伟 85 钱尔 信息王平 57 S2 钱尔 18 信息王平 80 S2 钱尔 18 信息王平 70 S2 钱尔 18 信息王平 S3 孙珊20 信息王平 C1 0 孙珊 信息王平 70 孙珊 信息 王平 C4 85 S4 李思 男自动化刘伟 CI 93 图4.1关系SCD U八◆回
返回 7 图4.1 关系SCD SNO SN AGE DEPT MN CNO SCORE S1 赵亦 17 计算机 刘伟 C1 90 S1 赵亦 17 计算机 刘伟 C2 85 S2 钱尔 18 信息 王平 C5 57 S2 钱尔 18 信息 王平 C6 80 S2 钱尔 18 信息 王平 C7 70 S2 钱尔 18 信息 王平 C5 70 S3 孙珊 20 信息 王平 C1 0 S3 孙珊 20 信息 王平 C2 70 S3 孙珊 20 信息 王平 C4 85 S4 李思 男 自动化 刘伟 C1 93
>根据上述的语义规定,并分析以上关系中的数据,我何 可以看出:(SNO,CNO)属性的组合能唯一标识一个元组, 所以(SNO,CNO)是该关系模式的主关系键。但在进行数 据库的操作时,会出现以下几方面的问题。 1.数据冗余。每个系名和系主任的名字存储的次数等 于该系的学生人数乘以每个学生选修的课程门数,同 时学生的姓名、年龄也都要重复存储多次,数据的冗 余度很大,浪费了存储空间。 2.插入异常。如果某个新系没有招生,尚无学生时, 则系名和系主任的信息无法插入到数据库中 因为在这个关系模式中,( SNO CNO是主关系键。根 据关系的实体完整性约束,主关系键的值不能为空, 而这时没有学生,SN0和CNO均无值,因此不能进行插 入操作。 另外,当某个学生尚未选课,即CNO未知,实体完整 性约束还规定,主关系键的值不能部分为空,同样不 能进行插入操作。 ∧回
返回 8 ➢根据上述的语义规定,并分析以上关系中的数据,我们 可以看出:(SNO,CNO)属性的组合能唯一标识一个元组, 所以(SNO,CNO)是该关系模式的主关系键。但在进行数 据库的操作时,会出现以下几方面的问题。 1. 数据冗余。每个系名和系主任的名字存储的次数等 于该系的学生人数乘以每个学生选修的课程门数,同 时学生的姓名、年龄也都要重复存储多次,数据的冗 余度很大,浪费了存储空间。 2. 插入异常。如果某个新系没有招生,尚无学生时, 则系名和系主任的信息无法插入到数据库中。 • 因为在这个关系模式中,(SNO,CNO)是主关系键。根 据关系的实体完整性约束,主关系键的值不能为空, 而这时没有学生,SNO和CNO均无值,因此不能进行插 入操作。 • 另外,当某个学生尚未选课,即CNO未知,实体完整 性约束还规定,主关系键的值不能部分为空,同样不 能进行插入操作
3.删除异常 某系学生全部毕业而没有招生时,删除全部学生的 记录则系名、系主任也随之删除,而这个系依然存在, 在数据库中却无法找到该系的信息。 另外,如果某个学生不再选修C1课程,本应该只删 去C1,但C1是主关系键的一部分,为保证实体完整性, 必须将整个元组一起删掉,这样,有关该学生的其它 信息也随之丢失。 4.更新异常。 如果学生改名,则该学生的所有记录都要逐一修改 SN 又如某系更换系主任,则属于该系的学生记录都要 修改M的内容,稍有不慎,就有可能漏改某些记录, 这就会造成数据的不一致性,破坏了数据的完整性 U八◆《回
返回 9 3. 删除异常。 ➢某系学生全部毕业而没有招生时,删除全部学生的 记录则系名、系主任也随之删除,而这个系依然存在, 在数据库中却无法找到该系的信息。 ➢另外,如果某个学生不再选修C1课程,本应该只删 去C1,但C1是主关系键的一部分,为保证实体完整性, 必须将整个元组一起删掉,这样,有关该学生的其它 信息也随之丢失。 4. 更新异常。 ➢如果学生改名,则该学生的所有记录都要逐一修改 SN; ➢又如某系更换系主任,则属于该系的学生记录都要 修改MN的内容,稍有不慎,就有可能漏改某些记录, 这就会造成数据的不一致性,破坏了数据的完整性
由于存在以上问题,我们说,SCD是一个不好的关系模 式。产生上述问题的原因,直观地说,是因为关系中 “包罗万象”,内容太杂了。 那么,怎样才能得到一个好的关系模式呢? >我们把关系模式SCD分解为下面三个结构简单的关系模 式,如图4.2所示。 学生关系S(SNO,SN,AGE,DEPT) 选课关系SC(SNO,CNO, SCORE) 系关系 D(DEPT,MN) U八◆《回
返回 10 ➢ 由于存在以上问题,我们说,SCD是一个不好的关系模 式。产生上述问题的原因,直观地说,是因为关系中 “包罗万象” ,内容太杂了。 ➢ 那么,怎样才能得到一个好的关系模式呢? ➢ 我们把关系模式SCD分解为下面三个结构简单的关系模 式,如图4.2所示。 ➢学生关系S(SNO,SN,AGE,DEPT) ➢选课关系SC(SNO,CNO,SCORE) ➢系关系D(DEPT,MN)