[转载]数据库系统工程师知识点讲解:数据模型
原文地址:数据库系统工程师知识点讲解:数据模型作者:数据库工程师 五、数据模型 1.数据模型的三要素 (1)数据结构 数据结构是所研究的对象类型(object type)的集合。这些对象和对象类型是数据库的组成成分。一般可分为两类:一类是与数据类型、内容和其它性质有关的对象；一类是与数据之间的联系有关的对象。前者如网状模型中的数据项和记录,关系模型中的域、属性和关系等。后者如网状模型中的关系模型(set type)。在数据库领域中,通常按照数据结构的类型来命名数据模型,进而对数据库管理系统进行分类。如层次结构、网状结构和关系结构的数据模型分别称作为层次模型、网状模型和关系模型。相应地,数据库分别称作为层次数据库、网状数据库和关系数据库。 (2)数据操作 数据操作是指对各种对象类型的实例(或值)所允许执行的操作的集合,包括操作及有关的操作规则。在数据库中,主要的操作有检索和更新(包括插入、删除、修改)两大类。数据模型定义了这些操作的定义、语法(即使用这些操作时所用的语言)。数据结构是对系统静态特性的描述,而数据操作是对系统动态特性的描述。两者既有联系,又有区别。 (3)数据的约束条件 数据的约束条件是完整性规则的集合。完整性规则是指在给定的数据模型中,数据及其联系所具有的制约条件和依存条件,用以限制符合数据模型的数据库的状态以及状态的变化,确保数据的正确性、有效性和一致性。 2.概念模型数据模型是数据库系统的核心和基础。每个dbms软件都是基于某种数据模型的。为了把现实世界中的具体事物或事物之间的联系表示成dbms所支持的数据模型,人们首先必须将现实世界的事物及其之间的联系进行抽象,转换为信息世界的概念模型；然后将信息世界的概念模型转换为机器世界的数据模型。也就是说,首先把现实世界中的客观对象抽象成一种信息结构。这种信息结构并不依赖于具体的计算机系统和dbms。然后,再把概念模型转换为某一计算机系统上某一dbms所支持的数据模型。因此,概念模型是从现实世界到机器世界的一个中间层次。现实世界的事物反映到人的大脑之中,然后人们开始认识这些事物,经过选择、命名、分类和组织等抽象工作之后形成概念模型,并进入到信息世界。 用户( ser) 关心的是现实世界中的事物、事物的属性及其相互关系。例如,用户可能关心他的顾客及其属性,如顾客地址、银行帐号等等。用户也关心自己的定货帐目,如谁订的货、订的什么和订多少等等。 系统分析员(analyst) 同样也关心现实世界,但是系统分析员需要分析用户的信息需求。作为需求分析的结果,分析员必须以文档的形式对需求进行结构化的描述；这个文档就是信息模型。 实体(entity) 实体是构成数据库的基本元素。实体是指一个存在的东西以区别这个东西所具有的属性和这个东西与其它东西的联系。实体可以是人,也可以是物；可以是实际对象,也可以是概念；可以是事物本身,也可以是指事物之间的联系。 属性(attrib te) 一个实体可以由若干个属性来刻画。属性是相对实体而言的,是实体所具有的特性。 关键字(key) 能唯一地标识实体的属性的集合称为关键字(或码)。 域(domain) 属性的取值范围称作域。 实体型(entity type) 一类实体所具有的共同特征或属性的集合称为实体型。一般用实体名及其属性来抽象地刻画一类实体的实体型。 实体集(entity set) 同型实体的集合叫实体集。例如,学生就是一个实体集。实体集的名即是实体型。对于学生和(学号,姓名,年龄,系,年级)均是实体型,而学生是对实体型(学号,姓名,年龄,系,年级)所起的名称,两者是指同一客观对象。但本科生和研究生可以为相同实体型,而实体集不同。 联系(relationship) 现实世界的事物之间是有联系的。一般存在两类联系:一是实体内部的组成实体的属性之间的联系,二是实体之间的联系。在考虑实体内部的联系时,是把属性看作为实体。一般来说,两个实体之间的联系可分为三种: (1)一对一(1∶1)联系 若对于实体集a中的每一个实体,实体集b中至多有唯一的一个实体与之联系,反之亦然,则称实体集a与实体集b具有一对一联系,记作1∶1。 (2)一对多(1∶n)联系 若对于实体集a中的每个实体,实体集b中有n个实体(n≥0)与之联系；反之,对于实体集b中的每一个实体,实体集a中至多只有一个实体与之联系,则称实体集a与实体集b有一对多联系,记为1∶n。相应地有多对一(n∶1)联系 多对一联系,从本质上说,是一对多联系的逆转。其定义同一对多联系类似,不再赘述。 (3)多对多(m∶n)联系 若对于实体集a中的每一个实体,实体集b中有n个实体(n≥0)与之联系；反之,对于实体集b中的每一个实体,实体集a中也有m个实体(m≥0)与之对应,则称实体集a与实体集b具有多对多联系,记作m∶n。实质上,多对多联系是任意一种联系。另外,同一实体集内的各个实体间也可以有各种联系。概念模型的表示方法最常用的是实体一联系方法(entity-relationship approach),简称e-r方法。该方法是由p.p.s.chen在1976年提出的。e-r方法用e-r图来描述某一组织的概念模型。在这里仅介绍e-r图的要点。在e-r图中: (1)长方形框表示实体集,框内写上实体型的名称。 (2)用椭圆框表示实体的属性,并用有向边把实体框及其属性框连接起来。 (3)用菱形框表示实体间的联系,框内写上联系名,用无向边把菱形框及其有关的实体框连接起来,在旁边标明联系的种类。如果联系也具有属性,则把属性框和菱形框也用无向边连接上3.三种主要的数据模型实际dbms所支持的数据模型主要有三种: 层次模型(hierarchical model)网状模型(network model)关系模型(relational model)其中,关系模型是当前dbms所支持的数据模型的主流。90年代运行的dbms几乎都是基于关系模型的。层次模型和网状模型统称为非关系模型。非关系模型的结构可以和图论中的图相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用。但是最近,层次模型在研究面向对象的dbms中已得到重视。在关系模型中,数据在用户的观点中(或在用户视图中)的逻辑结构是一张二维表(table)。 关系(relation),对应于平常讲的一张表。 元组(t ple),表中的一行。 属性(attrib te),表中的一列称为一个属性,给每一列起一个名,称为属性名。这一列或这个属性所有可能取的值的集合称为这个属性的值域(domain),值域中的一个元素叫做这个属性的值。 主关键字(primary key attrib te或primary key),是指能唯一标识一个元组的一个或一组属性。 分量(attrib te val e),是指元组中的一个属性值。 关系模式(relational schema),是对关系的描述,一般用关系名(属性名1,属性名2..,属性名n)来表示。同层次模型和网状模型相比较,关系模型具有下列特点: (1)概念单一 在关系模型中,无论是实体还是实体之间的联系都用关系来表示。在关系模型中,在用户的观点中,数据的逻辑结构就是表,也只有这唯一的概念。在非关系模型中,用户要区分记录型与记录型之间的联系两个概念；当环境复杂时,数据结构异常复杂,难以掌握。而关系模型,由于概念单一,可以变复杂为直观、简单,易学易用。 (2)规范化 所谓关系规范化是指在关系模型中,每一个关系都要满足一定的条件要求。这些条件被称为规范条件。对于关系,一个最基本的规范条件是,要求关系中的每一个属性(或分量)均是不可分的数据项；也就是说不允许表中有表,表是不可嵌套的。 (3)在关系模型中,用户对数据的操作的输入和输出都是表,也就是说,用户通过操作旧表而得到一张新表。总之,关系模型概念简单,结构清晰,用户易学易用,有严格的以数学为基础的关系理论作指导,便于dbms的实现。基于关系的dbms简化了应用程序员的工作,便于数据库应用系统的设计和维护。故此,关系模型自诞生以后就得到了迅速的发展,成为应用最为广泛的、唯一的数据模型。