建立数据模型ppt课件.ppt_第1页
建立数据模型ppt课件.ppt_第2页
建立数据模型ppt课件.ppt_第3页
建立数据模型ppt课件.ppt_第4页
建立数据模型ppt课件.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

第5章建立数据模型 5 1建立实体联系模型5 2E R模型的设计方法5 3E R模型向关系模型的转化5 4历史上有影响的数据模型5 5数据模型与数据库系统的发展 5 1建立实体联系模型 数据模型是数据库系统的核心和基础 但现实世界总是先抽象成信息世界 然后才能转化为数据世界 信息世界是对现实世界的抽象 因此 信息世界不可能等价于现实世界 但是 信息世界必须 1 真实 忽略的是非本质内容 与研究无关的内容 抽象的是本质内容 确实存在的内容 2 完整 精确 信息世界应有丰富的语义表达能力 能模拟现实世界的各种情况 3 易于理解 易于修改 特别是易于用户理解 4 易于向DBMS所支持的数据模型转换 现实世界抽象成信息世界的目的 是为了实现信息的计算机处理 信息世界中的数据模型又称为概念模型 作为从现实世界到其他数据模型转换的中间模型 概念模型不考虑数据的操作 而只是用比较有效 自然的方式描述现实世界的数据及其联系 在设计概念模型时 最著名 最实用的是P P S Chen于1976年提出的 实体 联系模型 Entity RelationshipApproach 简称E R模型 5 1 1实体联系模型的基本构成实体联系 E R 数据模型所采用的三个主要概念是 实体集 联系集和属性 实体集是具有相同类型及相同性质 属性 的实体集合 联系集是指同类联系的集合 在E R模型中 用矩形框表示实体集 矩形框中写上实体名 用椭圆表示属性 椭圆中标上属性名 实体的主码用下划线表示 例如实体集职工可用E R模型表示 如图5 1所示 图5 1职工的E R模型表示 实体集之间的联系集用菱形表示 并用无向边与相关实体集连接 菱形中写上联系名 无向边上写上联系集的类型 部门和职工间的联系可用图5 2所示的E R模型表示 图5 2部门和职工的一对多联系 在图5 2 a 中 无向边上的1和n表示了部门和职工的联系是一对多联系 或者说职工与部门之间是多对一联系 即表达了一位职工只能在一个部门中工作 而一个部门中可有位职工这一语义 注 有些文献中使用带箭头的有向边表示联系集的类型 实体集间除了一对多 多对一 联系以外 还有一对一 多对多联系 企业中除了职工 部门实体集以外 还有工资 项目等实体集 通过分析可知 企业中每一个职工有一份工资单 而每一份工资单也只属于一个职工 所以职工和工资实体集之间的关系为一对一关系 简记为1 1 另外 一个职工可参加多个项目 一个项目也由多个职工来参加 所以职工和项目实体集之间的联系是多对多的 简记为 m n 它们的E R模型表示分别如图5 3 图5 4所示 图5 3职工和工资的一对一联系 图5 4职工和项目的多对多联系 5 1 2多元联系在E R模型中 可以表示两个以上实体集之间的联系 称为多元联系 如图5 5中的联系签约就是一个三元联系 图5 5包含了如下的语义 对于特定的影星和电影来说 该影星为演该电影只能和一个制片公司签约 但一个制片公司可以为一部电影和几个影星签约 一个影星可以和一个制片公司签约主演多部电影 图5 5演员 电影和制片公司之间的三元联系 一个多元联系集总可以用多个不同的二元联系集来替代 考虑一个抽象的三元联系集R 它联系了实体集A B C 可引进一实体集E替代联系R 然后 为实体集E和A B C建立三个新的二元联系集 分别命名为RA RB RC 可以将这一过程直接推广到n元联系集的情况 所以 理论上可以限制E R模型中只包含二元联系集 然而 在大部分情况下 使用多元联系集比二元联系集更方便 因为 1 多元联系集可以清晰地表示出几个实体集参与到一个联系集的情况 而转换为多个二元联系后 难以体现这种参与性 2 对于为替代多元联系集而引进的实体集 有时不得不为其创建一个标识码 因为每个实体必须可以相互区分 创建的标识码和新建的多个二元联系一样 增加了设计的复杂度和对存储空间的需求 5 1 3联系的属性联系也可以具有单独的属性 如在图5 5中 如果希望建立某演员和制片公司为一部电影签约的有关酬金 此时 不能把酬金作为演员的属性 因为一个演员可能签约了多部电影 得到了不同的酬金 也不能把酬金作为制片公司的属性 因为制片公司可能对不同影星支付了不同的酬金 酬金也不能作为电影的属性 因为一部电影中不同的影星可能得到不同的酬金 所以应该把酬金作为联系的属性 如图5 6所示 图5 6联系可具有属性 5 1 4自身联系在一个联系中 一个实体集可以出现两次或多次 扮演多个不同角色 此种情况称为实体集的自身联系 一个实体集在联系中出现多少次我们就从联系到这个实体集画多少条线 到实体集的每条线代表该实体集所扮演的不同角色 图5 7是一个自身联系的例子 图5 7一个自身联系的例子 图中给出了实体集职工的一个自身联系 领导 同一部门中 职工与职工之间可有领导和被领导的关系 其中一位是另一位的领导 图中的联系集是1 n 说明了一位职工 领导 可领导其他多名职工 而一位职工只被另一位职工 领导 领导 5 1 5子类和is a层次联系在信息世界中 常常需要描述这样的实体集A A属于另一实体集B A中的实体都有特殊的属性需要描述 并且这些特殊属性对B中其他的实体无意义 在E R模型中 称A是B的子类 或B是A的父类 两类实体之间存在一种层次联系 Is a 属于 图5 8 a 是它们的E R模型的表示方法 如果A和B存在Is a联系 则A中的每个实体a只和B中的一个实体b相联系 而B中的每一个实体最多和A中的一个实体相联系 从这个意义上说 A和B存在一对一的联系 但事实上 a和b是同一事物 A可以继承B中的所有属性 又可以有自己特殊的属性说明 用来区分A的主码也就是B的主码 例如 企业中的职工实体集和经理实体集 存在着Is a联系 即经理是 isa 职工 经理可以继承职工的所有属性 但又有 任职时间 这一其他职工没有的属性 其E R模型如图5 8 b 所示 图5 8具有Is a联系的E R模型 5 2E R模型的设计方法 在设计E R模型时 首先必须根据需求分析 确认实体集 联系集和属性 一个企业 单位 有许多部门 就会有各种业务应用的要求 需求说明来自对它们的调查和分析 有关需求分析的方法将在第7章中介绍 这里只介绍E R模型的设计方法 在介绍设计E R模型的方法之前 首先强调三条设计原则 1 相对原则 关系 实体 属性 联系等 是对同一对象抽象过程的不同解释和理解 即建模过程实际上是一个对对象的抽象过程 不同的人或同一人在不同的情况下 抽象的结果可能不同 2 一致原则 同一对象在不同的业务系统中的抽象结果要求保持一致 业务系统是指建立系统的各子系统 3 简单原则 为简化E R模型 现实世界的事物能作为属性对待的 尽量归为属性处理 属性和实体间并无一定的界限 如果一个事物满足以下两个条件之一的 一般可作为属性对待 1 属性不再具有需要描述的性质 属性在含义上是不可分的数据项 2 属性不能再与其他实体集具有联系 即E R模型指定联系只能是实体集间的联系 例如 职工是一个实体集 可以有职工号 姓名 性别等属性 工资如果没有需要进一步描述的特性 可以作为职工的一个属性 但如果涉及到工资的详细情况 如 基本工资 各种补贴 各种扣除时 它就成为一个实体集 如图5 9所示 图5 9工资由属性变为实体集 再如 仓库和货物的关系 如果一种货物只存放在一个仓库中 那么仓库可作为货物的属性加以说明 但如果仓库与职工发生联系 每个仓库有若干个保管员 那么仓库就应该作为一个实体集加以说明 如图5 10所示 设计一个较大型的企业或单位的E R模型 一般按照先局部 后整体 最后优化的方法进行 下面以企业职工管理系统为例 说明E R模型的一般设计过程 图5 10仓库由属性变为实体集 例5 1企业职工管理中 需要涉及的功能有 人事处对职工的档案和部门进行管理 包括职工基本情况 部门的基本情况以及各种职称 职务的管理 财务处管理职工的工资情况 科研处管理项目 职工参加项目的情况 1 确定局部应用范围 设计局部E R模型局部E R模型的设计步骤如图5 11所示 1 确定局部应用范围本例中初步决定按部门划分不同的应用范围 即分为三个子模块 人事管理 工资管理和项目管理 下面以人事管理为例 说明设计局部E R模型的一般过程 2 确认实体集在人事管理中 需要对职工 部门 职称职务进行管理 所以实体集有 职工 部门 职称职务 图5 11局部E R模型的设计步骤 3 确认实体集间的联系集需要判断所有二二实体集之间是否存在联系 职工与部门 n 1 职工与职称职务 m n 因为多个职工可有同一种职称或职务 而一个职工既可有职称又可有职务 如某职工具有高级职称 高工 同时又是处级干部 部门与职称职务之间没有联系 4 确认实体集的属性职工 职工号 姓名 性别 年龄 部门 部门号 名称 电话 职称职务 代号 名称 津贴 住房面积 5 确认联系集的属性职工与部门的联系没有单独的属性 职工与职称职务的联系有单独的属性 职称或职务的任职日期 6 画出局部E R模型图5 12 图5 13 5 14分别是人事管理 工资管理和项目管理局部E R模型 图5 12人事管理局部E R模型 图5 13工资管理局部E R模型 图5 14项目管理局部E R模型 2 集成局部E R模型 形成全局初步E R模型将所有局部E R模型集成为全局E R模型 设计过程如图5 15所示 由于各个局部应用所面对的问题不同 且通常由不同的设计人员进行局部E R模型的设计 因此各个局部E R模型之间必定会存在许多不一致的地方 称为冲突 所以在合并各局部E R模型时 首先要合理地消除各局部E R模型之间的冲突 图5 15全局E R模型的设计步骤 冲突主要有以下三类 1 命名冲突 包括实体集名 联系集名 属性名之间的同名异义和同义异名等命名冲突 同名异义 即不同意义的对象在不同的局部E R模型中具有相同的名称 同义异名 即同一意义的对象在不同的局部应用中具有不同的名称 例如 对于实体集职工 人事部门称之为职工 科研部门可能称之为科研人员 命名冲突必须通过各部门一起讨论 协商解决 2 属性冲突 包括属性值类型 取值范围 取值单位的冲突 例如 职工号 在一个局部E R模型中定义为整数 在另一个E R模型中定义为字符串 有些属性采用不同的度量单位 也属于属性冲突 3 结构冲突 包括两种情况 一是同一对象在不同应用中具有的抽象不同 二是同一实体在各局部应用中包含的属性个数和属性排列次序不完全相同 例如 在人事部门中 工资可能作为职工的一个属性处理 而在财务部门中作为一个实体集 有时实体集间的联系在不同的局部应用中 可能会有不同的联系集 根据需求分析 在兼顾的情况下 对发生冲突的属性 实体集 联系进行合理的调整和综合 形成一个全系统用户共同理解和接受的统一的E R模型 是合并各局部E R模型的主要工作和关键所在 在本例5 1中 就存在结构冲突 在人事管理E R模型中 工资作为职工的属性 而在工资管理E R模型中 工资是实体集 在项目管理E R模型中 职务是职工的属性 而在人事管理中 职务是一个实体集 在本例中 可将工资和职务均调整为实体集 在集成全局E R模型时 一般采用两两集成的方法 即先将具有相同实体集的两个E R模型 以该相同实体集为基准进行集成 如果还有相同实体集的E R模型 再次集成 直到所有具有相同实体集的局部E R模型都被集成 得到初步的全局E R模型 本例5 1中 以职工为公共实体集进行集成 其初步E R模型如图5 16所示 图5 16合并后的全局初步E R模型 3 消除冗余 优化全局E R模型一个 好 的全局E R模型 除能反映用户功能需求外 还应该满足以下几个条件 1 实体联系尽可能少 2 实体集所含属性尽可能少 3 实体集间联系无冗余 为了使实体集尽可能少 有时需要合并相关的实体集 如1 1联系的两个实体集 具有相同码的实体集 可以合并 有些实体集的属性可能是冗余的数据 所谓冗余数据是指重复存在或可由基本数据导出的数据 如图5 16所示的工资中的实发工资即可由其他几个属性中计算得到 属于冗余数据 冗余数据一方面浪费存储空间 另一方面又会破坏数据的完整性 如某职工因为某种原因 增加了基本工资 用户除了修改基本工资一项外 还必须同时修改实发工资 否则数据就会前后不一致 但并不是所有的冗余数据都必须消除 有时为了提高效率 不得不以冗余数据为代价 如财务处频频地对每个职工的实发工资进行计算和统计 影响工作效率 可以让此冗余数据存在 但必须有数据的关联说明 并作为数据模型的完整性约束条件 5 3E R模型向关系模型的转化 E R模型是概念模型的表示 要使计算机能处理模型中的信息 首先必须将它转化为具体的DBMS能处理的数据类型 E R模型可以向现有的各种数据模型转换 而目前市场上的DBMS大部分是基于关系数据模型的 所以本节介绍E R模型向关系数据模型的转换方法 关系模型的逻辑结构是一系列关系模式 表 的集合 将E R模型转化为关系模式主要需解决的问题是 如何用关系表达实体集以及实体集间的联系 下面从一个具体例子出发 说明E R模型向关系模型转换的一般规则和步骤 例5 2将图5 12所示人事管理局部E R模型向关系模型转换 1 将每一个实体集转换为一个关系模式 实体集的属性转换成关系的属性 实体集的码即对应关系的码 本例中将生成如下三个关系模式 职工 职工号 姓名 性别 年龄 工资 部门 部门号 名称 电话 负责人 职称职务 代号 名称 津贴 住房面积 2 将每个联系集转换成关系模式 对于给定的联系R 由它所转换的关系具有以下属性 联系R单独的属性都转换为该关系的属性 联系R涉及到的每个实体集的码属性 集 转换为该关系的属性 转换后关系的码有以下几种情况 若联系R为1 1联系 则每个相关实体的码均可作为关系的候选码 若联系R为1 n联系 则关系的码为n端实体的码 若联系R为m n联系 则关系的码为相关实体码的集合 根据此规则 由联系转换来的关系模式为 分工 职工号 部门号 任职 职工号 代号 任职日期 3 根据具体情况 把具有相同码的多个关系模式合并成一个关系模式 具有相同码的不同关系模式 从本质上描述的是同一实体集 因此可以合并 合并后的关系包括两关系的所有属性 这样可以节省存储空间 如本例中的职工关系和分工关系 可以合并为下面同一个关系模式 职工 职工号 姓名 性别 年龄 工资 部门号 事实上 当将联系集R转换为关系模式时 只有当R为m n联系时 需要重新建立新的关系模式 当R为1 1 1 n及Is a的联系时 可以不引进新的关系模式 只对与联系有关的实体集的关系模式作适当的修改 请读者自行归纳其规律 5 4 历史上有影响的数据模型 在关系数据模型产生之前 数据库管理系统普遍使用的数据模型是层次和网状数据模型 它们又被称为非关系数据模型 它们的数据结构和图的结构是相互对应的 在非关系数据模型中 概念模型中的实体型反映为记录型 因此 图的结点表示为记录型 实体 结点之间的连线弧 或有向边 表示为记录型之间的联系 每个记录型可包含若干个字段 对应于描述实体的属性 由于实际系统一般不允许直接表示多对多联系 多对多联系应转换为多个一对多联系 所以下面的讨论仅限于一对多 包括一对一 的情况 通常 把表示 一 的记录型放在上方 称为父结点 或父记录 表示 多 的记录型放在下方 称为子结点 或子记录 如图5 17表示部门记录型和职工记录型之间的联系 是一个基本层次联系 图5 17一个基本层次联系 5 4 1层次模型在现实世界中 有许多事物是按层次组织起来的 例如 一个学校有若干个系 一个系有若干个班级和教研室 一个班级有若干个学生 一个教研室有若干教师 其数据库模型如图5 18所示 可见层次模型是一棵倒挂的树 图中系和班级 班级和学生 教研室和教师等都构成了双亲与子女关系 这是层次模型中最基本的数据关系 层次模型有以下两个特点 有且仅有一个结点无父结点 这样的结点称为根结点 非根结点都有且仅有一个父结点 在层次模型中 一个结点可以有几个子结点 也可以没有子结点 前一种情况下 这几个子结点称为兄弟结点 如图5 18中的班级和教研室 后一种情况下 该结点称为叶结点 如图5 18中的学生和教师 图5 19是图5 18数据模型的一个实例 一个值 该值是计算机系记录值及其所有的后代记录值组成的一棵树 图5 18学校层次数据库模型 图5 19学校层次数据库模型的一个实例 5 4 2网状模型把层次模型的限制放开 一个结点可以有一个以上的父结点 就得到网状模型 网状模型还可以有的两个特点是 可能有一个以上的结点无父结点 结点与其父结点之间的联系可以不止一个 由定义可知 层次模型中子女结点与双亲结点的联系是唯一的 而在网状模型中这种联系可以不唯一 因此 在网状模型中 每一个联系都必须命名 每一个联系都有与之相关的双亲记录和子女记录 图5 20 a b c 给出了几个网状模型的例子 图5 20几个网状模型的例子 网状数据模型中记录的概念类似于关系数据模型中关系的概念 如 记录型关系模式记录关系的元组记录的字段关系的属性在网状模型中 用系 Set 表示一对多的联系 网状模型的有向图即是系的集合 系由一个双亲记录型和一个或多个子女记录型构成 系中的双亲记录型称为首记录 子女记录型称为属记录 系必需命名 对应 对应 对应 在非关系模型中 子女结点是不能脱离其父结点而独立存在的 任何一个记录只有按其路径查看时才有实际意义 用户必须提供父结点才能查询子结点 因此数据库开发人员必须熟悉所用模型的结构 在应用程序中才能明确指出查询的路径 才能实现查询 这种要求 自然加重了用户的负担 层次模型曾在20世纪60年代末至70年代初流行过 其中最有代表性的当推IBM公司的IMS 但层次DBMS提供用户的数据模型和数据库语言比较低级 数据独立性也较差 所以在关系数据库之前 网状DBMS要比层次DBMS用得普遍 美国CODASYL ConferenceonDataSystemsLanguages 委员会中的DBTG DataBaseTaskGroup 组在1971年提出了著名的DBTG报告 对网状数据模型和语言进行了定义 在1978年和1981年又作了修改和补充 因此 网状数据模型又称为CODASYL模型或DBTG模型 在20世纪70年代 曾经出现过大量的网状DBMS产品 比较著名的有Cullinet软件公司的IDMS Honeywell公司的IDS HP公司的IMAGE等 有些网状DBMS目前还在运行 所以说 在数据库的发展史上 层次模型和网状模型曾起过重要的作用 5 5数据模型与数据库系统的发展 1 第一代数据库系统层次数据库系统和网状数据库系统称为第一代数据库系统 层次模型是分层结构 网状模型是网状结构 它们的数据结构都可以用图来表示 层次模型对应于一棵有根的定向树 网状模型对应于平面有向图 它们统称为格式化数据模型 实际上层次模型是网状模型的特例 层次模型和网状模型有许多共同的特征 如IMS和DBTG系统都支持三级模式结构 都用存取路径来表示数据之间的联系 用户对数据的存取 必须按照定义了的存取路径进行 必须清楚地了解数据在数据库中的位置 对数据的操作是一次一个记录导航式地进行 程序和数据都具有较高的物理独立性 但逻辑独立性较低 导航式的数据操纵语言的优点是存取效率高 但程序员在编写应用程序时 不仅要知道 干什么 而且要指出 怎么干 即程序员必须掌握数据库的逻辑和物理结构 在编写程序时 必须一步一步地 引导 程序 按照数据库中某一已定义的存取路径来访问数据 所以网状和层次数据库又被称为 专家数据库 不能被一般的用户所接受 同时 这种导航式数据操纵语言 使得数据库应用程序的可移植性很差 数据的逻辑独立性也较差 2 第二代数据库系统支持关系数据模型的数据库系统是第二代数据库系统 层次 网状和关系数据模型是数据库诞生以来广泛应用的数据模型 一般称之为传统数据模型 关系模型概念清晰 简单 易于用户使用和理解 有严格的理论基础 关系代数 关系模型中 只有单一的数据结构 关系 实体和实体间的联系均用关系表示 数据结构的单一性 带来了数据操作的简单化 克服了非关系系统中由于信息表示方式的多样性带来的操作复杂性 支持非过程化语言 如SQL 操作数据 关系数据库语言的高度非过程化 将用户从对数据库的导航式编程中解脱出来 降低了编程难度 用户只要提出 做什么 而无须指明 怎么做 因此无需了解数据库的存取路径 存取路径的选择由系统自动完成 这不但减轻了用户负担 而且有利于提高数据独立性 层次和网状数据模型中采用面向记录的操作方式 而在关系数据模型中 采用的是集合操作方式 操作的对象和结果都是元组的集合 1970年 E F codd提出关系模型以后 关系数据库系统很快就在数据库领域中占据了相当重要的地位 商用关系数据库系统 特别是

温馨提示

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

评论

0/150

提交评论