第6章数据库设计 口6,1关系数据模型的规范化 6,2数据库设计
第6章 数据库设计 ◼ 6.1 关系数据模型的规范化 ◼ 6.2 数据库设计
关系与关系模式 关系是一张二维表,它是所涉及属性的笛 卡尔积的一个子集。从笛卡尔积中选取哪 些元组构成该关系,通常是由现实世界赋 予该关系的元组语义来确定的
关系与关系模式 ◼ 关系是一张二维表,它是所涉及属性的笛 卡尔积的一个子集。从笛卡尔积中选取哪 些元组构成该关系,通常是由现实世界赋 予该关系的元组语义来确定的
关系模式是对关系的描述,为了能够清 楚地刻划出一个关系,它需要由五部分组成, 即应该是一个五元组: ROUD,DOM, F) 其中:R为关系名,U为组成该关系的属 性名集合,D为属性组U中属性所来自的域, DOM为属性向域的映象集合,F为属性间数 据的依赖关系集合
◼ 关系模式是对关系的描述,为了能够清 楚地刻划出一个关系,它需要由五部分组成, 即应该是一个五元组: R(U,D,DOM,F) ◼ 其中:R为关系名,U为组成该关系的属 性名集合,D为属性组U中属性所来自的域, DOM为属性向域的映象集合,F为属性间数 据的依赖关系集合
例:有如下关系,如下表: 导师 专业 研究生 嘉琦 计算机 王千 晨昊 金融 王玲 上述关系可以构成两个域: 姓名:{嘉琦,王干 专业:{计算机,金融 由于导师和研究生出自同一个域“姓名”, 所以要取不同的属性名,用DOM表示,即: DOM(导师)=DOM(研究生)=姓名
◼ 例:有如下关系,如下表: ◼ 上述关系可以构成两个域: 姓名:{嘉琦,王干....} 专业:{计算机,金融...} 由于导师和研究生出自同一个域“姓名” , 所以要取不同的属性名,用DOM表示,即: DOM(导师)=DOM(研究生)=姓名
关系是关系模式在某一时刻的状态或内 。关系模式是静态的、稳定的,关系是动 态的,不同时刻关系模式中的关系可能会有 所不同,但它们都必须满足关系模式中数据 依赖关系集合F所指定的完整性约束条件 由于在关系模式R(U,D,DOM,F)中 影响数据库模式设计的主要是U和F,而D和 DOM对数据库模式设计的影响不大,所以, 为了方便讨论,本章将关系模式简化为一个 元组,即 R(U, F)
◼ 关系是关系模式在某一时刻的状态或内 容。关系模式是静态的、稳定的,关系是动 态的,不同时刻关系模式中的关系可能会有 所不同,但它们都必须满足关系模式中数据 依赖关系集合F所指定的完整性约束条件。 ◼ 由于在关系模式R(U,D,DOM,F)中, 影响数据库模式设计的主要是U和F,而D和 DOM对数据库模式设计的影响不大,所以, 为了方便讨论,本章将关系模式简化为一个 三元组,即: R(U,F)
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 不是一个好 的模式。一个“好”的模式应当不会发生插入异常、删除 异常、数据冗余应尽可能少。 返回