数据库设计专题

上传人:mg****85 文档编号:55394673 上传时间:2018-09-28 格式:PPT 页数:40 大小:777KB
返回 下载 相关 举报
数据库设计专题_第1页
第1页 / 共40页
数据库设计专题_第2页
第2页 / 共40页
数据库设计专题_第3页
第3页 / 共40页
数据库设计专题_第4页
第4页 / 共40页
数据库设计专题_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《数据库设计专题》由会员分享,可在线阅读,更多相关《数据库设计专题(40页珍藏版)》请在金锄头文库上搜索。

1、数据库设计专题,一实体及其联系 二关系的完整性 三E-R方法 三 用范式规范关系 四 实例与练习,一实体及其联系,1 实体,实体及其属性 现实世界中可以被认识、区分的事物被称为实体 实体所举有的特性称为属性 具有相同属性的实体的集合称为实体集 例:一个学生是一个实体,这个学生可以由学号、姓名、性别、年龄、籍贯等属性来描述。而全体学生就构成一个实体集。, 关键字,可以唯一标识出实体的实体的某一属性或属性组合称为关键字。 例:学生的学号与学生一一对应,则选定学号后可标识出某一实体,因此学号可做为学生实体的关键字 若实体的关键字有多个,则这些关键字为候选关键字 选定某一个称之为主关键字, 实体的联系

2、,现实世界当中的事物之间是有联系的,可以分为两种:实体与实体之间的联系,另一种是实体集内部的联系 当两个实体分别属于不同的实体集的时候所够成的联系,被称为实体与实体之间的联系,可以分为三种类型 若同一实体集内部的实体之间存在联系那我们称之为是体积内的联系,也可分为三种 另外,三个或三个以上的实体之间也可能存在联系,实体间的联系(可分为三种联系),一对一 表示为1:1 若a实体集中的每个实体至多和b实体集中的一个实体对应,反之b实体集中的每个实体至多与a中的一个实体对应,则称a与b之间存在1对1联系 例:班级和班长两个实体集之间存在的的联系为1:1,实体间的联系(可分为三种联系),1对多 表示为

3、1:n A中的每个实体可与b中的多个实体对应,则构成1:n联系 例:学生和学生成绩,一条学生记录可与学生成绩中多条记录相对应,反过来,一条学生成绩的记录只能与一条学生记录相对应 多对多 表示为m:n a中的每个实体可对应b中对各实体,反过来b中每个实体也对应b中多个实体,则构成多对对联系 例:学生与课程的联系,每个学生有多门课程,没门课程有多个学生选修,实体集内部的联系(可分为三种联系),一对一 例:已婚公民中,已婚公民中的一个实例只能与另一个实例建立一对一联系(一夫一妻制,忽略离婚后未再婚,丧偶) 一对多 例:职工实体集内部有经理和职工两个实体,假设只有一个经理,那么经理可管理多个职工,而每

4、个职工实体只能被一个经理管理,存在一对多的联系 多对多 例:零部件实体集内部,存在零部件之间的装配联系,一个零部件可有其他多个零部件组成,而该零部件又可以组装成其他多个零部件,所以这是一个多对对的联系,三个及三个以上的实体间的联系,例:供应商、项目、零件三个实体之间存在“使用”联系,一个供应商为多个项目供应多种零件;每个项目可以使用不同供迎上提供的零件;每个零件可由不同的供应商供应。如图示,可见三个实体间存 在多对多联系,二 关系的完整性,为关系添加一些约束条件使关系符合实际的情况,关系的完整性规则是对关系的某种约束条件,也就是为使关系符合实际情况而添加的限制条件 关系模型当中有三类完整性约束

5、:实体完整性、参照完整性、用户自定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持 添加约束条件的例子: 青岛大学的学生学号规定为12位,身份证号为15位或18位,若关系中包含上述信息就应当添加相应的输入约束条件,完整性约束的作用至关重要,1数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。 2利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。 3合理的数据库完整性设计

6、,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。 4在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。,实体完整性,实体完整性规则:若属性a是关系R的主关键字(主键),则属性a不能取空值 其作用域是一个关系当中 一个基本关系对应现实世界的一个实体集,例如学生关系对应学生集合。现实世界的实体是可以区分的,而在关系模型中是以主关键字作为唯一性标识,如果主关键字取空值则说明存在某个不可标识的实体,既不可区分的实体,这与现实世界相矛盾。 举例

7、:关系学生(学号,姓名,性别,年龄),其中学号为主键,则学号不为空,外键,外键:设F是基本关系R的一个或一组属性,但不是关系R的主键(或候选码)。如果F与基本关系S的主键KS相对应,则称F是基本关系R的外键,并称基本关系R为参照关系,称基本关系S为被参照关系。 在关系数据库中,表与表间的联系是通过公共属性实现的。此公共属性往往是一个表的主码,同时是另一个表的外码。, 参照完整性,参照完整性规则:若属性或属性组F是基本关系R的外键,它与基本关系S的主键KS相对应 ,则R中的每一个元祖在F上的值必须为空值或者等于s中某个元祖的KS值 参照完整性保证了某个表中引用的实体是一个存在的实体,这个实体存在

8、于其他表中,也可能就存在于引用这个实体的表中。 参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。,例1: 课程(课号,课名,学分) 教师(工号,姓名,职称,课号) 参考书(书号,书名,课号) 其中,关系教师中的属性“课号”不是主码,该属性与关系课程中的主码“课号”相对应。因此,“课号”是关系教师的外码。关系

9、教师是参照关系,关系课程是被参照关系。 此例中关系教师中的外码“课号”只能是下面两类值: (1) 空值,表示还未给该教师安排课。 (2) 非空值,但此值必须为被参照关系课程中某一门课程的“课号”。,例2: 学生实体和专业实体可以用下面的关系表示,其中主码用下划线标识: 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 这两个关系之间存在着属性的引用,即学生关系引用了专业关系的主码“专业号”。显然,学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。这也就是说,学生关系中的某个属性的取值需要参照专业关系的属性取值。,例3: 学生实体和选修实体可以用下面

10、的关系表示,其中主码用下划线标识: 学生(学号,姓名,性别,专业号,年龄) 选修(学号,课程号,成绩) 分析: 学号是选修关系的外键,以选修关系作为参照关系,则学生关系是被参照关系,按照参照完整性,选修中的学号只可以取空值或者是学生关系中存在的值。 又因为学号是选修关系的主键的组成部分,按照关系完整性原则,选修关系中的学号不能取空值。,用户自定义的完整性,用户定义的完整性: 任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须

11、满足的语义要求。例如某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在 0100之间等。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。,完整性规则检查,为了维护数据库中数据的完整性,在对关系数据库执行插入、删除和修改操作时,就要检查是否满足以上三类完整性规则。 (1) 当执行插入操作时,首先检查实体完整性规则,插入行的主码属性上的值,是否已经存在。若不存在,可以执行插入操作;否则不可以执行插入操作。再检查参照完整性规则,如果是向被参照关系插入,不需要考虑参照完整性规则;如果是向参照关系插入,插入行在外码属性上

12、的值是否已经在相应被参照关系的主码属性值中存在。若存在,可以执行插入操作;否则不可以执行插入操作,或将插入行在外码属性上的值改为空值后再执行插入操作(假定该外码允许取空值)。最后检查用户定义完整性规则,检查被插入的关系中是否定义了用户定义完整性规则,如果定义了,检查插入行在相应属性上的值是否符合用户定义完整性规则。若符合,可以执行插入操作;否则不可以执行插入操作。 (2) 当执行删除操作时,一般只需要检查参照完整性规则。如果是删除被参照关系中的行,则应检查被删除行在主码属性上的值是否正在被相应的参照关系的外码引用,若没被引用,可以执行删除操作,若正在被引用,有三种可能的做法:不可以执行删除操作

13、(拒绝删除),或将参照关系中相应行在外码属性上的值改为空值后再执行删除操作(空值删除),或将参照关系中相应行一起删除(级联删除)。 (3) 当执行修改操作时,因为修改操作可看成先执行删除操作,再执行插入操作,因此是上述两种情况的综合。,三 E-R方法,实体-联系方法,是表示实体及其联系最常用的方法,E-R图设计步骤,步骤1:设计局部E-R图 明确局部应用的范围 根据应用系统的具体情况,根据应用功能相对独立、实体个数适量的原则划分局部应用 确定实体和属性 实体与属性是相对的,确定实体和属性应考虑实际应用环境 属性是不可再分的数据项,属性不能和其他实体发生联系,否则该属性应考虑定义为实体 确定实体

14、间的联系,产生局部E-R图 考察任意两个实体间是否有联系,进一步确定联系类型、命名,进而画图,E-R图设计步骤,步骤2:综合成全局E-R图 合并局部E-R图,消除冲突 冲突类型 属性冲突:取值单位冲突、域(数据类型、取值范围)冲突 结构冲突:同一对象在不同的局部图中抽象不同;同一对象抽象时由于用途不同属性不同(解决取并集);联系的类型不一致(综合分析) 消除冗余,生成基本E-R图 冗余的数据:可以由基本数据到处的数据 冗余的联系:可以由基本联系导出的联系,从E-R图导出关系数据模型,E-R图是有实体、实体属性、以及实体间的联系等要素组成,而关系数据模型是一组二维表 转换原则: 实体 转换为一个

15、二维表,实体关键字转换为关系的关键字 一对一联系 可以转换为独立的关系,联系名作为关系名,与该联系相连的两个实体的关键字及联系本身的属性作为关系的属性, 或者与任意一端的实体合并,并在任意一端的属性中加入另一个关系的主关键字,一对多联系 将该联系转换为独立的关系,联系名作为关系名,与该联系相连的实体的主键和联系本身的属性为新建关系的属性,该关系的主关键字是n端实体的关键字 或者将一对多联系与n端合并。1端实体的关键字和联系的属性并入n端实体的关系 多对对转换为一个关系 联系名为关系模式,与该联系相连的各实体的关键字及联系本身的属性为关系的属性,该关系的关键字为联系中各实体关键字的并集,同一实体

16、内部的联系 可将此实体集拆分为相互联系的两个子集,然后根据他们相互间的联系方式按上述原则处理 三个或三个以上实体间的联系 转换为一个关系模式,属性包括各实体的主属性和联系本身的属性,该关系的主属性为各实体关键字的并集 有相同关键字的关系模式可以合并为一个关系 合并后的关系的属性是被合并的关系的属性的集合,三 用范式规范关系,1 数据依赖, 属性间的联系 如前所述,在同一关系内部的属性间也存在3种联系 例: 1对1:某个只有一个站台的车站,某时刻只能停靠一辆火车,则关系车次(车次号,到站时间,接车人员)中,属性车次号与到站时间是一一对应的,存在1对1的关系。 1对多:关系学生(学号,姓名,性别,

17、成绩)关系中,若存在重名,则姓名与学号间存在一对多关系 多对多:选修关系(学号,课程号,成绩)中一个学生可选修多门课程,一门课程可被多个学生选修,学号与课程之间存在多对多的关系, 函数依赖 定义1:设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,t1,t2是r中的任意两个元组,如果由t1X=t2XTt1Y=t2Y,(即不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等)则称X函数确定Y或Y函数依赖于X,记作XY。 定义2:在R(U)中,如果XY,并且对于X的任何一个真子集X, 若任意XY不成立,则称Y对X完全函数依赖,记作:X(f)Y 。 定义3若XY,在R(U)中,如果XY,并且对于X的任何一个真子集X, 若存在XY成立,则称Y对X部分函数依赖, 记作X (p) Y。 (一般,1:1为完全函数依赖,m:1为部分函数依赖) 定义4:在R(U)中,如果XY,(Y不函数决定X),YZ,则称Z对X传递函数依赖。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号