270.数据模型

久未见 提交于 2019-11-29 08:29:09

1.数据模型三种类型

 

Ø 逻辑模型是对客观事物及其联系的数据描述,包括网状模型、层次模型、关系模型和面向对象模型等,它是从计算机系统观方面来进行建模,主要用于DBMS的实现

Ø 概念模型又称信息模型,是从用户观方面来对数据和信息进行建模的结果,主要用于数据库的设计

Ø 物理模型是对数据最底层的抽象,用于描述数据在计算机系统内部的表示方式和存取方法,其实现由DBMS完成。

  数据模型的两大主要功能是用于描述数据及其关联。它包含三个基本要素,即数据结构、数据操作和数据的约束条件。

 

2.数据模型的基本要素

2.1数据结构

定义:用于描述数据的静态特性,它是所研究对象类型的集合。

分类:

Ø 数据描述对象

•      定义:用于描述数据的性质、内容和类型等相关的对象

•      指出对象所包含的项,并对项进行命名,指出项的数据类型和取值范围等。

Ø 数据关系描述对象

•      定义:是用于描述数据间关系信息的对象

•      指明各种不同对象类型之间的关系及关系的性质,并对这些关系进行命名。


 

2.2数据操作

定义:用于对数据动态特性的描述,它是对数据库中各种对象类型的实例允许执行的所有操作及相关操作规则的集合。

分类:

Ø 查询

Ø 更新

•      更新操作又包括插入、删除和修改。

  在数据模型中,要明确定义操作的各项属性,如操作符、操作规则以及实现操作的语言等。

 

2.3数据的约束条件

   数据的约束条件是一组完整性规则的集合。完整性规则是指既定的数据模型中数据及其关系所具有的制约性规则和依存性规则。这些规则是通过限定符合数据模型的数据库状态及其变化的方法来保证数据的正确性、有效性和相容性。

 

2.4三个要素的作用

  数据结构是基础,它确定着数据模型的性质。

  数据操作是关键,它确定着数据模型的动态特性。

  约束条件主要起辅助作用。

 

 

 

3. 四种主要的逻辑模型

3.1层次模型

  以树状层次结构组织数据,它的数据结构是根树

  特点:

Ø有且仅有一个节点没有父节点,这个节点就是根树的根节点。

Ø除了根节点外,其他节点有且仅有一个父节点,但可能由0个或者多个子节点。

 

  在层次模型中,具有相同父节点的子节点称为兄弟节点,没有子节点的节点称为叶节点。

  在根树的层次结构中,每个节点代表一个实体型。但由于层次模型中的实体型是用记录型来表示,所以根树中的每个节点实际上是代表着一个记录型。由于每个记录型节点有且仅有一个父节点(根节点除外),所以只要每个节点指出它的父节点,就可以表示出层次模型的数据结构。如果要访问某一个记录型节点,则可以运用相关的根树遍历方法从根节点开始查找该节点,然后对其访问。

 【例子】 一个学校包含多个学院,一个学院又包含多个系和研究所等。这样,学校、学院、系和研究所等实体非常自然地构成了现实世界中的层次关系。层次模型正是为了满足描述这种层次关系的需要而产生的。所以,它的表达方式自然、直观,但是其缺点也是明显。

 下图所示为某学校按层次模型组织的数据示例。

某学校按层次模型组织的数据示例

 

 

层次模型缺点:

•        处理效率低

Ø  这是因为层次模型的数据结构是一种根树结构,对任何节点的访问都必须从根节点开始。这使得对底层节点的访问效率变低,并且难以进行反向查询。

•        不易进行更新操作

Ø  更新操作包括插入、修改和删除等操作。对某一个树节点进行这种更新操作时,都有可能导致整棵根树大面积的变动。对大数据集来说,这可是一个沉重。

•        安全性不好

Ø  这主要体现在,当删除一个节点时,则它的子节点和孙子节点都将被删除。所以,必须慎用删除操作。

•        数据独立性较差

Ø  当用层次命令操作数据的时候,它要求用户了解数据的物理结构,并需要显式地说明存取途径。

 

 

3.2网状模型

  网状模型:每一个数据用一个节点表示,每个节点与其他节点都有联系,这样,数据库中的所有数据节点就构成了一个复杂的网络。图1.3所示为按网状模型组织的数据示例。

图1.3 按网状模型组织的数据示例

 

  网状模型的数据结构是网状结构。网状模型反映着现实世界中实体间更为复杂的联系。由以下特点可以看出,节点间没有明确的从属关系,一个节点可以与其它多个节点有联系。

  特点

Ø 允许存在一个以上的节点没有父节点。

Ø 节点可以有多余一个的父节点。

  缺点:

Ø 由于在使用网状模型时,用户必须熟悉数据的逻辑结构,所以结构的复杂性增加了用户查询和定位的难度。

Ø 不支持对于层次结构的表达等。

Ø  与层次模型类似,网状结构中的每个节点代表一个实体型,而这种实体型是用记录型来表示。与层次结构不同的是:在层次结构中有且仅有一个根节点,而在网状结构中则允许同时存在多个“根节点”;在层次结构中每个节点有且仅有一个父节点(根节点除外),而在网状结构中则允许一个节点同时有多个“父节点”。

Ø  这种结构上的差异,也导致了节点对应的记录型结构的变化。网状模型中节点间联系的实现必须由节点同时指出其父节点和子节点的方法来完成。而在层次模型中,每个节点只需指定其父节点即可(根节点除外)。也正是由于这种差异的存在,使得网状模型在性质和功能上发生了重要的改变。这主要体现在:网状模型比层次模型具有更大的灵活性和更强的数据建模能力。

 

【例子】 图1.8表示了学生A、B和课程C、D、E之间的一种选修联系的网状结构图。

 

  对于小数据量而言,层次模型和网状模型的缺点可能不太明显,但是当作用于大数据量时,其缺点就显得非常突出。所以,这两种模型不适合用于当今以处理海量数据为特征的数据处理任务中。目前,它们基本上退出了市场,取而代之的是关系模型。

 

 

3.3关系模型

3.3.1定义

  关系模型:以二维表格(关系表)的形式组织数据库中的数据

  关系模型是当今最为流行的一种数据模型。在关系模型中,实体间的联系是通过二维关系(简称关系)来定义,其数据结构就是二维关系。每个一种二维关系都可以用一张二维表来表示,表达直观、明了。所以,很多时候是把二维表和关系直接等同起来,简称为(二维)关系表。关系模型就是若干张关系表的集合。

 

  例如,在学生成绩管理系统所涉及的学生、课程和成绩三个表中。学生表涉及的主要信息有学号、姓名、性别、出生时间、专业、总学分、备注。课程表涉及的主要信息有课程号、课程名、开课学期、学时和学分。成绩表涉及的主要信息有学号、课程号和成绩。表1.1、表1.2和表1.3分别描述了学生成绩管理系统中学生、课程和成绩这三个表的部分数据。

表1.1 学生表

 

学生、课程、成绩,三个对象

表可能是实体可能是多对多关系

表1.2 课程表

表1.3 成绩表

 

例如,表1.1中的“学号”可唯一标识每一个学生,表1.2中的“课程号”可唯一标识每一门课。表1.3中的“学号”和“课程号”可唯一标识每一个学生一门课程的成绩。
有时,一个表可能有多个码,比如表1.1中,姓名不允许重名,则“学号”、“姓名”均是学生信息表码。对于每一个关系表,通常可指定一个码为“主码”,在关系模式中,一般用下划线标出主码。
设表1.1的名字为XSB,关系模式可分别表示为XSB(学号,姓名,性别,出生时间,专业,总学分,备注)。
设表1.2的名字为KCB,关系模式可分别表示为KCB(课程号,课程名,开课学期,学时,学分)。
设表1.3的名字为CJB,关系模式可分别表示为CJB(学号,课程号,成绩,学分)。

 

 

3.3.2关系模型的术语

Ø 关系:一张二维表。

Ø 记录(或元组):关系表中的一行。

Ø 字段(或属性):关系表中的一列。

Ø 域:即字段的值域,也就是字段的取值范围。

Ø 数据项(或分量):某一个记录中的一个字段值。

Ø 主关键字段(或主码):简称主键,是关系表中一个或者多个字段的集合,这些记录的值能够唯一标识每一个记录。

Ø 关系模式:是对关系的一种抽象的描述,其描述格式为“关系名(字段1,字段2,…,字段n)”,其中“字段1”带下划线,表示该字段是主关键字段。

 

3.3.3关系模型的特点

•     具有严密的数学基础。关系代数、关系演算等都可以用于对关系模型进行定性或者定量的分析,探讨关系的分开和合并及其有关性质等。

•     概念单一化、表达直观,但又具有较强的数据表达和建模能力。一般来说,一个关系只表达一个主题,如果有多个主题在一起,则需要将它们分开,用多个关系来表示,这就是概念的单一化。

•     关系都已经规范化。即关系要满足一定的规范条件,这使得关系模型表现出特有的一些性质。

Ø  例如,在一个关系中数据项是最基本的数据单位,它不能再进行分解;同一个字段的字段值具有相同的数据类型;各字段的顺序是任意,记录的顺序也是任意的,等等。

•     在关系模型中,对数据的操作是集合操作,即操作的对象是记录的集合,操作所产生的结果也是记录的集合。这种操作不具有明显的方向性,不管如何操作,其难度都一样。而在层次模型和网状模型中,对数据的操作带有明显的方向性,在正反两个方向上操作的难度完全不一样。

 

 

3.3.4关系模型的缺点

Ø  对复杂问题的建模能力差。在对复杂问题建模时一般都会呈现出错综复杂的关系,而关系模型仅限于用二维关系来表示这些复杂关系,无法用递归和嵌套的方式来描述(因为它不允许嵌套记录和嵌套关系的存在)。所以,在许多时候关系模型显得力不从心。

Ø  对象语义的表达能力比较差。现实世界中,对象之间的关系往往不仅限于量的关系,而且还可能体现语义之间的联系,蕴涵着特定的内涵。但关系模型为了规范化这些关系,可能会强行拆开这种语义联系,造成不自然的分解,从而使得在查询等操作时出现语义不合理的结果。

Ø  可扩充性差。关系模式只支持记录的集合这一种数据结构,并且数据项不可再分,无法形成嵌套记录和嵌套关系,所以它无法扩充成层次模型或网状模型。且它不支持抽象数据类型,不能对多种类型数据对象进行管理。

 

 

3.4面向对象模型

  面向对象方法(Object-Oriented Paradigm,简称OO)基本出发点就是按照人类认识世界的方法和思维方式来分析和解决问题。

  面向对象模型是由面向对象方法进行建模和表示而形成的数据模型。

  面向对象模型的相关理论和方法还不够成熟,主要是处于理论研究和实验阶段。

 

 

4.概念模型的描述

4.1概念模型

  从数据模型的建模方法来看,一般是先将现实世界中的问题建模为信息世界中的概念模型,然后将信息世界中的概念模型转化为机器世界中的逻辑模型。

  当确认概念模型已经能够充分表达原问题(现实世界中)的时候,再将这种概念模型转化为数据库系统中某一个既定DBMS支持的数据模型,形成机器世界中的逻辑模型。

  从现实世界到机器世界的转换过程可以用图1.9来表示。

 

 

4.2实体及其联系

1.概念

实体是客观存在的并可以相互区分的事物。

实体的属性是指实体所具有的特性。

Ø eg:学生是一个实体,如姓名、性别、成绩等是实体的属性。

又称关键字,它是一个或者多个属性的集合。

Ø eg:学号是学生实体的码。

属性的域是指一个属性的取值范围。

Ø eg:成绩是学生实体的域。

实体型是指用实体名和实体属性名的集合来共同刻画同一类实体。

Ø  eg:学生(学号,姓名,性别,籍贯,成绩)是一个实体型。

实体集就是实体的集合。

 

联系

Ø 定义

•         是指事物之间的关系(现实世界)在信息世界中的反映。

Ø 两种类型

•         实体内部的联系和实体之间的联系。

Ø 三种联系类型

假设A和B分别表示两个实体集

•         一对一联系记为(1:1)。

•         一对多联系记为(1:n)。

•         多对多联系记为(m:n)。

 

当将现实世界中的实际问题转化为信息世界中的概念模型时,用什么来描述这种概念模型呢?

当在数据库理论中,通常用E-R图来描述概念模型 ,它提供了表示实体型、属性和联系的方法。

 

4.3概念结构设计  

实体集中的实体彼此是可区别的。如果实体集中的属性或最小属性组合的值能唯一标识其对应实体,则将该属性或属性组合称为码。对于每一个实体集,可指定一个码为主码。
  如果用矩形框表示实体集,用带半圆的矩形框表示属性,用线段连接实体集与属性,当一个属性或属性组合指定为主码时,在实体集与属性的连接线上标记一斜线,则可以用图1.4描述学生成绩管理系统中的实体集及每个实体集涉及的属性。

 

 \主键

 

 

 

 

4.3.1 E-R图

1.实体及其属性的表示

【例子】 对于一个实体型——学生(学号,姓名,成绩),其E-R图如图1.10所示。

 

注意:实体图ER图可以分开

 

 

2.实体型之间联系的表示

  两个实体型之间联系的表示

 

  多个实体型(三个或三个以上)之间联系的表示

Ø 三个实体型A、B、C之间联系表示为(m:n:o),其中m,n,o > 0。

【例子】 对于供应商、仓库和零件,由于一个供应商可以提供多种零件并存放在不同仓库中,而一种零件也可以由多个供应商提供并存放在不同仓库中,同时一个仓库也可以存放不同供应商提供的多种零件。所以供应商、仓库和零件之间的联系是多对多联系,其E-R图可以用图1.12表示。

 


 

3.实体型内部联系的表示

  同一个实体型内部实体的三种联系对应的E-R图,分别如图1.13的(a)、(b)和(c)所示。

 

 

【例子】 职工实体型中的实体具有领导与被领导的联系,这种联系是一对多联系,可以用图1.14表示。

 

4.联系属性的表示

  联系的属性的表示方法与实体的类似

Ø 对于供应商和仓库之间的联系(库存),其属性(库存量),可以表示如图1.15所示。

 

 

总结

  利用实体、属性和联系及其之间关系的表示方法可以将现实世界中的复杂问题抽象成为信息世界中的概念模型。

  概念模型通常是用E-R图表示的,E-R图的设计过程就是对问题进行抽象和建模的过程。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!