数据模型
什么是数据模型
数据模型是现实世界数据特征的抽象,用于描述一组数据的概念和定义。数据模型是数据库中数据的存储方式,是数据库系统的基础。在数据库中,数据的物理结构又称数据的存储结构,就是数据元素在计算机存储器中的表示及其配置;数据的逻辑结构则是指数据元素之间的逻辑关系,它是数据在用户或程序员面前的表现形式,数据的存储结构不一定与逻辑结构一致。
数据模型的主要包括[1]
数据模型的研究包括以下三个方面:
- 1.概念数据模型
这是面向数据库用户的现实世界的数据模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及数据库管理系统的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据库管理系统无关。概念数据模型必须换成逻辑数据模型,才能在数据库管理系统中实现。
- 2.逻辑数据模型
这是用户在数据库中看到的数据模型,是具体的数据库管理系统所支持的数据模型,主要有网状数据模型、层次数据模型和关系数据模型三种类型。此模型既要面向用户,又要面向系统,主要用于数据库管理系统的实现。在数据库中用数据模型来抽象、表示和处理现实世界中的数据和信息,主要是研究数据的逻辑结构。
- 3.物理数据模型
这是描述数据在存储介质上的组织结构的数据模型,它不但与具体的数据库管理系统有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有与其相对应的物理数据模型。数据库管理系统为了保证其独立性与可移植性,将大部分物理数据模型的实现工作交由系统自动完成,而设计者只设计索引、聚集等特殊结构。
数据模型基本概念[2]
- 1.三个世界的划分
数据的加工是一个逐步转化的过程,经历了现实世界、信息世界和计算机世界这3个不同的世界,经历了两级抽象和转换,如图所示。
- (1)现实世界
现实世界是指客观存在的事物及其相互间的联系。现实世界中的事物有着众多的特征和千丝万缕的联系,但人们只选择感兴趣的一部分来描述,如学生,人们通常用学号、姓名、班级、成绩等特征来描述和区分,而对身高、体重、长相不太关心;而如果对象是演员,则可能正好截然相反。事物可以是具体的、可见的实物,也可以是抽象的事物。
- (2)信息世界
信息世界是人们把现实世界的信息和联系,通过“符号”记录下来,然后用规范化的数据库定义语言来定义描述而构成的一个抽象世界。信息世界实际上是对现实世界的一种抽象描述。在信息世界中,不是简单地对现实世界进行符号化,而是要通过筛选、归纳、总结、命名等抽象过程产生出概念模型,用以表示对现实世界的抽象与描述。
- (3)计算机世界
计算机世界是将信息世界的内容数据化后的产物。将信息世界中的概念模型,进一步的转换成数据模型,形成便于计算机处理的数据表现形式。
- 2.数据模型的三要素
数据模型所描述的内容有3个部分,分别是数据结构、数据操作和数据约束。
- (1)数据结构
数据结构用于描述系统的静态特征,包括数据的类型、内容、性质及数据之间的联系等。它是数据模型的基础,也是刻画一个数据模型性质最重要的方面。在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如,层次模型和关系模型的数据结构就分别是层次结构和关系结构。
- (2)数据操作
数据操作用于描述系统的动态特征,包括数据的插入、修改、删除和查询等。数据模型必须定义这些操作的确切含义、操作符号、操作规则及实现操作的语言。
- (3)数据约束
数据的约束条件实际上是一组完整性规则的集合。完整性规则是指给定数据模型中的数据及其联系所具有的制约和存储规则,用以限定符合数据模型的数据库及其状态的变化,以保证数据的正确性、有效性和相容性。例如,限制一个表中学号不能重复,或者年龄的取值不能为负,都属于完整性规则。
数据模型的分类[3]
数据库的类型是根据数据模型来划分的,而任何一个DBMS也是根据数据模型有针对性地设计出来的,这就意味着必须把数据库组织成符合DBMS规定的数据模型。目前成熟地应用在数据库系统中的数据模型有:层次模型、网状模型和关系模型。它们之间的根本区别在于数据之间联系的表示方式不同(即记录型之间的联系方式不同)。层次模型以“树结构”表示数据之间的联系。网状模型是以“图结构”来表示数据之间的联系。关系模型是用“二维表”(或称为关系)来表示数据之间的联系的。
- 1.层次模型(Hierchical)
层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。根结点在最上端,层次最高,子结点在下,逐层排列。层次模型的特征是:
- 有且仅有一个结点没有父结点,它就是根结点;
- 其他结点有且仅有一个父结点。图所示为一个系教务管理层次数据模型,图(a)所示的是实体之间的联系,图(b)所示的是实体型之间的联系。
最有影响的层次模型的DBS是20世纪60年代末,IBM公司推出的IMS层次模型数据库系统。
- 2.网状模型(Network)
网状模型以网状结构表示实体与实体之间的联系。网中的每一个结点代表一个记录类型,联系用链接指针来实现。网状模型可以表示多个从属关系的联系,也可以表示数据间的交叉关系,即数据间的横向关系与纵向关系,它是层次模型的扩展。网状模型可以方便地表示各种类型的联系,但结构复杂,实现的算法难以规范化。其特征是:
- 允许结点有多于一个父结点;
- 可以有一个以上的结点没有父结点。
下图所示为一个系教务管理网状数据模型。
- 3.关系模型(Relation)
关系模型以二维表结构来表示实体与实体之间的联系,它是以关系数学理论为基础的。关系模型的数据结构是一个“二维表框架”组成的集合。每个二维表又可称为关系。在关系模型中,操作的对象和结果都是二维表。关系模型是目前最流行的数据库模型。支持关系模型的数据库管理系统称为关系数据库管理系统,Access就是一种关系数据库管理系统。图所示为一个简单的关系模型,其中图(a)所示为关系模式,图(b)所示为这两个关系模型的关系,关系名称分别为教师关系和课程关系,每个关系均含3个元组,其主码均为“教师编号”。
- 描述的一致性,不仅用关系描述实体本身,而且也用关系描述实体之间的联系;
- 可直接表示多对多的联系;
- 关系必须是规范化的关系,即每个属性是不可分的数据项,不许表中有表;
- 关系模型是建立在数学概念基础上的,有较强的理论依据。
在关系模型中基本数据结构就是二维表,不用像层次或网状那样的链接指针。记录之间的联系是通过不同关系中同名属性来体现的。例如,要查找“刘晋”老师所上的课程,可以先在教师关系中根据姓名找到教师编号“1984030”,然后在课程关系中找到“1984030”任课教师编号对应的课程名即可。通过上述查询过程,同名属性教师编号起到了连接两个关系的纽带作用。由此可见,关系模型中的各个关系模式不应当是孤立的,也不是随意拼凑的一堆二维表,它必须满足相应的要求。
关系是一个二维表,即元组的集合。关系框架是一个关系的属性名表。形式化表示为:
其中,R为关系名,Ai(i=1,2,…,n)为关系的属性名。
关系之间通过公共属性实现联系。例如,图所示为两个关系,通过“教师编号”公共属性实现两个关系之间的联系。
关系数据库是指对应于一个关系模型的所有关系的集合。例如,在一个教务管理关系数据库中,包含教师关系、课程关系、学生关系、任课关系、成绩关系等。