数据模型
重要考点
数据模型的定义
数据模型是对现实世界中的概念进行抽象、表示和处理的工具。
数据模型是数据库系统的核心和基础。
数据模型应该满足三方面的基本要求:
- 能比较真实的模拟现实世界。
- 容易为人所理解
- 便于在计算机上实现。
三类数据模型
- 概念模型
又称信息模型。
是按用户的观点来对数据和信息进行建模,通常用E-R图(实体联系模型)进行描述,用于数据库设计。
概念模型是现实世界到信息世界的第一层抽象。
- 逻辑模型
是以计算机系统的观点对数据进行建模,用于数据库管理系统DBMS的实现。
主要包括网状模型(Network Model)、层次模型(Hierarchical Model)、关系模型(Relational Model)、面向对象模型(Object oriented Model)。
- 物理模型(了解)
是对数据库底层的抽象,描述数据在系统内部的表示方式和存取方式。
概念模型和逻辑模型都由数据库设计人员完成,与具体的计算机无关。
从逻辑模型到物理模型由DBMS完成,与具体计算机有关。
数据模型三要素
- 数据结构:描述数据库的组成对象、以及对象之间的联系,是数据库的静态特征。
- 数据操作:如查询、插入、删除、更新,是数据库的动态特征。
- 完整性约束条件:即实体完整性、参照完整性、用户自定义完整性。
概念模型(核心是E-R模型)
概念模型由很多种表示方法,其中最常用的是1976年由P.P.S.Chen 提出的实体-联系模型(Entity-Relationship Model),即 E-R模型。
注意:
E-R模型只能说明实体见的语义联系,还不能进一步底详细说明数据结构。
在实际中,通常应该先设计一个R-R模型,再将其转换成计算机能接受的数据模型。
R-R图中的主要构件
E-R图的主要构建如下:

在E-R图中,实体集中作为主码(或主键)的一部分属性下面加下划线标明。
另外,在实体集与联系集的线段上标准联系的类型。
实体集有时简称实体
联系集有时简称联系
实体
实体用矩形表示,矩形框内写实体名。
例如,企业中的每个职工可以是一个实体。
每个实体有一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号。
实体集是具体相同属性的实体集合。例如,企业中的所有职工具有相同的属性,因此职工的集合可以定义为一个实体集。
联系
联系用菱形表示,在菱形框内写联系名。
可以使用无向边将联系与有关实体连接起来,同时在无向边旁标注上联系的类型,如(1:1、1:* 或 *:*)表示1对1、1对多或多对多的联系类型。
- 两个不同实体之间的联系
即
一对一联系,记为 1:1
一对多联系,记为 1: * (或 1:n)
多对多联系,记为 *: * ( 或 m: n)

- 两个以上不同实体之间的联系

两个以上不同实体集直接存在1:1:1、1:1:* 、1:*:* 和 *: * : * 的联系。
例如,上图a中供应商Supp、项目Proj、和零件Part 的多对多对多的联系。
表示,每个供应商为多个项目供应多种零件;每个项目可用多个供应商提供的零件;每种零件可以由不同的供应商供应。
- 同一实体集内的二元联系
同一实体集的内部各实体之间也存在1:1、1:* 或 *:*的联系。
例如,职工实体集中领导与职工是 1:*, 但是职工实体集中婚姻关系是1:1。

属性
属性是实体某些方面的特征。
例如,职工实体集具有职工号、姓名、年龄等属性。
E-R模型中的属性有如下分类:
- 简单属性和复合属性。
简单属性是原子的、不可再分的;
复合属性可以细分为更小的部分,即划分为别的属性。例如职工通信地址,可以进一步划分为省、市、区和街道等
- 单值属性和多值属性。
通常,一个职工,只对应一个职工号、职工姓名,这属于单值属性。
特定情况下,一个属性可能对应一组值,例如,职工可能有0个、1个或多个亲属,那职工亲属的姓名可能有多个数目,称为多值属性。
- NULL属性。
当实体在某个属性上没有值或属性值未知时,使用NULL值。
- 派生属性。
派生属性可以从其他属性计算得来。
例如,职工的工作年限的值可以由参加工作时间得到,这里工作年限即是派生属性。
提示:
在设计关系模式时,派生属性不会作为关系中的属性进行存储。
E-R模型的扩展
- 弱实体
若一个实体的存在必须以另外一个实体为前提,则将这类实体称为弱实体。
例如,企业职工与家属的联系,家属总数依赖某个职工的,如果职工离职,将其从职工关系中删除,家属也随即删除,那么家属属于弱实体。
弱实体使用双线矩形框表示。如下图:

- 特殊化
通常,实体集是具有相同属性的实体集合。
但是在现实世界中,某些实体一方面具体一些共性,另一方面还有各自的特殊性,这样,一个实体集可以按照某些特征区分为几个子实体。
E-R模型应用举例
👍 重点,教材 P239页
考前复习:学校教学管理系统E-R模型的设计。
关系模型
关系模型是目前最常用的数据模型之一。
关系数据库采用关系模型作为数据库的组织方式。
在关系模型中,使用表格结构表达实体集以及实体集之间的联系,其特点是描述的一致性。
🌹 关系模型,是有若干个关系模式组成的集合。
一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。
关系是一个实例,也是一张表,对应程序设计语言中变量的概念。
给定变量的值随着时间可能发送变化,类似地,当关系更新时,关系实例的内容也随时间发生了变化。
例如:

关系模式中,有下划线的属性是主码属性。
⚡ 关系模型的实例如下:

层次模型
采用树状结构表示数据与数据间的联系。
层次模型及实例如下:


注意:
层次模型不能直接表示多对多的联系。
若需要表示,可以采用冗余节点或虚拟节点分解法。
网状模型
网状模型是层状模型的一个特例。
允许一个以上的节点无双亲,一个节点可以有多于一个的双亲。
网状模型也不能表示记录之间的多对多的联系,但是可以通过引入联结记录表示多对多。

面向对象模型
面向对象数据模型的核心概念如下:
- 对象和对象标识(OID)
对象是现实世界中实体的模型化,每个对象都有一个唯一的标识。
- 封装(encapsulate)
每一个对象是状态和行为的封装。
- 对象的属性
对象的属性描述对象的状态、组成和特征。
- 类和层次
所有具有相同属性和方法集的对象构成了一个对象类。
任何一个对象都是某个对象类的一个实例(instance)。