6.1关系数据模型的规范化 ■6.11数据依赖 ■6.1②规范数据模型要解决的问题
6.1 关系数据模型的规范化 ◼ 6.1.1 数据依赖 ◼ 6.1.2 规范数据模型要解决的问题 返回
数据依赖 ■数据依赖是数据库模式设计的关键,数据依赖是 通 个关系中属性间值的相等与香体现出来 数据间的相互关 是现实世界属性间相互联系 的抽象,是数据内在的性质,是语文的体现 在关系模式中,属性间数据的依赖关系集合F实际 上就是描述关系的元组语义,用以限定组成关系 的各个元组必须满足的完整性约束条件。在实际 中,这些约束或者通过对属性取值范围的限定 或者通过对属性值间的相互关连(主要体现于值的 )反映出来。属性值间的相互关连就是所 谓的数据依赖
数据依赖 ◼ 数据依赖是数据库模式设计的关键,数据依赖是 通过一个关系中属性间值的相等与否体现出来的 数据间的相互关系,是现实世界属性间相互联系 的抽象,是数据内在的性质,是语义的体现。 ◼ 在关系模式中,属性间数据的依赖关系集合F实际 上就是描述关系的元组语义,用以限定组成关系 的各个元组必须满足的完整性约束条件。在实际 中,这些约束或者通过对属性取值范围的限定, 或者通过对属性值间的相互关连(主要体现于值的 相等与否)反映出来。属性值间的相互关连就是所 谓的数据依赖. 返回
6.1,2规范数据模型要解决的间题 函数依赖普遍地存在于现实生活中。 例:描述一个学生的关系,可以有学号(SNO 姓名( SNAME)、所在系DEP等几个属性。 由于一个学号只对应一个学生,个学生只在 个系。因而当“学号”值确定之后,姓名及其所 在系的值也就被唯一地确定了 属性间的这种依赖关系类似于数学中的函数。因 函数决 定 SNAME和DEPT 口或者说 SNAME和DEPT函数依赖于SNO 记做SNO→ SNAME,SNO→DEP
6.1.2 规范数据模型要解决的问题 ◼ 函数依赖普遍地存在于现实生活中。 ◼ 例:描述一个学生的关系,可以有学号(SNO)、 姓名(SNAME)、所在系(DEPT)等几个属性。 ◼ 由于一个学号只对应一个学生,一个学生只在一 个系。因而当“学号”值确定之后,姓名及其所 在系的值也就被唯一地确定了。 ◼ 属性间的这种依赖关系类似于数学中的函数。因 此说 SNO函数决定SNAME和DEPT ◼ 或者说 SNAME和DEPT函数依赖于SNO ◼ 记做 SNO→SNAME, SNO→DEPT
建立一个描述学校的数据库,该数据库涉及的对象 包括学生的学号(SNO、所在系OEP 主任 MNAME、课程名( CNAME和成绩( GRADE。假设学 校的数据库模式由 单一的关系模式S构成,则该关 系模式的属性集合为: U= SNO. DEPT MNAME CNAME GRADE J 由常识可知 ①一个系有若干学生,但一个学生只属于一个系; 系只有一名主任 ③一个学生可以选修多门课程,每门课程有若干学生 选 ④每个学生所学的每门课程都有一个成绩。 从上述事实可以得到属性组U上的一组函数依赖F: F={SNO→ DEPT DEPT→ MNAME,(SNO CNAME)GRADE J 码:KEY=(SNO, CNAME)
◼ 建立一个描述学校的数据库,该数据库涉及的对象 包括学生的学号(SNO)、所在系(DEPT)、系主任姓名 (MNAME)、课程名(CNAME)和成绩(GRADE)。假设学 校的数据库模式由一个单一的关系模式 S 构成,则该关 系模式的属性集合为: ◼ U={SNO, DEPT, MNAME, CNAME, GRADE} ◼ 由常识可知: ◼ ①一个系有若干学生,但一个学生只属于一个系; ◼ ②一个系只有一名主任; ◼ ③一个学生可以选修多门课程,每门课程有若干学生 选修; ◼ ④每个学生所学的每门课程都有一个成绩。 ◼ 从上述事实可以得到属性组U上的一组函数依赖F: ◼ F={SNO→DEPT, DEPT→MNAME, (SNO, CNAME)→GRADE} ◼ 码:KEY=(SNO, CNAME)
对上述只考虑函数依赖这一数据依赖,所得 到的描述学生的关系模式,存在如下问题: ■①插入异常( insertion anomalies) 生刚入学时,还没有 选课,因此无法确定属性 CNAME的值 SNO. CNAME 存在空值,根据实体完整性规 插入无法执 ②删除异常( deletion anomalies)。如果某个系的学生全部毕 在删除该系学生信息的同时,把这个系及其系主任 的信息也去掉了。 ■③数据冗余太大。比如,每一个系主任的姓名重复出现, 重复次数与该系所有学生的所有课程成绩出现次数相同 这不仅浪费大量的存储空间 更新数据库中的数据 盆要付出很大的代价来维护数据库的完整性。并且 存在数据不一致的隐惠。 鉴于存在以上种种间题,可以说关系横式S不是一个女 应当不会发生插入异常、册 异常、数据冗余应尽可能少
对上述只考虑函数依赖这一数据依赖,所得 到的描述学生的关系模式,存在如下问题: ◼ ①插入异常(insertion anomalies)。当学生刚入学时,还没有 选课,因此无法确定属性CNAME的值,码(SNO, CNAME) 存在空值,根据实体完整性规则,插入无法执行。 ◼ ②删除异常(deletion anomalies)。如果某个系的学生全部毕 业了,在删除该系学生信息的同时,把这个系及其系主任 的信息也丢掉了。 ◼ ③数据冗余太大。比如,每一个系主任的姓名重复出现, 重复次数与该系所有学生的所有课程成绩出现次数相同。 这不仅浪费大量的存储空间,而且当更新数据库中的数据 时,系统要付出很大的代价来维护数据库的完整性。并且 存在数据不一致的隐患。 ◼ 鉴于存在以上种种问题,可以说关系模式 S 不是一个好 的模式。一个“好”的模式应当不会发生插入异常、删除 异常、数据冗余应尽可能少。 返回