第二章-3逻辑结构设计_第1页
第二章-3逻辑结构设计_第2页
第二章-3逻辑结构设计_第3页
第二章-3逻辑结构设计_第4页
第二章-3逻辑结构设计_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统设计与开发 北京邮电大学 计算机学院 2.5 数据库逻辑模型设计 目标:将数据库概念结构转化为 特定 DBMS可处理的数据 库的逻辑结构。 基本步骤: ( 1) 初始逻辑数据库模式转换,根据若干规则进行; ( 2) 规范化处理 ( 3) 模式评价 ( 4) 模式修正 数据库系统设计与开发 北京邮电大学 计算机学院 2.5.1 关系数据模型 关系模型的理论基础是集合论,是用集合代数定义一个关系。 定义 1: 域 (Domain)是 一组具有相同数据类型的值的集合。 定义 2: 设 D1, D2, , Dn为一组域, D1, D2, , Dn 上的笛卡尔积定义为: D1 D2 Dn = (d1, d2, , dn) | di Di, i =1,2,n 笛卡尔积是一个集合,集合中的每一个元素 (d1, d2, , dn) 称为 一个 n元组,简称元组。元组中的每个值叫做一 个分量。 定义 3: D1 D2 Dn笛卡尔积的子集叫做在域 D1, D2, , Dn上的关系 (Relation)。用 R(D1, D2, , Dn)表示, R 是关系名。 数据库系统设计与开发 北京邮电大学 计算机学院 关系是在一组域( D1, D2, , Dn) 上的笛卡尔 积的一个子集。当 n=1时,称为单元关系; 当 n=2时,称为 二元关系。 关系是一个 二维表 ,表的每一行对应一个元组,表 的每列对应一个域,由于域可以相同,为了区分给每个列 起一个名字,称为属性。 对关系的描述称为 关系模式 ,该描述 包括 关系名 、 关系中的 属性名 、 域 、 属性向域的映象 、 属性间的数据依 赖 关系等, 可以形式化的表示为: R(U,F)或 R(U)。 其 中 R为关系名, U为组成该关系的属性名集合, F 为属性间的数据依赖关系集合。 属性向域的映象通常直接 说明为属性的类型、长度、取值范围等。 数据库系统设计与开发 北京邮电大学 计算机学院 有三个域:男人、女人和儿童。其取值为:男人(张三 , 李四),女人(王,吴),儿童(张一,李二)。 其笛卡尔积:男人 女人 儿童共有 8个元组,可以 列成一张表: (张三,王,张一),(李四,王,张一) , (张三,王,李二),(李四,王,李二) , (张三,吴,张一),(李四,吴,张一) , (张三,吴,李二),(李四,吴,李二)。 数据库系统设计与开发 北京邮电大学 计算机学院 丈夫 妻子 小孩 张三 王 王一 李四 吴 李二 家庭 (丈夫,妻子,小孩)。 该关系中的属性 名就用域名, 关系形成的二维表如下: 关系是笛卡尔积中有一定意义的、有限的子集 。 数据库系统设计与开发 北京邮电大学 计算机学院 Jones Smith Curry Lindsay customer-name Main North North Park customer-street Harrison Rye Rye Pittsfield customer-city customer 属性 元组 行 记录 列 数据库系统设计与开发 北京邮电大学 计算机学院 Students 学生信息表 SNO 学号 Sname 姓名 Sex 性别 Age 年龄 Class 班级 DeptNO 系编号 S_C 学生选课信息表 SNO 学号 Cno 课程编号 Grade 成绩 Courses 信息表 Cno 课程编号 Cname 课程名称 credit 学分数 DEPT 系信息表 DeptNO 系编号 Deptname 系名称 Address 地址 数据库系统设计与开发 北京邮电大学 计算机学院 在关系数据库中的关系有如下性质: 同一列来自同一个域。 不同的列可以出自相同的域,必须有不同的属性名。 不能有完全相同的元组存在。 关系中元组的顺序无关。 关系中列的顺序无关。 每个属性值必须是不可再分的数据项。 数据库系统设计与开发 北京邮电大学 计算机学院 完整性约束规则 候选键:关系模式 R( U) 的属性集合 K是候选键,满足: ( 1) R( U) 的任何一个关系实例的任意两个元组在属性 集合 K上的值都不相同; ( 2) K的任何真子集都不满足条件( 1)。 以上被称为候选键的两性质:唯一性,最小性。 相关概念:主键 /关键字;键(主)属性;非键(非主)属 性; 数据库系统设计与开发 北京邮电大学 计算机学院 1 实体完整性约束: 若 A是关系模式 R( U) 的主键属性,则 R( U) 的任何一个 实例关系不存在任何元组在 A上的值为空。 例: Student ( NO, Name, Sex, Age, Class, DeptNO ) , Course ( Cno, Cname, Dept ) , S_C (NO, Cno, Grade) 数据库系统设计与开发 北京邮电大学 计算机学院 2 关联 /参照完整性约束: 外键: 关系模式 R1包含关系模式 R2的主键,这组属性叫做 R1参 照 R2的外键。 设 X是关系模式 R( U) 关于关系模式 R(U) 的 外键 。如果 K是 R ( U) 的关系实例的一个元组的外部键值,则 R(U) 的实例中 必存在一个元组 T, T在 X上的值为 K。 例: Student ( NO, Name, Sex, Age, Class, DeptNO ) , Dept (DeptNO, DeptName) 数据库系统设计与开发 北京邮电大学 计算机学院 更新时的参照完整性约束: 插入 . 如果元组 t2 被插入到 r2, 则系统必须确保 r1 中存在元组 t1 使得 t1K = t2X. 删除 . 如果从 r1删除元组 t1, 则系统必须计算 r2中引 用 t1的元组集合 : X = t1K (r2) 如果此集合非空 , 则要么认为出错而拒绝删除命 令 , 要么删除这些引用 t1的元组 (级联删除 ). 数据库系统设计与开发 北京邮电大学 计算机学院 修改 . 有两种情况 : 如果修改关系 r2中的元组 t2 并且修改了外键 X的值 , 则 作类似于插入情况的检查 . 令 t2 表示元组 t2的新值 . 系 统必须确保 t2X K(r1) 如果修改关系 r1中的元组 t1并且修改了主键 K的值 , 则 作类似于删除情况的检查 . 系统必须利用 t1在修改前的 旧值计算 X = t1K (r2) 若此集合非空 , 则要么认为出错而拒绝修改 , 要么对 此集合中的元组作级联修改 , 要么删除此集合中的元组 数据库系统设计与开发 北京邮电大学 计算机学院 域 约束: 域约束 是完整性约束的最基本形式 . 可用于检测插入到数据库中的数据的合法性 , 或用于查询中检测两个 数据进行比较时的合法性 . check子句允许对域作限制 : 利用 check 子句确保 “小时工资 ”域只允许大于指定值的值 . create domain hourly_wage numeric(5,2) constraint value_test check(value = 4.00) 这个域具有约束:小时工资大于 4.00 子句 constraint value_test 使可选的 ; 可用于指示以后的更新破坏了哪 一条约束 . 可有更复杂的域检查条件 Create domain AccountType char(10) constraint account_type_test check (value in (Checking, Saving) check (branch_name in (select branch_name from branch) 数据库系统设计与开发 北京邮电大学 计算机学院 2.5.2 关系范式 函数依赖 关系范式 分解 数据库系统设计与开发 北京邮电大学 计算机学院 关系数据库逻辑设计 针对具体问题,如何构造一个适合于它的数据模式 数据库逻辑设计的工具 关系数据库的规范化理论 数据依赖 (函数依赖 ,多值依赖 ) 是通过一个关系中属性间值的相等与否体现出来的数 据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现 数据库系统设计与开发 北京邮电大学 计算机学院 函数依赖 设 R 是一关系模式 , 且有属性集 R , R 函数依赖 在 R上成立 当且仅当对任意合法关系 r(R), 若 r 的任 意两条元组 t1 和 t2 在属性集 上的值相同 , 则他们在 属性集 上的值也相同 . 即 , t1 = t2 t1 = t2 数据库系统设计与开发 北京邮电大学 计算机学院 K 是关系模式 R 的超键当且仅当 K R K 是 R 的候选键当且仅当 : K R, 并且 没有 K 使 R 数据库系统设计与开发 北京邮电大学 计算机学院 函数依赖的使用: 我们用函数依赖来 : 检查关系在给定函数依赖之下是否合法 . 若关系 r 在函数依赖集 F 下是合法的 , 则称 r 满足 F. 对合法关系集合指定约束 如果 R 上的所有合法关系都满足 F, 则称 F 在 R上 成立 . 注意 : 关系模式的特定实例可能满足一函数依赖 , 但该函 数依赖不是在所有合法实例上成立 . 数据库系统设计与开发 北京邮电大学 计算机学院 平凡依赖 被所有关系实例都满足的函数依赖称为 平凡的 例如 customer-name, loan-number customer- name customer-name customer-name 一般地 ,若 则 是平凡的 数据库系统设计与开发 北京邮电大学 计算机学院 CTO( CNO, TNAME, ADDRESS, OFFICE) : CNOTNAME, TNAME ADDRESS transitive dependency: CNOADDRESS 如下的函数依赖是传递的 : ,( ), , , 称 传递依赖于 . 函数依赖: 数据库系统设计与开发 北京邮电大学 计算机学院 if: , , 部分依赖于 . CTO( CNO, TNAME, ADDRESS, OFFICE) : CNOTNAME, TNAME ADDRESS partial dependency: (CNO, TNAME)ADDRESS 部分依赖: 数据库系统设计与开发 北京邮电大学 计算机学院 First Normal Form 1NF Second Normal Form 2NF Third Normal Form 3NF Boyce-Codd Normal Form BCNF 基于数据依赖和函数依赖 : 关系范式: 数据库系统设计与开发 北京邮电大学 计算机学院 第一范式 如果域中元素被认为是不可分的 , 则域称为是 原子的 非原子域的例子 : 名字集合 , 复合属性 象 CS101之类的标识号可以分成若干部分 如果关系模式 R的所有属性的域都是原子的 , 则 R称为属 于 第一范式 非原子值存储复杂并易导致数据冗余 E.g. 每个客户的账户集合 , 以及每个账户的拥有者集 合 我们假定所有关系都属于第一范式 数据库系统设计与开发 北京邮电大学 计算机学院 2NF: 若 R是 1NF, 且每个非键属性完全依赖于候选键,则称 R 为 2NF( 消除非键属性对候选键的部分依赖)。 例:关系模式 S(SNO , SN , SD , DEAN , CNO , G) ( SNO, CNO) 为候选键, SNOSN, SNOSD, 存在部分依赖 ,非 2NF, 则会有以下问题: 插入异常:如果学生没有选课,关于他的个人信息及所在系的信息就 无法插入。 删除异常:如果删除学生的选课信息,则有关他的个人信息及所在 的信息也随之删除了。 更新异常:如果学生转系,若他选修了 k门课,则需要修改 k次。 数据冗余:如果一个学生选修了 k门课,则有关他的所在系的信息重 复。 可将 S分解为: SC(SNO , CNO , G) S_SD(SNO , SN , SD , DEAN) 数据库系统设计与开发 北京邮电大学 计算机学院 第三范式 关系模式 R 属于第三范式 (3NF) 当且仅当对所有 F+中依赖 : 下列条件中至少一个成立 : 是平凡的 (i.e., ) 是 R 的超键 中的每个属性 A 包含在 R 的某个候选键中 . (注 : 各属性可能包含在不同候选键中 ) 或: 非主属性既不部分依赖也不传递依赖于 R的候选键,则称 R是 第三范式。 数据库系统设计与开发 北京邮电大学 计算机学院 S_SD(SNO , SN , SD , DEAN) : SNO SD, SD DEAN STUDENT(SNO , SN , SD) DEPT(SD , DEAN) 数据库系统设计与开发 北京邮电大学 计算机学院 Boyce-Codd 范式: 是平凡的 (i.e., ) 是 R的超键 具有函数依赖集合 F 的关系模式 R 属于 BCNF当且仅当对 F+ 中所有函数依赖 , 下列两条件至少一个成立 : 或: 如果关系模式 R是 1NF, 且每个属性都不部分依赖于候选键 也不传递依赖于候选键,那么称 R是 BC范式 。 数据库系统设计与开发 北京邮电大学 计算机学院 SPC(SNO , PNO , CNO) : PNOCNO ( SNO, CNO) PNO 每位老师只教授一门课;某学生选定一门课,就 对应一位老师 ( SNO, PNO) CNO ( SNO, CNO) PNO,( SNO, PNO),( SNO, CNO) 为 候选键。所有属性为键属性,为第三范式,但非 BCNF SP( SNO, PNO), PC( PNO, CNO) 数据库系统设计与开发 北京邮电大学 计算机学院 因 3NF的冗余引起的问题 R = (J, K, L) F = JK L, L K J j1 j2 j3 null L l1 l1 l1 l2 K k1 k1 k1 k2 属于 3NF但不属于 BCNF的模式有下面的问题 信息重复 (e.g., 联系 l1, k1) 需要使用空值 (e.g., 表示联系 l2, k2 , 这里没有对应的 J 值 ). 数据库系统设计与开发 北京邮电大学 计算机学院 多属性依赖集候选关键字求法: 输入:关系模式 R及其函数依赖集 F 输出: R的所有候选关键字。 方法: ( 1)将 R的所有属性分为四类: L类:仅出现在 F的函数依赖左部的属性; R类:仅出现在 F的函数依赖右部的属性; N类:在 F的函数依赖左右两边均未出现的属性; LR类:在 F的函数依赖左右两边均出现的属性; 并令 X代表 L、 N类, Y代表 LR类; 数据库系统设计与开发 北京邮电大学 计算机学院 ( 2)求 X+, 若包含了 R的所有属性,则 X即为 R的唯一 候选关键字,转( 5),否则转( 3); ( 3)在 Y中取一属性 A, 求( XA)+,若它包含了 R的所有 属性,则转( 4),否则,调换一属性反复进行这一过 程,直到试完所有 Y中的属性; ( 4)如果已找出所有的候选关键字,则转( 5),否则 在 Y中依此取两个、三个, ,求他们的属性闭包,直 到其闭包包含 R的所有的属性。 ( 5)停止,输出结果。 数据库系统设计与开发 北京邮电大学 计算机学院 ( 1) R=(W,X,Y,Z),F=XZ, WXY Candidate Key W,X, 1NF. ( 2) R( U, F), U=A , B , C , D, E , F =ABCE, E AB, C D; Candidate Key A, B and E, 2NF. ( 3) R( U, F), U=A , B , C , D , F =BD, D B , AB C; Candidate Key A, B and A, D, 3NF. 数据库系统设计与开发 北京邮电大学 计算机学院 ( 4) R( U, F), U=A , B , C , F =AB, B A, A C; Candidate Key A和 B, BCNF. ( 5) R( U, F), U=A , B , C , F =AB, B A, C A; Candidate Key C, 2NF. ( 6) R( U, F), U=A , B , C , D , F =AC, D B; Candidate Key A, D, 1NF. 数据库系统设计与开发 北京邮电大学 计算机学院 例:假设某集团下属多个公司,集团数据库中有一关系模式 R表示各公司项目和公司部门项目申请情况: R( 公司编号,项目编号,预算经费,部门编号,负责人) 如果规定: ( 1)公司编号都不同,一个公司内部门编号不同,但公司 间部门编号有可能相同; ( 2)公司内项目编号不同,但不同公司的项目编号有可 能相同; ( 3)每个公司的每个项目只能由一个部门申请; ( 4)每个公司的每个部门只有一个负责人 ,而一个人可能 负责多个部门; ( 5)每个公司的每个项目只有一个预算经费。 数据库系统设计与开发 北京邮电大学 计算机学院 基本函数依赖: (公司编号,项目编号) 部门编号 (公司编号,部门编号) 负责人 (公司编号,项目编号) 预算经费 候选键(公司编号,项目编号) 最高达到第二范式。因为存在非键属性负责人对候 选键的传递依赖。 如何分解? 数据库系统设计与开发 北京邮电大学 计算机学院 1NF 2NF 3NF BCNF 消除非键属性对键的部分函数依赖 消除非键属性对键的传递函数依赖 消除键属性对键的部分和传递函数 依赖 消除决定因素 非键的非平凡 函数依赖 数据库系统设计与开发 北京邮电大学 计算机学院 分解: 确定一个关系是否属于 “好的 ” 形式 . 如果关系 R 不属于 “好的 ”形式 , 则将它分解为关系集 合 R1, R2, ., Rn 使得: 原模式 (R) 的所有属性都必须出现在分解结果 (R1, R2 ., Rn)中, R = R1 R2 . Rn 数据库系统设计与开发 北京邮电大学 计算机学院 关系模式 R的一个分解: = R1, R2, , Rn U=U1 U2 Un, 且不存在 Ui Uj, Fi 为 F在 Ui 上的投影 函数依赖集合 X Y | X Y F+ XY Ui 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影 数据库系统设计与开发 北京邮电大学 计算机学院 无损连接分解: 将关系模式 R分解为 R1, R2, ., Rn,对模式 R上的所有可能关系 r, 有: r = R1 (r) R2 (r) . Rn (r) 有损 连接的分解导致信息的丢失: 将 student(sno, dept, head)分解为 R1=(sno), R2=(dept), R3=(head) R1=(sno,dept), R2=(sno,head) 数据库系统设计与开发 北京邮电大学 计算机学院 R 分解成 R1 和 R2 是无损连接的,当且仅当下列依赖中 的至少一个属于 F+: R1 R2 R1 R1 R2 R2 例: R = (A, B, C) F = A B, B C) R1 = (A, B), R2 = (B, C) Lossless-join decomposition: R1 R2 = B and B BC 数据库系统设计与开发 北京邮电大学 计算机学院 函数依赖保持 若 F+ = (Fi)+, 则称 R的分解 = R1 , , Rn保持函数依赖。 例: R = (A, B, C), F = A B, B C) R1 = (A, B), R2 = (B, C) 函数依赖保持 R1 = (A, B), R2 = (A, C) 非 函数依赖保持 数据库系统设计与开发 北京邮电大学 计算机学院 3NF无损联接及函数依赖保持的分解 BCNF无损联接的分解 数据库系统设计与开发 北京邮电大学 计算机学院 2.5.3 数据库逻辑模式设计 基本步骤: ( 1) 初始逻辑数据库模式转换 ,根据若干规则进行; ( 2) 规范化处理 ,减少 /消除关系模式中存在的各种异常 ,改善完整性、一致性和存储效率: 确定规范级别; 实施规范化处理; 数据库系统设计与开发 北京邮电大学 计算机学院 ( 3)模式评价 功能评价:规范化后的关系模式集合是否支持所有用 户的所有的应用要求,及用户需要访问的所有属性; 性能评价:逻辑记录等为基础; ( 4)模式修正 根据现实世界的应用环境和用户的要求进行相关修正 ,例如增加、分解、合并关系模式。 数据库系统设计与开发 北京邮电大学 计算机学院 符合 E-R 图的数据库可以表示成若干表的集合 . 每个表有若干列 (一般对应于属性 ), 列有唯一的 名字 . E-R 图转换成表格式是从 E-R 图导出关系数据库 设计的基础 . 初始逻辑数据库模式转换 数据库系统设计与开发 北京邮电大学 计算机学院 强实体集转换到具有相同属性的表 , 包含所有简单属性和 其复合属性的简单子属性,略去复合属性本身。 实体集表示为表 E.g. 给定带有复合属性 name ( 组成属性为 first-name 和 last-name ) 的实体集 customer, 对应的表具有两个属性 name.first-name 和 name.last-name 实体集 E 的多值属性 M 用一个单独的表 EM 表示 -表 EM 具有对应于 E 的主键的属性以及对应于 M 的属性 E.g. employee 的多值属性 dependent-names 表示为表 employee-dependent-names( employee-id, dname) 多值属性的每个值映射到表 EM 中的单独行 E.g., 主键为 John 的雇员实体及其受赡养者 Johnson 和 Johndotir 映射到两行 : (John, Johnson) (John, Johndotir) 数据库系统设计与开发 北京邮电大学 计算机学院 实体间联系的变换: ( 1)一个 m:n联系转换为一个关系模式。与该联系相连 的各实体的键以及联系本身的属性均转换为关系的属性 。而关系的键为各实体键的组合。 Employee ProjectsWorks_on timeEmployee-id Project-id Table: works_on( employee-id, project-id, time) 数据库系统设计与开发 北京邮电大学 计算机学院 ( 2)一个 1:n联系可以转换为一个独立的关系模式,也可 以与 n端对应的关系模式合并。如果转换为一个独立的关 系模式,则与该联系相连的各实体的键以及联系本身的属 性均转换为关系的属性,而关系的键为 n端实体的键。 branch loanLoan-branch Branch-name Loan-numberamount Table: loan( loan-number, amount, branch-name) 数据库系统设计与开发 北京邮电大学 计算机学院 ( 3)一个 1:1联系可以转换为一个独立的关系模式(部 分参与),也可以与任意一端对应的关系模式合并(全 参与)。 manager departmentmanage manager-name Dept-idDept-name Table: Manager(Manager-name,Dept-id) department( Dept-id,Dept-name, manager-name) 数据库系统设计与开发 北京邮电大学 计算机学院 ( 4)三个或三个以上实体间的一个多元联系转换为一 个关系模式。与该多元联系相连的各实体的键以及联 系本身的属性均转换为关系的属性。而关系的键为各 实体键的组合。 course teacherS_C_T CNO TeaNO student NO S_C_T(NO, CNO, TeaNO,) 数据库系统设计与开发 北京邮电大学 计算机学院 弱实体集转换: 弱实体集转换成的表还包含对应于其标识强实体集的主键 的列。 Table: payment(loan-number, payment-number, payment- date, payment-amount) 数据库系统设计与开发 北京邮电大学 计算机学院 演绎 /归纳表示成表 方法 1: 为高层实体集构造表 为每个低层实体集构造表 , 包括高层实体集的主键和局部 属性 表 表属性 person name, street, city customer name, credit-rating employee name, salary 缺点 : 获得 employee 之类的实体的信息需要访问两个表 数据库系统设计与开发 北京邮电大学 计算机学院 演绎 /归纳表示成表 (续 ) 方法 2: 为每个实体集构造表 , 其属性包括所有局部属性和继承来 的属性 表 表属性 person name, street, city customer name, street, city, credit-rating employee name, street, city, salary 如果是完备的 , 则没有必要为一般实体 (person)创建表 缺点 : 对于既是客户又是雇员的人 , 其 street 和 city 被冗余 存储 数据库系统设计与开发 北京邮电大学 计算机学院 转换总结: 转换规则 1: ER图中的每一个实体映射到关系数据库 中的一个表,并用实体名来命名这个表。表的列代表 了连接到实体的所有简单单值属性 (可能是通过复合属 性连接到实体的,但复合属性本身并不变成表的列 )。 实体的标识符映射为该表的候选键,实体的主标识符 映射为主键。实体实例映射为该表的行。 转换规则 2:给定一个实体 E, 主键是 p, a是 E的一个多 值属性,那么 a映射成自身的一个表,该表的列包含 p 和 a, 这个表的主键是 p和 a的组合。 E当然地映射成一 个表。 数据库系统设计与开发 北京邮电大学 计算机学院 转换规则 3:当两个实体 E和 F参与一个二元的多对多的 联系 R时,联系 R映射成一个表 T。 这个表包括从实体 E 和 F转化而来的两个表的主键,这些列构成了表 T的主键 ,也可能还得再加入联系的属性才能构成表 T的主键。 转换规则 4:当两个实体 E和 F参与一个多对一的二元联 系 R时,这个联系在关系数据库设计中不能被映射自身 的一个表。假设 F表示多方,那么从 F转化成的表 T中应 当包括从 E转化的表的主键,这被称为 T的外键。因为 maxcard(F,R)=1, T的每一行都通过一个外键值联系到实 体 E的一个实例。 数据库系统设计与开发 北京邮电大学 计算机学院 转换规则 4(续 ):如果 F在 R中是全部参与的,那么意味着 T的上述外键不能取空值。如果 F在 R中是选择参与的, 那么 T中不与 E的实例相联系的行的外键可以取空值。 转换规则 5:如果给定实体 E和 F, 它们的联系是一对一 ,二者的参与都是部分的,那么 E和 F分别转换为表 S和 T , 并且在表 S中加入 T表的主键作为 S的外键,在表 T中加 入 S表的主键作为 T的外键,有此表示 E和 F的可选参与一 对一联系。 转换规则 6:如果给定实体 E和 F, 它们的联系是一对一 ,二者的参与都是全部的,那么最好将 E和 F对应的两个 表合并成一个表,由此而避免使用外键。 数据库系统设计与开发 北京邮电大学 计算机学院 转换规则 7:如果参与联系的实体数目多于两个,一般 称为多元联系。对于多元联系,通常用多个不同的二 元联系替代,再针对二元联系进行转换。 对于不能用多个不同的二元联系替代的情形,一般采 用如下规则进行转换:除参与联系的实体转换为相应 的表之外,联系也转换为独立的表,表中包含了参与 联系的实体的主键。注:转换的表能够真实表达语义 是最终目的。 数据库系统设计与开发 北京邮电大学 计算机学院 转换规则 8:对于一元联系,若是一对一、一 对多,一般不特别将联系转换成独立的表,而 在参与联系的这个实体相应的表中加入联系的 附加属性。例如职工实体的领导联系是一个一 元联系,职工实体转换成相应的表,在此表中 加入领导工号属性。联系转换为表中的一列。 数据库系统设计与开发 北京邮电大学 计算机学院 Customer ProductOrdermake contain C-number C-name discount balance address address O-number date year month day quantity of ordered P-number P-name plant quantity on hand E-R diagram of the ordering DB 数据库系统设计与开发 北京邮电大学 计算机学院 the E-R diagram can be reduced into the following five tables: customer=(C-number, c-name, discount, balance) ship-to-addresses = (C-number, ship-to-addresses) order=(O-number, C-number, ship-to-address, year, month, day) product=(P-number, p-name, plant, quantity-on- hand) contain=(O-number, P-number, quantity of ordered) ) 数据库系统设计与开发 北京邮电大学 计算机学院 数据库系统设计与开发 北京邮电大学 计算机学院 branch = (branch_name, branch_city, assets) customer = (customer_id, customer_name, customer_street, customer_city) loan = (loan_number, amount, branch_name) account = (account_number, balance, branch_name) employee = (employee_id. employee_name, telephone_number, start_date, manager_employee_id) dependent_name = (employee_id, dname) 数据库系统设计与开发 北京邮电大学 计算机学院 borrower = (customer_id, loan_number) depositor = (customer_id, account_number,access_date) cust_banker = (customer_id, employee_id, type) payment = (loan_number, payment_number, payment_date, payment_amount) savings_account = (account_number, interest_rate) checking_account = (account_number, overdraft_amount) 数据库系统设计与开发 北京邮电大学 计算机学院 更新异常 (Update Anomaly): 例如如果更改表所对应 的某个实体实例或者关系实例的单个属性时,需 要将多行更新,那么就说这个表存在更新异常。 删除异常 (Delete Anomaly) : 例如如果删除表的某 一行来反应某个实体实例或者关系实例消失时, 会导致丢失另一个不同实体实例或者关系实例的 信息,而这是我们不希望丢失的。 插入异常 (Insert Anomaly) : 例如如果某个实体或 者实例信息随着另一个实体或实例信息的存在而 存在,在缺少另一个实体或实例信息时,无法表 示这个实体或者实例信息。 例:客户 _电话(姓名,性别,身份证号,地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论