
2.2.1 基本概念
(1)数据模型的内容。
数据模型是数据库系统的数学形式框架,是用来描述数据的一组概念和定义,包括以下几个方面的内容。
①数据的静态特征,包括对数据结构和数据间联系的描述。
②数据的动态特征,是一组定义在数据上的操作,包括操作的含义、操作符、运算规则及其语言等。
③数据的完整性约束,这是一组规则,数据库中的数据必须满足这组规则。
(2)不同数据模型的特征。
数据库系统的数据模型有很多种,大体可分成两类。一类是面向值的数据模型,如目前用得最多的关系模型。在关系模型中,数据库的数据被看作是若干关系,关系则被看作是简单的二维表格。另一类是面向对象模型,这是新一代的数据模型,如语义数据模型和时空数据模型。这一数据模型对现实环境的数据有很强的表现力,是适应计算机应用发展需要的新模型。早先的层次模型和网状模型用有向图描述数据及其联系,它们可归入不完善的面向对象模型。
不同的数据模型适合不同的应用环境,所以在众多的数据模型中不存在所谓的最好的数据模型。不同的数据模型在以下几个方面的特征不同,而正是这些不同决定了数据模型的适用范围。
①面向对象和面向值。
传统的关系模型是面向值的数据模型,允许用说明性数据语言;面向对象模型则提供了对象标识,所以被称为面向对象的。
②冗余处理。
所有的数据都以某种方式帮助用户避免多次重复存储同一数据。重复存储造成了数据冗余,冗余不仅浪费空间,而且可能因为同一数据在一处修改而另一处不变而造成数据的不一致。面向对象模型在数据冗余方面处理得更好。我们可以通过为一个对象建立一份副本,而在其他要用到该对象的地方通过对象标识或指针来指向这个副本。
③多对多联系的处理。
在网状模型中这个问题留给了物理设计层解决,而关系模型则禁止多对多联系。
(3)数据模型的类型。
在实际应用中,为了更好地描述现实世界中的数据特征,常常针对不同的场合或不同的目的采用不同的方法描述数据特征,统称为数据模型。一般来说数据模型有以下几种。
①概念数据模型。
概念数据模型是面向数据库用户的现实世界的数据模型,与具体的DBMS无关。概念数据模型主要用来描述现实世界的概念化结构,它是数据库在设计的初始阶段摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据、数据间联系等。概念数据模型必须转换成逻辑数据模型才能在DBMS中实现。最常用的概念数据模型是E-R(Entity-Relation)模型,它是将现实世界的信息结构转换成数据库的数据模型的桥梁。
②逻辑数据模型。
逻辑数据模型是用户从数据库所看到的数据模型,是具体的DBMS所支持的数据模型,如网状模型、层次模型、关系模型和面向对象模型等。逻辑数据模型既要面向用户,也要面向系统,一般由概念数据模型转换而来。
③物理数据模型。
物理数据模型是描述数据在存储介质上的组织方式的数据模型,它不仅与具体的DBMS有关,而且与操作系统和硬件有关。每一种逻辑数据模型在实现时都有对应的物理数据模型,一般来说都由DBMS自动完成物理数据模型的实现工作,设计者则只负责设计索引、聚集等特殊结构。
(1)现实世界。
现实世界是指存在于人脑之外的客观世界。现实世界是客观存在的。在现实世界中存在着各种运动着的事物,一个客观存在并且可以识别的事物称为个体。个体可以是一个具体的事物,也可以是抽象的概念。每个个体都有自己的特征,这些特征是人们区分个体的根据。一个个体具有多方面的特征,通常选择人们感兴趣以及最能够表达该个体的若干特征来描述该事物。以单位职工为例,通常选用姓名、年龄、性别、籍贯、部门以及职务等来描述一个职工的特征。
在现实世界里,个体与个体之间存在着联系,这种联系是客观存在的。如职工和部门,职工在部门中就职。事物之间的联系也是多方面的,人们仅选择那些感兴趣的联系。
(2)概念世界。
概念世界又称信息世界,是现实世界在人们头脑中的反映,是对客观事物及其联系的一种抽象描述。概念世界不是现实世界的简单复制,而要经过选择、命名、分类等抽象过程产生概念数据模型。概念数据模型是现实世界到机器世界必然经过的中间层次。建立概念数据模型涉及以下几个术语。
①实体。我们把客观存在并可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事件,还可以是事物之间的联系。如一个职工、一个部门属于实际事物,一次订货、借阅若干本图书、一场考试则是比较抽象的事件。
具有相同类型和相同特征的实体集合称为实体集。属性的集合表征一种实体的类型,称为实体型,如可以用工号、姓名、年龄、性别和部门等属性来表征“职工”这一实体型。实体型“职工”表示全体职工的整体,并不具体指某个职工。严格地说,实体集属于“型”这一级的概念,对应的实例一级的例子是当前属于该实体集的所有实体的集合。在讨论数据模型时应该用实体集。但为了叙述简单,有时人们常不加区分简单地用“实用”。在应该用实体集的地方,从上下文可以理解具体指的是“实体”还是“实体集”。本书也是这样的。
②属性。属性是用来描述实体的某一方面特性的。如职工实体用若干属性(工号、姓名、性别、出生日期、职务,部门)来描述。属性的具体取值称为属性值,用以描述一个具体实体。如属性组合(0986,张洋,男,01/06/53,处长,审计部门)在职工花名册中就表征了一个具体的人。
③实体标识符。如果某个属性或属性组合的值能够唯一地标识出实体集中的每一个实体,则可以选择该属性或属性组合作为实体标识符。例如,“职工号”可以作为实体标识符;而由于可能有重名者存在,“姓名”就不宜作为实体标识符。
④联系。现实世界中的事物是存在普遍联系的。这种联系反映到信息世界里后可以分成两类,一类是实体内部各属性之间的联系,另一类是实体之间的联系。实体之间的联系用E-R模型来反映,对于实体内部各个属性之间的联系通常在数据库的规范化过程进行处理。
(3)机器世界。
信息经过加工编码进入机器世界,机器世界的处理对象是数据。机器世界常用到以下几个概念。
①记录。相应于每一实体的数据叫记录。
②字段。相应于属性的数据称为字段,或者叫数据项,又称数据元素或初等项。
③文件。相应于实体集的叫文件,它是同类记录的集合。
④记录型。相应于实体型的为记录型。
⑤关键字。相应于实体标识符的为关键字,关键字又称码。
上述概念的对应关系如下。

实体、属性与记录、字段均有型与值之分。如“职工”是一个实体型,“林玫”“王芮”则是实体值。属性中的性别、年龄是属性型,而(男,女)(23,30)则分别为性别、年龄的属性值。记录型是数据项型的一个有序组;同理,记录值是数据项值的同一有序组。记录型是一个框架,只有给它的每个数据项取值后才能得到记录。