SQL Server 2008数据库应用技术(第2版)
上QQ阅读APP看书,第一时间看更新

1.4 数据模型

模型,是对客观事物、现象、过程或系统的简化描述。所有的数据库系统都为它所要描述的世界建立了模型。数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型的。

1.4.1 信息的三种世界及其描述

为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型,而是概念级的模型;然后把概念模型转换为计算机上某一DBMS支持的数据模型。这一过程如图1.3所示。

图1.3 信息化过程

1.4.2 常见的数据模型

根据数据模型应用目的不同,数据模型有以下几种。

(1)概念(数据)模型(Conceptual Data Model,CDM)

面向现实世界建模,主要用来描述现实世界的概念化结构,与具体的DBMS无关。现实世界的事物经过人脑的抽象加工,提取出对用户有用的信息,经过组织整理加工形成介于现实世界和计算机世界之间的中间模型。最常用的概念模型是E-R模型。

(2)逻辑(数据)模型(Logical Data Model,LDM)

面向用户建模,用户从数据库所看到的数据模型。

逻辑模型是具体的DBMS所支持的数据模型(网状/层次/关系/面向对象);既要面向用户,也要面向系统。

(3)物理(数据)模型(Physical Data Model,PDM)

面向具体的DBMS,面向机器,描述数据在存储介质上的组织结构。

1.4.3 概念模型

概念模型是用于信息世界的建模,是现实世界到信息世界的第一层抽象,是用户与数据库设计人员之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识;另一方面它还应该简单、清晰、易于用户理解。

1. 基本概念

(1)实体(Entity)

客观存在并可相互区别的事物称为实体。实体可以是人、事、物,也可以是抽象的概念或联系,例如,一个学生、一名教师、一棵树、一只狗、一块肉、狗与肉的吃与被吃的关系等都是实体。

(2)属性(Attribute)

实体所具有的某一特性称为属性。一个实体可以由若干属性来刻画。例如,狗实体可以由编号、昵称、性别、出生日期、产地、品种编号等属性组成。(2012615001,美美,女,06/12/2011,西藏,zang 40123238)这些属性组合起来表征了一只狗。

(3)码(Key)

所谓码,是指在实体属性中,可用于区别实体中不同个体的一个属性或几个属性的组合,称为该实体集的“码”,有时也称为关键字。例如,在“狗”实体中,能作为码的属性可以是“编号”,因为一旦码有一取值,便唯一地标识了实体中的某一个实体;当然,“昵称”也可以作为“码”,但如果有重名现象,“昵称”这个属性就不能作为码了。当有多个属性可作为码而选定其中一个时,则称它为该实体的“主码”。若在实体诸属性中,某属性虽非该实体主码,却是另一实体的主码,则称此属性为“外部码”或简称“外码”。如“狗”实体中的“品种编号”就是“狗”实体的“外码”。

(4)域(Domain)

属性的取值范围称为该属性的域。例如,性别的域为(女,男),编号的域为10位整数,昵称的域为长度小于12个字符的字符串集合或汉字。

(5)实体型(Entity Type)

具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。

实体型是概念的内涵,而实体值是概念的实例。例如,狗(编号,昵称,性别,出生日期,产地,品种编号)就是一个实体型,它通过编号、姓名、性别、出生日期、产地、品种编号等属性表明狗的特性。而每只狗的具体情况,则称实体值。可见,实体型表达的是个体的共性,而实体值是个体的具体内容。通常属性是个变量,属性值是该变量的取值。

(6)实体集(Entity Set)

同型实体的集合称为实体集。例如,全世界的狗就是一个实体集。

2. 实体-联系表示法(E-R方法)

概念模型中最常用的方法为实体-联系方法(Entity-Relationship Approach),简称E-R方法。该方法直接从现实世界中抽象出实体和实体间的联系,然后用E-R图来表示数据模型。在E-R图中实体用方框表示;联系用菱形表示,同时用无向边将其与相应的实体连接起来,并在边上标上联系的类型;属性用椭圆表示,并且用无向边将其与相应的实体连接起来。对于有些联系,其自身也会有某些属性,用无向边将联系与其属性连接起来。

遇到实际问题时,应先设计一个E-R图,再把它转换成为计算机能接受的数据模型。

3. 实体间的联系方式

在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系。实体之间的联系通常是指不同实体集之间的联系。两个实体型之间的联系可以分为以下三类。

(1)一对一联系(1∶1联系)

如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1∶1,用图1.4表示。

图1.4 1∶1联系

例如,实体集学院与实体集院长之间的联系就是1∶1的联系,因为一个院长只领导一个学院,而且一个学院也只有一个院长。再如学校里,实体集班级与实体集班长之间也具有1∶1联系,一个班级只有一个班长,而一个班长只在一个班中任职。

(2)一对多联系(1∶n联系)

如果对于实体集A中的每一个实体,实体集B中有n个(n≥0)实体与之联系,反之,对于实体集B中的每一个实体,实体集A中至多有一个实体与之联系,则称实体集A与实体集B具有一对多联系,记为1∶n,用图1.5表示。

图1.5 1∶n联系

例如,学校与校内多个教师之间的“属于”联系、工厂里的车间和车间内多个工人之间的“工作”联系等,都是1∶n的联系。一所学校有多个教师,每个教师只能属于一所学校;同样,一个车间内有多个工人,每个工人只能属于一个车间。

(3)多对多联系(mn联系)

如果对于实体集A中的每一个实体,实体集B中有n个(n≥0)实体与之联系。反之,对于实体集B中的每一个实体,实体集A中也有m个(m≥0)实体与之联系,则称实体集A与实体集B具有多对多联系,记为mn,用图1.6表示。

图1.6 m∶n联系

例如,学生和课程之间的联系,一个学生可以选修多门课程,每门课程有多个学生选修;零件供应商和零件之间的联系,一个供应商可供应多种零件,每种零件可以由多个供应商提供等。

4. 怎样设计E-R图

在数据分析的基础上,就可以着手设计概念结构,即设计E-R图。E-R图的设计分两步来完成,首先设计初步E-R图,其次,对初步E-R图中的冗余进行消除得到基本E-R图。

设计初步E-R图的步骤如下。

(1)先设计局部E-R图,也称用户视图,步骤如下:

① 确定局部概念模型的范围;

② 定义实体;

③ 定义联系;

④ 确定属性;

⑤ 逐一画出所有的局部E-R图,并附以相应的说明文件。

(2)综合各局部E-R图,形成总的E-R图,即用户视图的集成。步骤如下:

① 确定公共实体类型;

② 合并局部E-R图;

③ 消除不一致因素;

④ 优化全局E-R图;

⑤ 画出全局E-R图,并附以相应的说明文件。

局部概念模型设计是从用户的观点出发,设计符合用户需求的概念结构。局部概念模型设计的就是组织、分类收集到的数据项,确定哪些数据项作为实体,哪些数据项作为属性,哪些数据项是同一实体的属性等。确定实体与属性的原则如下。

(1)能作为属性的尽量作为属性而不要划为实体。

(2)作为属性的数据元素与所描述的实体之间的联系只能是1∶n的联系。

(3)作为属性的数据项不能再用其他属性加以描述,也不能与其他实体或属性发生联系。

例如,一个机械制造厂的简单管理系统。首先按工厂技术部门和工厂供应部门设计两个局部E-R图。工厂技术部门关心的是产品的性能参数及由哪些零件组成,零件的材料和耗用量等;工厂供应部门关心的是产品的价格,使用材料的价格及库存量等。

按照部门划分,先单独设计某个部门的E-R图,如图1.7和图1.8所示。

图1.7 技术部门

图1.7和图1.8所示为局部E-R图,综合这两个分E-R图,得到初步E-R图,如图1.9所示。

图1.8 供应部门

图1.9 初步E-R图

初步E-R图是现实世界的纯粹表示,可能存在冗余的数据和实体间冗余的联系。所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由基本联系导出的联系。

初步E-R图由于存在冗余的信息,会破坏数据库的完整性,给数据库的管理带来麻烦,以至引起数据不一致的错误。因此,必须消除数据上的冗余和联系上的冗余,消除冗余后的E-R图称为基本E-R图。消除冗余的方法,我们将在后续有关范式的章节中叙述。