《关系数据模型》由会员分享,可在线阅读,更多相关《关系数据模型(82页珍藏版)》请在金锄头文库上搜索。
1、第三章 关系数据模型 主要解决问题: 关系数据模型是什么? 如何将E/R模型转变为关系数据模型? 如何使关系模型满足一定规范形式(范式)? 13.1 关系模型的基础 关系(relation): 由若干列和行组成的一个二维表,称为一个关系 ,即一个表table。 表示数据结构和数据集合的一种简单方式。 一个关系有一个名称。 titleyearlengthfilmTypeStar Wars Waynes World Mighty Ducks 1977 1992 1991 124 95 104 color color color Movies23.1.1 属性(attribute) 属性: 一个关系
2、中某一列的名称,描述一列数据 的含义。如Movies中的length。 一个属性有一个名称。 一个关系中的多个属性不能重名。 33.1.2 模式(schema) 关系模式(relational schema): 一个关系的名称及其一组属性的集合,称为一 个“关系模式”。 表示为:关系名(属性1, 属性2, , 属性n)例如:movies (title, year, length, fileType) 一个数据库包含一个或多个关系模式。 一组关系模式的集合,称为一个“关系数据 库模式”,或“数据库模式”。 一个关系模式中的各属性排列有次序吗? 没有。 但方便起见,一个关系设有一个“缺省次序 ”。
3、 43.1.3 元组(tuple) 元组: 一个关系中除了属性标题之外的一行数据。 一个关系中可能没有元组。 一个元组(行)在每个属性(列)上有一个交叉, 即一个分量(component)。 元组的表示: 按照关系模式,用逗号分割每个分量。 例:(Star Wars, 1977, 124, color )注意:不表示属性名称,按照关系模式中属 性的次序表示各分量的值。 53.1.4 域(domain) 域: 关系模型要求每个元组的每个分量有原子性 。 一个域是一种基本数据类型,如integer, char(n)/string, date, time等,或常量。 一个关系中每个属性都属于某个域,
4、即一种基 本数据类型。 原子性atomic : 没有内部结构,不能再分解的基本数据类型。 原子性往往相对而言,与软件需求相关。63.1.5 关系的等价表示 一个关系有多种等价表示: 改变关系中属性的排列次序,即改变列次序,不 改变关系的含义。注意,各分量对应各列。 改变关系中元组的排列次序,即改变行次序,不 改变关系的含义。 titleyearlengthfilmTypeStar Wars Mighty Ducks Waynes World1977 1991 1992124 104 95color color color73.1.6 关系的实例 关系的模式与元组之间的关系: 关系模式相对静态;
5、而关系中的元组是动态的 。 元组的增、删、改必须按关系模式进行。 实例(instance): 关系中的元组的集合即为该关系的一个实例。 关系的实例随时间变化,“当前实例”指的是 在当前时刻,某关系中的元组。 83.2 从E/R图到关系设计 如何把E/R模型转换为关系设计? 内容: 实体集到关系的转换 E/R联系到关系的转换 弱实体集的处理93.2.1 实体集到关系的转换 非弱实体集转换为关系设计 : 建立相同名称的关系,且具有相同属性 。 MoviestitleyearlengthfilmTyp eStars- inStarsnam eaddress20-240=10Studiosnam ea
6、ddressOwnsMovies (title, year, length, filmType)Stars (name, address)Studios (name, address)103.2.2 E/R联系到关系的转换 多元联系转换为关系设计: 先转换为二元联系,再按下面方法转换。 二元联系转换为关系设计(根据多重性来处理): E1到E2的多对多联系R:R表示为一个关系,其属性是E1 和E2的键属性,加上自身属性。 E1到E2的多对1联系R:R可表示为一个关系,但不是必须 。 E1到E2的1对1联系R:R可表示为一个关系,但通常不表 示为关系。而采用以下两种方式: l 在E1关系中增加E2
7、关系的键,E2作为被参照关系。l 在E2关系中增加E1关系的键,E1作为被参照关系。1对1联系可能被合并为一个关系。 11Stars-in (title, year, starName)两边的键属性,加上自身属性属性可以改名,使之更清晰。3.2.2 E/R联系到关系的转换titleyearstarNameStar Wars Star Wars Star Wars Mighty Ducks Waynes World Waynes World1977 1977 1977 1991 1992 1992Carrie Fisher Mark Hamill Harrison Ford Emilio CAe
8、vey Dana Carvey Mike Meyers12Owns (title, year, studioName)titleyearstudioNameStar Wars Mighty Ducks Waynes World1977 1991 1992Fox Disney Paramount3.2.2 E/R联系到关系的转换多对1的关系往往可以合并到多的一方:Movies (title, year, length, filmType, studioName)titleyearlengthfilmTypestudioName Star Wars Mighty Ducks Waynes Worl
9、d1977 1991 1992124 104 95color color colorFox Disney Paramount133.2.3 处理弱实体集 弱实体集转换为关系设计 : 弱实体集E表示为一个关系,包含自身属性 和F关系的键属性。 关系R不能表示为一个关系。 ERF14Studios (name, address) Crews (studioName, number)联系Unit-of不能成为一个关系3.2.3 处理弱实体集CrewsnumberUnit-ofStudiosnam eaddress153.2.3 处理弱实体集MoviesStarsStudiosSigndateSala
10、rynameaddrtitleyearnameaddrStar-ofMovie-ofStudio-ofContractsContracts (starName, studioName, title, year, salary, signdate)16DepartmentSalesmanCustomerSalesorderProductSalesitemsales forruns foras headerworks forunit-ofcontainsdeptidnameempididnonamegenderphonename provcityphoneunitordernosigndatecu
11、stidlinenosalescostquantitytypespecpricedescprodidfactory 销售业务数据库转换为关系模式173.4 函数依赖 用形式化方法研究一个关系中各属性之 间的语义关系。 内容: 函数依赖的定义 关系的键 超键 从E/R图中发掘键183.4 函数依赖 依赖(dependency)是数据库一个成熟的 理论,涉及如何构建一个良好的关系数 据库模式,以及当一个模式存在缺陷时 应该如何改进。 函数依赖(functional dependency FD) 是关系中键概念的泛化,使用函数 依赖这一概念定义关系模式的规范形式 。 规范化(normalizatio
12、n)可以将关系 分解为两个或多个关系以消除原有关系 的异常。193.4.1 函数依赖的定义 函数依赖的定义: 若关系R的任意两个元组在属性A1、A2、 、An上一致(即有相同分量值),则这两个元 组在属性B上也一致,则称属性A1A2An函 数决定B,或称属性B函数依赖于A1A2An。记为:A1A2An B tuAB若t和u在A上一致, 则在B上也一致 203.4.1 函数依赖的定义例如:关系 学生(学号, 姓名, 性别) 中学号 姓名学号 性别 考虑:姓名 性别 ?如果两个元组具有相同学号,则两 个元组指同一个学生,故具有相同姓名 。213.4.1 函数依赖的定义 关系:学生(学号, 姓名,
13、性别) 中为何学号 姓名 成立?在一个关系中,不存在(键值)完 全相同的元组。如果不存在两个元组具有相同学号 ,即每个元组各表示一个学生,则 学 号 姓名 成立。223.4.1 函数依赖的定义 关系:学生(学号, 姓名, 课号, 成绩) 中学号 姓名 ?如果两个元组具有相同学号,则两个元组指同一 个学生,故具有相同姓名。但是:学号 成绩 ?如果两个元组学号相同,但课程号不同,其成绩 亦可能不同。只有在学号,课号都确定的情况下,成绩才被确 定,因此:学号,课号 成绩233.4.1 函数依赖的定义 推论1: 当且仅当A1A2An B1A1A2An B2A1A2An Bm则A1A2An B1B2Bm
14、 推论2: A A 243.4.1 函数依赖的定义 例:关系 Movies(title, year, length, filmType, studioName, starName) 中,存在哪些函数依 赖?titleyearlengthfilmTypestudioNamestarNameStar Wars Star Wars Star Wars Mighty Ducks Waynes World Waynes World 1977 1977 1977 1991 1992 1992 124 124 124 104 95 95 color color color color color color
15、 Fox Fox Fox Disney Paramount Paramount Carrie Fisher Mark Hamill Harrison Ford Emilio Estevez Dana Carvey Mike Meyers 253.4.1 函数依赖的定义 title year length filmType studioName 考虑:title year starName ? 例:分析 学生(学号,课号,成绩,系 号,宿舍区)中的函数依赖263.4.1 函数依赖的定义 如何分析一个具体关系中的函数依赖 : 根据属性之间的语义关系分析函数依赖。 应考虑所有可能的属性组合。 尽可能使函数依赖式的左面最小化,而右 面最大化。 注意:函数依赖是针对关系模式,而不是 针对特定实例,故只从关系实例不能确切 断定函数依赖。273.4.1 函数依赖的定义 函数依赖的三种情形: 如果任意两元组在属性A上一致,在B上 也一致,则有A B成立。 如果存在两元组在属性A上一致,在B上 不一致,则A B不成立。 如果任意两元组在属性A上不可能一致, 则不管在B上是否一致,有A B成立。283.4.1 函数依赖的定义 几个术语: 部分函数依赖:若X Y,且存在X的真 子集X, X Y,则称Y对X部分函数依 赖。 完全函数依赖:若X Y,且Y对X不是 部分函数依赖,则称Y对X是完全函数依 赖。