360 likes | 516 Views
数据库应用基础. 第 3 章 数据模型. 在本章里,您将学习以下主要内容: 数据建模的意义及其优点 数据模型的基本概念和结构 实体联系模型的组成元素 属性的意义及确定 标识符和键的意义 联系的类型、基数和度数 数据建模过程及简例 好的数据模型的评价准则. 3.1 模型的基本概念. 模型 是对现实或构想的一种表述 逻辑模型 记录业务需求以展示系统是什么或系统做什么,它们是与实现无关的;也就是说,它们独立于任何技术实现来描述系统。因此,逻辑模型说明了系统的本质。有时逻辑模型也被称作本质模型、概念模型、业务模型。 物理模型
E N D
数据库应用基础 第3章数据模型
在本章里,您将学习以下主要内容: • 数据建模的意义及其优点 • 数据模型的基本概念和结构 • 实体联系模型的组成元素 • 属性的意义及确定 • 标识符和键的意义 • 联系的类型、基数和度数 • 数据建模过程及简例 • 好的数据模型的评价准则
3.1 模型的基本概念 • 模型是对现实或构想的一种表述 • 逻辑模型 • 记录业务需求以展示系统是什么或系统做什么,它们是与实现无关的;也就是说,它们独立于任何技术实现来描述系统。因此,逻辑模型说明了系统的本质。有时逻辑模型也被称作本质模型、概念模型、业务模型。 • 物理模型 • 不仅展示了系统是什么或系统做什么,而且还展示了系统实际上和技术上如何实现。它们是与实现相关的,所以它们反映了技术选择和所选技术的限制。有时物理模型也被称作实现模型、技术模型。
3.1 模型的基本概念 • 根据模型所表述的不同内容,通常有两种常见模型: • 过程模型 是一种组织和记录数据的结构和流向的技术,它记录系统的“过程”和由系统的“过程”实现的逻辑、策略和程序。过程模型的成果是数据流图 (Data Flow Diagram,DFD)。 • 数据模型 是一种组织和记录系统数据的技术。因为数据模型通常实现成数据库,所以数据建模有时被称为数据库建模。数据模型的成果是实体联系图 (Entity Relationship Diagram,ERD)。
3.1 模型的基本概念 • 数据模型的优越性如下: • 数据模型有助于设计人员快速地确定业务词汇。 • 数据模型几乎总是比过程模型构造得快。 • 数据模型占用的篇幅比其他模型小,通常可以记在一张纸上,而过程模型则常常需要十几页纸。 • 过程模型建模经常容易陷入不必要的细节中。 • 现实系统与拟建系统的数据模型之间的相似性远比它们与过程模型之间的相似性高。
3.1 模型的基本概念 • 有几种用于数据建模的符号记法。大多数记法都以它们的发明者命名,例如:Chen、Martin、Bachmen、Mrise,或者采用公布的标准命名,如:IDEFIX。 • 这些数据建模“语言”一般都支持相同的基本概念和结构,它们按照数据描述的实体和联系来刻画数据,通常也把这种模型称作E-R模型。 • E-R模型的关键元素是实体、属性、标识符和联系。
3.2 实体 • 实体 指的是某些事物,系统需要存储有关这些事物的数据; 或者说,实体是可以从用户的工作环境中标识出的事物,是人们想要跟踪的某个事物。 • 实体实例 是实体的具体值
实体与实体实例 考试成绩(实体) 实例1 实例2 班级 学号 姓名 课程 成绩 051会计(1) 20050313005 王雪 管理信息系统 89 051金融(1) 20050512018 李毓敏 管理信息系统 75 在E-R模型中,我们可以用矩形来表示实体。 学生 课程 教师
3.3 属性 • 实体有描述它们特征的属性,一个或多个属性标识一个实体。 • 属性是实体的描述性性质或特征。特征应该是具有相对重要意义的某一方面情况的描述结果。 班级 学号 姓名 课程 成绩 考试成绩 …… 时间 地点 教师 形式
3.3 属性 • 实体中的每一个属性,都应该反映我们所关心“事物”的某一方面的特征。
3.3 属性 • 每个属性的值按照三种性质定义: • 数据类型 属性的数据类型定义了这个属性中可以存储什么类型的数据。 • 域 属性的域定义了这个属性可以取的合法值。 • 默认值 每个属性应该有逻辑默认值,就是说,如果用户没有为某个实例的该属性指定值的话,就将默认值作为其值。
3.4 标识符 • 实体的标识符由一个或多个实体属性构成。 • 标识符可以是惟一的或不惟一的。 • 如果是惟一的,则它能且只能标识一个实例。 • 由两个或多个属性构成的标识符叫组合标识符。 张工,8032 张工,5103 张工,7615
3.4 标识符 • PK(Primary Key) 所标注的属性为主键。 通常主键用以惟一标识实体实例。
3.4.1 键 • 惟一标识符的同义词是键(Key) • 象惟一标识符一样,如果有的实体需要一组属性(多于一个属性)来惟一地标识一个实体实例,那么,这一组属性所构成的键称为复合键。 • 一个实体可能有多个键。就是说,一个实体有若干个的属性或属性组都可以作为键。具有这种特点的属性或者是一组属性都可以称为候选键。 • 主键是最常被用来惟一地确定一个实体实例的候选键,没有被选做主键的其它任何候选键都称做次键,或者替代键(Alternate Key)。
3.4.2 键的选择与组成 • 由于键在确定实体实例时起到关键性的作用,我们在组成和选择实体的键的时候,必须明确键的组成特点和选择标准。 • 在每个实体实例的生命期中,一个键的值不应该改变。 • 键的值不能为空。作为键值,对于每一个实体实例来说,都必须有一个非空的具体值。否则,就不要用这个属性做键。 • 键的作用是惟一标识一个实体实例。有些实体不一定在我们确定它时就具有明确的可以作为键的编码,此时,我们可以建立编码,以便有效地标识实体实例。
3.4.2 键的选择与组成 • 当我们创建一个业务编码方案时,还应该考虑以下几个要点: • 编码应该可扩展。 • 全部编码应该对每个实体实例指定一个惟一的值。 • 编码应该足够大(位数足够多),以便描述有区别 的特征。 • 编码应该方便使用,即,在需要为新实例设置编码 时容易创建。
当独立实体中复合键涉及到太多的属性时,可以考虑使用代理键来代替它。当独立实体中复合键涉及到太多的属性时,可以考虑使用代理键来代替它。 • 代理键是为解决实体的标识问题而增加的属性,当实体没有明确或者简洁的键时,可以采用编码的方式来建立代理键。
3.5 联系 • 从概念上说,系统中的实体都不是孤立存在的,实体各自代表的事物间互相交互并且互相影响,共同支持业务的正常运行。实体间是有一定联系的。 • 联系,是存在于一个或多个实体之间的自然业务联系。 • 联系可以表示链接实体的一个事件,或者仅仅是存在于实体之间的逻辑关系。
一个学生可以选修一门或多门课程。 • 一门课程正在被零个或多个学生选修学习。 选修课程 在修学生 学生 课程 • 所有的联系都隐含为双向的,意味着它们可以从联系的两个方向上进行解释,通常实体间的业务联系可以用动词短语来描述。 拥有学生 专业 学生
3.5.1 联系的基数 • 基数定义了一个实体相对于另一个与之关联的实体的某个具体值的最小和最大具体值的数量。 • 因为所有的联系都是双向的,所以对于每个联系在两个方向上都必须定义基数。 最小基数 学生 拥有学生 专业 最大基数
基数含义 最大实例数 图形化符号 最小实例数 1 正好一个 1 零或一个 0 1 一或多个 1 N 0 零或多个 N 基数符号
3种典型的联系 使用汽车 汽车 雇员 1:1关系 入住学生 宿舍 学生 1:N关系 诊治病人 就诊医生 病人 医生 M:N关系
3.5.2 联系的度数 • 二元联系 • 联系的度数是参与那个联系的实体数量 入住学生 宿舍 学生 • 一元联系(递归联系) 下属职工 前置课程 职工 课程 (b) (a)
3.5.2 联系的度数 • 三元联系 父亲 母亲 双亲 孩子
3.5.2 联系的度数 • 四元联系 班级 课程 授课 教室 教师
3.5.2 联系的度数 • 前四元联系的实现 班级 课程 关联实体 授课 教师 教室
关联实体是一个从多个其他实体(也称为父实体)继承其主键的实体。关联实体是一个从多个其他实体(也称为父实体)继承其主键的实体。 • 关联实体的键是复合键,由各父实体的主键组合而成。 父实体 子实体
多对多联系的分解 • 通常,多对多联系也称做非特定联系,是一个实体的多个实例同另一个实体的多个实例相关联的联系,这种联系仅仅适用于初始数据模型中,并应该尽快地分解掉。 • 许多多对多联系可以分解成两个一对多联系,每个实体都成为父实体,引入一个新的关联实体作为它们的子实体。 学生 课程
用一个关联实体分解多对多联系 选修课程 学生 课程 关联实体
3.5.3 弱实体 • 弱实体 在数据库中的存在情况依赖于其他实体的存在情况。 • 不是弱实体的实体称作强实体。 教室是弱实体
3.6 数据建模过程 • 数据建模 可以在各种类型的项目中进行,只要打算把业务系统的数据放入数据库,就要进行数据建模。同时,建模可以在项目的多个阶段中进行。 • 数据模型是不断累进的,对于一个企业或应用来说,不存在“最终的”数据模型。相反,数据模型将随着需求的变化而变化,它应该以文档的形式存放在资料库中,以便可以随时访问、扩充和编辑。 • 为酒店系统建立一个简单的数据模型
3.6.1 获取实体 • 可以利用以下几种技术来确定实体: • 在与用户的面谈或商讨会议期间,注意他们讨论中的关键词。例如:“我们有120个不同标准的客房”,“我们的会员客户可以享受不同等级的优惠”。这里提到的“客房”和“客户”就是实体。 • 专门地要求系统所有者和用户确定那些他们想收集、存储和产生信息的事物。那些事物常常表示了应该在数据模型中描述的实体。 • 研究现有的表格、文件和报告。有些表可以确定事件实体,如帐单、客户名单、服务项目清单等。但许多表格还包括了描述其他实体的数据。例如,帐单中涉及到客户、客房、服务项目等。
3.6.2 上下文数据模型 • 上下文数据模型仅仅包括实体和联系,而不包括实体的属性,其目的是提炼我们对系统项目范围的理解,而不是获取实体的细节和业务规则的细节。 客房 客房类型 客户 账单 服务项目 酒店的上下文数据模型
3.6.3 基于键的数据模型 • 基于键的数据模型将消除多对多联系,增加关联实体,并包括主键和替代键。 可以调整联系方式 增加一个关联实体
3.7 评价数据模型 • 好的数据模型应该是简单的。 • 好的数据模型基本上是无冗余的。 • 好的数据模型应该是灵活的而且对未来的需求具有可适应性。