数据库数据模型

目录

1  基本概念

2  数据模型的三要素

3  E-R模型

3.1  实体

3.2  联系

3.3  属性

3.4  实体-联系方法

3.5  扩展的E-R模型

4  数据模型

5  关系模型


1  基本概念

    模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。常用的数据模型分为概念数据模型和基本数据模型。
    (1)概念数据模型。概念数据模型又称信息模型,是按用户的观点对数据和信息建模;是现实世界到信息世界的第一层抽象,强调其语义表达能力,易于用户理解;是用户和数据库设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是实体-联系模型,简称E-R模型。
    (2)基本数据类型。它是按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现。基本的数据模型有层次模型、网状模型、关系模型和面向对象模型(Oriented Model)。

    (3)实体(Entity)。现实世界中客观存在并可相互区分的事物叫做实体。实体可以是一个具体的人或物,如王伟、汽车等;也可以是抽象的事件或概念,如购买一本图书等。

    (4)属性(Attribute)。实体的某一特性称为属性,如学生有学号、姓名、年龄、性别等方面的属性。属性有“型”和“值”之分,“型”即为属性名,如姓名、年龄、性别是属性的型;“值”即为属性的具体内容,如(010001,张三,20,男,计算机)这些属性值的集合表示了一个学生实体。

    (5)实体型(EntityType)。若干属性型组成的集合可以表示一个实体的类型,简称实体型。如学生(学号、姓名、年龄、性别、系)就是一个实体型。

    (6)实体集(Entity Set)。同型实体的集合称为实体集,如所有的学生、所有的课程等。

    (7)码(Key)。能唯一表示一个实体的属性或属性集称为码,如学生的学号。学生的姓名可能有重名,不能作为学生实体的码。

    (8)域(Domain)。属性值的取值范围称为该属性的域,如学号的域为6位整数,姓名的域为字符串集合,年龄的域为小于40的整数,性别的域为(男,女)。

    (9)联系(Relationship)。在现实世界中,事物内部以及事物之间是有联系的,这些联系同样要抽象和反应到信息世界中来。在信息世界中将被抽象为实体型内部的联系和实体型之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。

2  数据模型的三要素

    数据库结构的基础是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件。
    (1)数据结构。数据结构是所研究的对象类型的集合,是对系统静态特性的描述。
    (2)数据操作。数据操作是对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作规则。例如操作有检索、插入、删除和修改,操作规则有优先级别等。数据操作是对系统动态特性的描述。
    (3)数据的约束条件。数据的约束条件是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。例如某单位人事管理中,要求在职的“男”职工的年龄必须大于18岁小于60岁,工程师的基本工资不能低于1500元,每个职工可担任一个工种,这些要求可以通过建立数据的约束条件来实现。


3  E-R模型

    概念模型是对信息世界建模,所以概念模型能够方便、准确地表示信息世界中常用概念。概念模型有很多种表示方法,其中最常用的是P.P.S.Chen 于1976年提出的实体-联系方法(Entity Relationship Approach)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型(Entity-Relationship Model,E-R模型)。
E-R模型是软件工程设计中的一个重要方法,因为它接近人的思维方式,容易理解并且与计算机无关,所以用户容易接受,是用户和数据库设计人员交流的语言。但是,E-R模型只能说明实体间的语义联系,还不能进一步地详细说明数据结构。在解决实际应用问题时,通常先设计一个E-R模型,然后再把其转换成计算机能接受的数据模型。

3.1  实体

    在E-R模型中,实体用矩形表示,通常矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件”或“物体”。例如,企业中每个人都是一个实体。每个实体由一组特性(属性)来表示,其中某一部分属性可以唯一标识实体,例如职工实体集中的职工号。实体集是具有相同属性的实体集合。例如,学校的所有教师具有相同的属性,因此教师的集体集合可以定义为一个实体集;学生具有相同的属性,因此学生的集合可以定义为另一个实体集。

3.2  联系

    在E-R模型中,联系用菱形表示,通常菱形框内写明联系名,并用无向边分别与有关实体连接起来。同时在无向边旁标注上联系的类型(1:1、1:n或m:n)。实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反应数据在同一记录内部各字段间的联系。
1)两个不同实体之间的联系
两个不同实体集之间存在以下3种联系类型。

  •     一对一(1 : 1)。指实体集E1中的一个实体最多与实体集E2中的一个实体相联系。
  •     一对多(1 : n)。表示实体集E1中的一个实体可与实体集E2中的多个实体相联系。
  •     多对多(m : n)。表示实体集E1中的多个实体可与实体集E2中的多个实体相联系。

3.3  属性

    属性是实体某方面的特性。例如,职工实体集具有职工号、姓名、年龄、参加工作时间和通信地址等属性。每个属性都有其取值范围,例如职工号为000001~99999的6位数整型数,姓名为10位的字符串,年龄的取值范围为18~60等。在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有以下分类。
(1)简单属性和复合属性。简单属性是原子性的、不可再分的,符合属性可以细分为更小的部分(即划分为别的属性)。有时用户希望访问整个属性,有时希望访问属性中的某个成分,那么在模式设计时可采用复合属性。例如,职工实体集的通信地址可以进一步分为邮编、省、市、街道。若不特别声明,通常指的是简单属性。
(2)单属性值和多属性值。在前面所举的例子中,定义的属性对于一个特定的实体都只有单独的一个值。例如,对于一个特定的职工,只对应一个职工号、职工姓名,这样的属性称为单值属性。但是,在某些特定情况下,一个属性可能对应一组值。例如,职工可能有0个、1个或多个亲属,那么职工的亲属的姓名可能有多个数目,这样的属性称为多值属性。
(3)NULL属性。当实体在某个属性上没有值或属性值未知时,使用NULL值,表示无意义或不知道。
(4)派生属性。派生属性可以从其他属性得来。例如,职工实体集中有“参加工作时间”和“工作年限”属性,那么“工作年限”的值可以由当前时间和参加工作时间得到。这里,“工作年限”就是一个派生属性。

3.4  实体-联系方法

    概念模型中最常用的方法为实体-联系方法,简称E-R方法。该方法直接从现实世界中抽象出实体和实体间的联系,然后用非常直观的E-R图来表示数据模型。在E-R图中有下表所示的几个主要构件。


      E-R图中的主要构件

构 件

说 明

矩形

表示实体集

双边矩形

表示弱实体集

菱形

表示联系集

双边菱形

表示弱实体集对应的标识性联系

椭圆

表示属性

线段

将属性与相关的实体集连接,或将实体集与联系集相连

双椭圆

表示多值属性

虚椭圆

表示派生属性

双线

表示一个实体全部参与到联系集中


    说明:在E-R图中,实体集中作为主码的一部分属性以下划线标明。另外,在实体集与联系的线段上标上联系的类型。
例:学校有若干个系,每个系有若干名教师和学生;每个教师可以担任若干门教程,并参加多个项目;每个学生可以同时选修多门课程。设计该学校教学管理系统的E-R模型,给出每个实体、联系的属性。
(1)该学校教学管理系统的E-R模型有5个实体,即系、教师、学生、项目和课程。设计各实体属性如下:
    系(系号,系名,主任名)
    教师(教师号,教师名,职称)
    学生(学号,姓名,年龄,性别)
    项目(项目号,名称,负责人)
    课程(课程号,课程名,学分)
(2)各实体之间的联系如下:
    教师担任课程的 1:n “任课”联系;教师参加项目的 n:m “参加”联系;学生选修课程的 n:m “选修”联系;教师、学生与系之间所属关系的 1:n:m “领导”联系。其中,“参加”联系有一个排名属性,“选修”联系有一个成绩属性。
    通过上述分析,该学校教学管理系统的E-R模型如下图所示。


    需要指出的是,E-R模型强调的是语义,与现实世界的问题密切相关。这句话的意思是,尽管都是学校教学管理,但由于不同的学校教学管理的方法可能会有不同的语义,因此会得到不同的E-R模型。

3.5  扩展的E-R模型

    尽管基本的E-R模型足以对大多数数据库特征建模,但数据库某些情况下的特殊语义仅用基本E-R模型无法表达清楚,所以出现了扩展的E-R模型。扩展的E-R模型包括弱实体、特殊化、普遍化等概念。
1. 弱实体
    在现实世界中有一种特殊的联系,这种联系代表实体间的所有(Ownership)关系,例如职工与家属之间的联系,家属总是属于职工的。这种实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,将这类实体称为弱实体。
    在扩展的E-R图中,弱实体用双线矩形框表示。下图为职工与家属的E-R图。


2. 特殊化
    前面说到,实体集是具有相同属性的实体集合。但在现实世界中,某些实体一方面具有一些共性,另一方面还具有各自的特殊性。这样,一个实体集可以按照某些特征区分为几个子实体。例如,学生实体可以分为研究生、本科生和大专生等子集。将这些从普遍到特殊的过程称为“特殊化”。
将几个具有共同特性的实体概括成一个更普遍的实体集的过程称为“普遍化”。例如,可以将大专生、本科生和研究生概括为学生,还可以将学生、教师和职工概括为人。这就是从特殊到一般的过程。
设有实体集E,如果S是E的某些真子集的集合,记S=\left \{ Si | Si \subset E, i=1,2,...,n \right \} ,则称S是E的一个特殊化,E是S1,S2,...,Sn的超类,S1,S2,...,Sn称为E的子类。
    如果\bigcup_{i=1}^{n}Si=E,则称S是E的全特殊化,否则是E的部分特殊化。


    如果Si \cap Sj \neq \Phi , i \neq j ,则S是不相交特殊化,否则是重叠特殊化。
    教职工实体集中的某个职工既是在职生又是教师或工人,那么在职生、教师和工人应该是重叠特殊化;而在职生、教师和工人的集合等于教职工,所以是全部特殊化。
    在扩展的E-R模型中,子类继承超类的所有属性和联系,但是,子类还有自己特殊的属性和联系。例如,研究生除了学习以外,还要参加科研项目。那么,研究生不仅要继承学生的所有属性,还要增加学位类型、导师的属性,并且需要增加与项目的联系。
    在扩展的E-R模型中,超类-子类关系模型使用特殊化圆圈和联线的一般方式来表示。超类到圆圈有一条连线,连线为双线表示全特殊化,连线为单线表示部分特殊化;双竖边矩形框表示子类;有符号“∪”的线表示特殊化;圆圈中的d表示不相交特殊化;圆圈中的ο表示重叠特殊化;超类与圆圈用单线连接,表示部分特殊化。下图给出了一个特殊化应用实例。

4  数据模型

    在数据库领域中常见的数据模型有层次模型、网状模型、关系模型和面向对象模型。
    (1)层次模型(Hierarchical Model)采用树形结构表示数据与数据间的联系。在层次模型中,每一个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根结点以外的其它结点有且只有一个双亲结点。
    (2)网状模型(Network Model)也称DBTG模型,该是一个比层次模型更具有普遍性的数据结构,是层次模型的一个特例。网状模型可以直接地描述现实世界,因为去掉了层次模型的两个限制,允许两个结点之间有多种联系(称之为复合联系)。
    (3)关系模型(Relation Model)是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。
    (4)面向对象模型(Object Oriented Model)采用面向对象的方法来设计数据库。面向对象的数据库存储对象是以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。Computer Assoicates的Jsamine就是面向对象模型的数据库系统。
    面向对象数据模型比网状、层次、关系数据模型具有更加丰富的表达能力。但正因为面向对象模型的丰富表达能力,模型相对比较复杂,实现起来比较困难。

5  关系模型

    关系模型(Relation Model)是目前最常用的数据模型之一。关系数据库采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。关系模型是由若干关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。给定变量的值随时间可能发生变化,类似地,当关系被更新时,关系实例的内容也随时间发生了变化。
    例:教学数据库的4个关系模型如下:
    S(Sno, Sname, SD, Sage, Sex);学生S关系模式,属性为学号、姓名、系、年龄和性别。
    T(Tno, Tname, Age, Sex);教师T关系模式,属性为教师号、姓名、年龄和性别。
    C(Cno, Cname, Pcno);课程C关系模式,属性为课程号、课程名和先修课程号。
    SC(Sno, Cno, Grade);学生选课SC关系模式,属性为学号、课程号和成绩。
    关系模型中有下划线的属性是主码属性。下图是教学模型的一个具体实例。


    由于关系模型比网状、层次模型更加简单、灵活,因此,在数据处理领域中,关系数据库的使用已相当普遍。但是,现实世界中存在着许多含有更多复杂数据结构的实际应用领域。例如CAD数据、图形数据和人工智能研究等,需要有一种数据模型来表达这类信息,这种数据模型就是面向对象的数据模型。

已标记关键词 清除标记