数据模型

重要考点

数据模型的定义

数据模型是对现实世界中的概念进行抽象、表示和处理的工具。

数据模型是数据库系统的核心和基础

数据模型应该满足三方面的基本要求:

  • 能比较真实的模拟现实世界。
  • 容易为人所理解
  • 便于在计算机上实现。

三类数据模型

  • 概念模型

又称信息模型。

是按用户的观点来对数据和信息进行建模,通常用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图的主要构建如下:

image-20220403105603244

在E-R图中,实体集中作为主码(或主键)的一部分属性下面加下划线标明

另外,在实体集与联系集的线段上标准联系的类型

实体集有时简称实体

联系集有时简称联系

实体

实体用矩形表示,矩形框内写实体名。

例如,企业中的每个职工可以是一个实体。

每个实体有一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号

实体集是具体相同属性的实体集合。例如,企业中的所有职工具有相同的属性,因此职工的集合可以定义为一个实体集

联系

联系用菱形表示,在菱形框内写联系名。

可以使用无向边将联系与有关实体连接起来,同时在无向边旁标注上联系的类型,如(1:1、1:* 或 *:*)表示1对1、1对多或多对多的联系类型

  • 两个不同实体之间的联系

一对一联系,记为 1:1

一对多联系,记为 1: * (或 1:n)

多对多联系,记为 *: * ( 或 m: n)

image-20220403113034136
  • 两个以上不同实体之间的联系
image-20220403113237783

两个以上不同实体集直接存在1:1:1、1:1:* 、1:*:* 和 *: * : * 的联系。

例如,上图a中供应商Supp、项目Proj、和零件Part 的多对多对多的联系。

表示,每个供应商为多个项目供应多种零件;每个项目可用多个供应商提供的零件;每种零件可以由不同的供应商供应。

  • 同一实体集内的二元联系

同一实体集的内部各实体之间也存在1:1、1:* 或 *:*的联系。

例如,职工实体集中领导与职工是 1:*, 但是职工实体集中婚姻关系是1:1

image-20220403114752013

属性

属性是实体某些方面的特征。

例如,职工实体集具有职工号、姓名、年龄等属性。

E-R模型中的属性有如下分类:

  • 简单属性和复合属性。

简单属性是原子的、不可再分的;

复合属性可以细分为更小的部分,即划分为别的属性。例如职工通信地址,可以进一步划分为省、市、区和街道等

  • 单值属性和多值属性。

通常,一个职工,只对应一个职工号、职工姓名,这属于单值属性。

特定情况下,一个属性可能对应一组值,例如,职工可能有0个、1个或多个亲属,那职工亲属的姓名可能有多个数目,称为多值属性。

  • NULL属性。

当实体在某个属性上没有值或属性值未知时,使用NULL值。

  • 派生属性。

派生属性可以从其他属性计算得来。

例如,职工的工作年限的值可以由参加工作时间得到,这里工作年限即是派生属性。

提示:

在设计关系模式时,派生属性不会作为关系中的属性进行存储。

E-R模型的扩展

  • 弱实体

若一个实体的存在必须以另外一个实体为前提,则将这类实体称为弱实体

例如,企业职工与家属的联系,家属总数依赖某个职工的,如果职工离职,将其从职工关系中删除,家属也随即删除,那么家属属于弱实体

弱实体使用双线矩形框表示。如下图:

image-20220403160509708
  • 特殊化

通常,实体集是具有相同属性的实体集合。

但是在现实世界中,某些实体一方面具体一些共性,另一方面还有各自的特殊性,这样,一个实体集可以按照某些特征区分为几个子实体。

E-R模型应用举例

👍 重点,教材 P239

考前复习:学校教学管理系统E-R模型的设计。

关系模型

关系模型是目前最常用的数据模型之一。

关系数据库采用关系模型作为数据库的组织方式。

在关系模型中,使用表格结构表达实体集以及实体集之间的联系,其特点是描述的一致性

🌹 关系模型,是有若干个关系模式组成的集合

一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。

关系是一个实例,也是一张表,对应程序设计语言中变量的概念

给定变量的值随着时间可能发送变化,类似地,当关系更新时,关系实例的内容也随时间发生了变化。

例如:

image-20220403171317759

关系模式中,有下划线的属性是主码属性

⚡ 关系模型的实例如下:

image-20220403171707836

层次模型

采用树状结构表示数据与数据间的联系。

层次模型及实例如下:

image-20220403163435525 image-20220403163515423

注意:

层次模型不能直接表示多对多的联系。

若需要表示,可以采用冗余节点或虚拟节点分解法。

网状模型

网状模型是层状模型的一个特例。

允许一个以上的节点无双亲,一个节点可以有多于一个的双亲。

网状模型也不能表示记录之间的多对多的联系,但是可以通过引入联结记录表示多对多

image-20220403164727216

面向对象模型

面向对象数据模型的核心概念如下:

  • 对象和对象标识(OID)

对象是现实世界中实体的模型化,每个对象都有一个唯一的标识。

  • 封装(encapsulate)

每一个对象是状态和行为的封装。

  • 对象的属性

对象的属性描述对象的状态、组成和特征。

  • 类和层次

所有具有相同属性和方法集的对象构成了一个对象类。

任何一个对象都是某个对象类的一个实例(instance)