目录
2.1 数据模型的基本概念
直观解释:数据是对现实世界的符号抽象;数据模型则是对数据的特征的抽象。
更加严格的定义:描述数据的结构,定义在该数据结构上可以执行的操作以及数据之间必须满足的约束条件。
-
数据模型的组成:数据结构、数据操作、数据约束。
-
数据结构:描述数据的类型、内容、性质以及数据间的联系。数据结构是划分不同数据模型的依据。
-
数据操作:在相应数据结构上可以执行的操作类型与操作方式。
-
数据约束:主要描述数据结构内数据间的相互关系,包括:数据间的语法/语义联系,数据间的制约与依存关系,数据间的动态变化规则。其目的是确保数据的正确、有效与相容。
-
数据模型在不同抽象层次上的划分:三种数据模型
将现实世界的数据和其复杂关系最终反映到数据库中需要有一个逐步转化的过程。基于转化和抽象化的程度,又可分为:概念数据模型、逻辑数据模型、物理数据模型
-
概念数据模型侧重于对客观世界中复杂事物的结构描述及它们之间的内在联系的刻画,不涉及具体的描述细节和物理实现因素。
-
常见的几种~模型:E-R模型,EE-R模型,面向对象模型,谓词模型
-
-
逻辑数据模型:是一种面向数据库系统的模型,利用具体的DBMS所提供的工具(DDL)来定义的数据模型。
-
常见的~模型有:层次模型、网状模型;关系模型、面向对象模型、谓词模型;对象关系模型
-
逻辑数据模型需要描述客观事物及其相互关系在选定的DBMS中的实现结构。客观事物的实现结构有:
-
关系数据库:包括属性的名称、数据类型、取值约束等
-
面向对象数据库:类,类的属性,方法的定义
-
-
相互关系的实现结构有:
-
关系数据库:表及其外键
-
面向对象数据库:类的继承和合成关系
-
-
-
物理数据模型:是面向计算机物理实现的模型。
-
进行的定义有:索引(index)的定义,集簇(cluster)的定义,存储区域的选择(如表空间)等。
-
三种”数据模型“和”三级模式“之间的关系
是不同的‘模型’与‘模式’的分层方法。具体见图:
2.2 数据模型的四个世界
现实世界
在客观世界中根据用户的需求目标而划定边界的一个应用环境。
-
用户的需求包括数据需求和处理需求,这些确定了数据库应支持的应用功能和应用范围。
概念世界
数据库设计人员经过对用户需求的分析,形成一些基本概念与基本关系。这些基本概念与基本关系可以用我们所选择的某一种概念数据模型中所提供的术语和方法来统一表示。
概念世界中的基本术语:
-
E-R模型:实体,属性,联系
-
OO模型:对象,类,方法,继承
概念世界与具体的DBMS和计算机无关。
信息世界
以概念世界为基础,选择特定的DBMS构造的逻辑数据模型。
侧重于概念数据模型的细化和在数据库系统一级的实现,即利用特定的DBMS所提供的工具来定义逻辑数据模型。
与具体的DBMS有关。
计算机世界
基于逻辑数据模型在计算机中的物理实现而形成的物理数据模型,侧重于数据库物理存储结构的描述。
-
包括存储结构的设计,存取路径的设计,存储空间的分配。
2.3 概念世界与概念模型
常用的4种概念模型:
1. 实体-联系(E-R)模型
-
E-R模型中的基本概念:实体、属性、联系、以及它们之间的连接关系。
-
实体:客观存在且又能相互区别的事物。
-
实体集是由具有共性的实体所构成的集合。
-
-
属性:实体具有的某种特性或特征。属性可以有值,一个属性可以取的值的集合称为属性的值域。
-
一个实体可以有多个属性,具有共性的实体指含有相同的属性组成的实体。
-
-
联系:一个实体集中的实体与另一个实体集中的实体之间的对应关系。
-
联系的种类:(按照与联系相关的实体集的个数划分)
-
二元联系:两个实体集间的联系。
-
例子:隶属关系:教师-教学学科;学习关系:学生-课程;借阅关系:学生-图书
-
-
多元联系:多个实体集间的联系
-
例子:供应关系:工厂-产品-用户
-
-
单个实体集内部的联系
-
例子:围棋比赛中的黑方-白方,都是“运动员”实体集中的实体
-
-
-
联系的函数对应关系:一一对应,一多对应/多一对应,多多对应
-
联系可以具有属性。
-
如学习关系,学生-课程-成绩
-
-
在三(多)元联系中,可以采用多个二元联系来实现,用户只需要使用他们之间的两两联系,且不会产生二义性(歧义性)。
-
(重点)E-R模型的图示法:E-R图
-
使用矩形表示实体集,使用椭圆形表示属性,菱形表示联系。
-
实体集/联系和它们具有的属性用线连接。
2. 扩充E-R模型(EE-R模型)
E-R模型在表示概念世界中使用普遍,但在表示能力上尚有欠缺。很多人对E-R模型进行了扩充,其中较为公认的是IS-A联系。
-
IS-A联系:若实体集B是实体集A的一个自己,且具有比实体集A更多的属性,则称A和B之间存在一种‘IS-A联系’。
-
实体集A被称为实体集B的‘超集’,B被称为A的‘子集’。
-
-
在图示上,只需要扩充实体集的表示形式即可。如图:
-
弱实体联系:如果一个实体A的存在需要依赖于其他实体集中的某个实体的存在,那么实体A被称为弱实体。
-
在表示方式上,使用弱实体指向联系的有向箭头。
3. 面向对象模型(OO模型)
-
基本内容:对象(包括对象标识符,对象的组成,对象的特点),类(IS-A,IS-PART-OF),消息。
-
对象:由对象标识符、对象的静态特性,对象的动态特性构成。
-
对象标识符:即OID,用于区分每个对象的名字
-
静态属性:反映对象状态和特性的属性
-
动态属性:可以施加在对象上的方法。(方法又被称作操作)
-
相当于E-R模型中的‘实体’,但又存在着很大的区别。在E-R模型中,是通过一个或一组属性上的取值来区分不同的实体的。而在OO模型中,每个对象都有一个系统定义的对象标识符,可以且只能通过对象标识符来区分不同的对象
-
-
方法:可以作用在对象上的一段程序。
-
是对象的固有动态行为的表示,可以用于查看和改变对象的内部属性值
-
-
例子:“学生”对象
-
属性:学号、姓名、年级、学分等
-
方法:修改学生的年级值,使其年级+1;统计一个学生的总学分数;统计一个学生的平均学分绩等
-
-
类:具有相同属性、方法的对象集合。
-
类的继承关系:指一个类的定义和实现建立在其它类的基础上。继承类被称为“子类”,被继承类称为“超类”;又分为单继承(子类只有唯一的直接超类)和多继承(子类有多个直接超类)
-
-
消息:是对象间的一种协作机制。一个对象通过向另一个对象发送消息来调用另一个对象中的方法
-
面向对象模型和C++中面向对象的区别:
-
C++中没有OID的概念;
-
C++主要讨论管理对象,而OODB(面向对象模型数据库)主要讨论管理类;
-
OODB中的类和对象都是持久性的,C++中则是临时性的。
简单来说就是面向对象模型的数据库更强调持久化吧。
4. 谓词模型(这段ppt写得很模糊)
这是一种使用数理逻辑中的一阶谓词演算公式来表示数据模型的模型。
-
谓词:一种由一个谓词标识符号P和若干个变元(个体变量)x1, x2, ..., xn所组成的符号。如:。相当于一个含有若干个变元的逻辑表达式。
-
基本内容:实体集、属性、联系、操作、完整性约束。
-
实体集:假设一个实体集R有n个属性A1, A2, …An,那么我们可以用一个含有n个变元的谓词(前面一点有定义)来表示该实体集。实体集R中的元组使为真,而非实体集R的元组则使为假。
-
属性:即谓词中的各变元。
-
联系:可以用谓词表示联系,只要把谓词中的变元变成联系中的实体以及联系本身具有的属性。
-
例如:‘学生’s和‘课程’c之间的‘选课’关系。该关系具有属性‘成绩’g。则可表示为:
-
-
-
操作:可以用谓词表示模型上的操作。
-
完整性约束:可以用谓词或谓词公式来表示属性间的完整性约束条件。
2.4 信息世界与逻辑模型
-
NOSQL:Not only SQL, 泛指非关系型数据库。常见的非关系型~有:键值存储数据库,列存储数据库,文档型数据库,图数据库。
-
NewSQL:是对各种新的可扩展/高性能数据库的简称。
-
概念模型与逻辑模型对应关系表:
2.5 计算机世界与物理模型
物理模型是面向计算机的模型。主要设计操作系统级文件组织,有时还涉及硬件级数据组织。
-
文件系统的组成:项、记录、文件、文件集。
-
项:文件系统中最小基本单位
-
记录:由若干项组成,记录内的各项间有内在语义联系
-
文件:记录的集合
-
文件集:由若干文件构成
-
-
提高文件读写效率的方法:索引、Hash、集簇(cluster)。
-
所以:将文件中的记录与其物理地址(即磁盘块)间建立一张对应关系表以便于快速查找。索引本身一般也是一个文件。当索引记录数很大时,就需要二级索引甚至多级索引。
-
Hash法:就是使用Hash表定位
-
集簇:在记录查找中往往需要按某项的项值查找,将具有相同或相邻项值的记录聚集在相同磁盘块内或圆柱体内以减少读盘次数,提高查找速度,这被称为集簇。
-