1.2.0 数据模型概念
- 数据模型是对现实世界数据特征的抽象。
- 通俗地讲数据模型就是
现实世界的模拟 。 - 数据模型应满足三方面要求:
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现(数据模型最终是令计算机看懂的)
- 数据模型是数据库系统的
核心和基础 ,数据库发展是沿着数据模型为主线推进的。
1.2.1 两类数据模型
在数据库系统中,根据应用不同的目的和不同的使用对象,可以把不同的模型划分为两大类。
1)数据模型分为两类(分属两个不同的层次)
- 概念模型 也称信息模型
它是按用户的观点来对数据和信息建模,用于数据库设计 - 逻辑模型和物理模型
- 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等
按计算机系统的观点对数据建模,用于DBMS实现 - 物理模型是对数据最底层的抽象
描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法
2)客观对象的抽象过程—两步抽象
- 现实世界中的客观对象抽象为概念模型;
- 把概念模型转换为DBMS支持的数据模型。
- STEP1: 现实世界–> 概念模型,由数据库设计人员完成
- STEP2: 概念模型–>逻辑模型,数据库设计人员完成,数据库设计工具协助完成;逻辑模型–>物理模型,由DBMS自动完成
1.2.2 概念模型
1)概念模型用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户之间进行交流的语言
例:工厂物质管理的概念模型
2)对概念模型的基本要求
3)信息世界的基本概念
(1) 实体(Entity)
- 客观存在并可相互区别的事物称为实体。
- 可以是具体的人、事、物或抽象的概念。
比如,具体的一个学生就是一个实体。
(2) 属性(Attribute)
- 实体所具有的某一特性称为属性。(如学号,姓名等)
- 一个实体可以由若干个属性来刻画。
(3) 码 / 键(Key)
(4) 域(Domain)
(5) 实体型(Entity Type)
- 用实体名及其属性名集合来抽象和刻画同类实体称为实体型(如上图中的学生就是实体型),
实体 一般是具体的人或抽象的事,实体型 更强调抽象来刻画实体。
(6) 实体集(Entity Set)
- 同一类型实体的集合称为实体集(所有的学生就是学生的一个实体集)
(7) 联系(Relationship)
- 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
- 实体内部的联系:通常是指组成实体的各属性之间的联系
- 实体之间的联系:通常是指不同实体集之间的联系,有一对一(1 : 1)、一对多(1 : m)和多对多(m : n)等多种类型
4)概念模型的一种表示方法——实体-联系方法
- E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用E-R图来描述现实世界的概念模型
- E-R方法也称为E-R模型
1.2.3 数据模型的组成要素
- 数据模型是严格定义的一组概念的集合
精确地描述了系统的静态特性、动态特性和完整性约束条件(Integrity Constraints) - 数据模型由三部分组成
- 数据结构–描述系统的静态特性
- 数据操作–描述系统的动态特性
- 完整性约束
1)数据结构
- 刻画数据模型性质的重要方面
数据结构的类型来命名数据模型。例如,层次结构–层次模型、网状结构–网状模型、关系结构–关系模型 - 描述对象之间的联系
一个网状数据模型实例:
- 记录:学生——由学号、姓名所在的专业系名等组成
- SET TYPE:S-SC——学生记录和学生选课之间的联系
2)数据操作
- 对数据库中各种对象的实例允许执行的操作,及有关的操作规则
(1)数据操作的类型
(2)数据操作语言
- 定义数据操作的确切含义、符号、优先级别
- 实现数据操作的语言
- 查询语言——Query Language
- 更新语言——DML
3)数据的完整性约束条件
一组完整性规则的集合
- 完整性规则:给定的数据模型中数据及其联系所具有的
制约和储存规则 。(就是数据、数据与数据间的联系要满足一定约束条件,例如在层次模型中,没有双亲结点就不能插入子女结点,这个便是一个完整性约束条件) - 为什么规定
制约和储存的规则 呢?用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
1.2.4 常用的数据模型
- 格式化模型:层次模型、网状模型
- 关系模型(最常用)
- 对象模型:面向对象的数据模型、对象关系数据模型
- 半结构化数据模型,如XML
- 分结构化数据模型、图模型
在格式化模型中用记录表示实体,
L
i
j
L_{ij}
Lij? 表示
R
i
R_i
Ri?到
R
j
R_j
Rj?的联系。在格式化模型中,都是基本层次联系 的组合。
1.2.5 层次模型
1)表示方法
- 实体型:用记录类型描述,每个节点表示一个记录类型(实体)
- 属性:用字段描述
- 联系:用连线表示实体之间的一对多的父子联系
2)层次模型定义
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
3)层次模型的数据结构
类似于树 ,不一定是二叉树
(1)特点
- 结点的双亲是唯一的
- 只能直接处理一对多的实体联系
- 任何记录值只有按其路径查看,例如找上图中R5的记录,需要R1->R2->R5
- 没有一个子女记录值能够脱离双亲记录值而独立存在
(2)层次数据库模型与值
下图是一个层次数据库模型,系编号、系名、办公地点是系的字段。 下图是一个层次数据库模型的一个具体的值,D02、计算机、信息楼是系具体的内容。
4)层次模型的数据操纵与完整性约束
(1)层次模型的数据操纵
(2)层次模型完整性约束
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
5)层次模型的优缺点
优点: 层次模型的数据结构比较简单清晰 查询效率高,性能优于关系模型,不低于网状模型 层次数据模型提供了良好的完整性支持缺点: 层次模型直接处理一对多 联系,多对多 联系可以表示,但表示不自然,比如引入虚拟结点 对插入和删除操作的限制多,应用程序的编写比较复杂 查询子女结点必须通过双亲结点 层次数据库命令趋于程序化,相当于在编程,较为复杂
1.2.6 网状模型
1)表示方法(与层次模型相同)
- 实体型:用记录类型描述
每个结点表示一个记录类型(实体) - 属性:用字段描述
每个记录类型可包含若干个字段 - 联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系
2)网状模型定义
- 允许一个以上的结点无双亲;
- 一个结点可以有多于一个的双亲。
3)网状模型的数据结构
类似于数据结构中的有向图 。 双亲结点可以指向子结点,但子结点不能指向双亲结点。
(1)特点
- 允许多个结点没有双亲结点,如上图(a)中R1与R2,层次模型中只规定一个结点(根结点)没有双亲
- 允许结点有多个双亲结点,如上图(a)
- 允许两个结点之间有多种联系,例如上图(b)中的L1与L2
- 要为每个联系命名并指出与该联系有关的双亲记录和子女记录
4)多对多在网状模型中的表示
例如,学生与课程的联系是多对多关系,一个学生可以选择多门课程,一门课程可以被多个学生选修 引进一个学生选课的联结记录 引入联结记录之后,学生与课程的联系是多对多联系分解为:一个学生可以选择多门课(S-SC,一对多),一个课程也可以被多个学生选择(C-SC,一对多)
5)网状模型的数据操纵与完整性约束
- 导航式的查询语言和增删改操作语言,也就是趋于过程化的。
- 完整性约束条件不严格
- 允许插入尚未确定双亲结点值的子女结点值
- 允许只删除双亲结点值
- 实际的网状数据库系统提供了一定的完整性约束
例:“属籍类别”的概念 选课 是子女结点,学生 是其双亲结点之一,学生 与选课 之间通过学号建立联系。 要求实际数据库模型的值中选课 中的学号数据必须是学生 中存在的学号数据,这便提供了一定的完整性约束
6)网状模型的优缺点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲;
- 具有良好的性能,存取效率较高;
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;
- DDL、DML语言复杂,用户不容易使用;
1.2.7 关系模型
- 关系数据库系统采用关系模型作为数据的组织方式
- 数据库厂商推出的数据库管理系统
几乎都支持关系模型 - 在用户观点下,关系模型中数据的逻辑结构是一张二维表
1)数据结构
-
关系(Relation) 一个关系对应通常说的一张表 -
元组(Tuple) 表中的一行即为一个元组 -
属性(Attribute) 表中的一列即为一个属性,给每一个属性起一个名称即属性名 -
主码(Key) 表中的某个属性组,它可以唯一确定一个元组 -
域(Domain) 属性的取值范围。例:学生年龄属性的域(15~45岁) -
分量 元组中的一个属性值 -
关系模式 对关系的描述,相当于表格中的表头 关系名(属性1,属性2,…,属性n) 例如,对学生的描述,学生(学号,姓名,年龄,性别,系,年级)
关系必须是规范化 的,满足一定规范条件:
- 最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
上述工资表 实例便是表中有表的实例。 在一个工资表大表中,又有工资 (表名->工资,属性名->基本工资、岗位津贴、业绩津贴)、扣除 小表,不符合关系模型的规范条件。
(1)关系术语与一般表格术语对比
2)关系数据模型的操纵与完整性约束
(1)关系数据模型的操纵
- 数据操作是集合操作,
操作对象和操作结果都是关系
- 存取路径对用户隐蔽,也就是说用户可以不知道
“怎么找”,“在哪里找” ,用户只要指出“找什么” 。提高了数据的独立性,提高了用户生产率
(2)关系的完整性约束
3)关系模型的优缺点
(1)优点
- 建立在严格的数学概念的基础上,这个数学概念就是关系;
- 概念单一:
- 实体和各类联系都用关系来表示;
- 对数据的检索结果也是关系;
- 关系模型的存取路径对用户透明,用户不用关系存储路径与具体存储方法
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作;
(2)缺点
- 存取路径对用户透明导致查询效率往往不如非关系数据模型;
- 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度;
|