数据模型

  • 格式:doc
  • 大小:1.12 MB
  • 文档页数:11

1.1 数据模型数据模型是对现实世界数据特征的一种抽象。

一个完整的数据模型包括数据结构、数据操作和完整性约束三部分。

在数据模型多级描述中,主要包括概念模型、逻辑数据模型和物理数据模型。

概念模型是以客户的观点和想法为基础,对现实世界事物的抽象;逻辑数据模型是指用户看到的数据库中的数据模型,常用的是关系数据模型;物理数据模型是用来表示数据的存储结构的。

这一小节主要介绍概念模型和关系数据模型。

1.1.1 概念模型在关系数据库的设计中,概念模型通常是通过E-R图来描述的。

其中,E表示实体的以上;R表示关系的意思。

因此E—R图也叫做实体—关系图。

在E-R图中的E是英文单词Entity的缩写,表示实体的意思。

这里所说的实体可以理解为现实世界中的事物,例如,高等院校中的院系、教师等。

E-R图中的R是英文单词Relationship的缩写,表示关系的意思。

这里所说的关系可以理解为实体与实体之间的相互联系。

例如,高等院校中院系与教师之间的相互联系。

在E-R图中还涉及到的一个概念是属性,英文单词为Attribute,它用来描述实体的特征。

例如,高等院校中院系的编号、名称;教师的姓名、编号、工资、所在院系等。

在E-R图中,关系是用来表示实体与实体之间相互联系的。

关系可以分为一对一,一对多和多对多三种类型。

下面通过例子来讲解关系中的这三种类型。

❑一对一(1:1):在高等院校中,校长和学校的关系就是一对一的关系。

每一个学校只有一名校长,一名校长只能管理一个学校。

❑一对多(1:n):在高等院校中,院系和学生之间就是一对多的关系。

一个院系中可以对应多个学生,而每一个学生只是其中某一个院系中的成员。

❑多对多(n:m):在高等院校中,课程与授课教师之间就是多对多关系。

一门课程可以由几个不同的教师来讲授,一名教师也可以讲授多门不同的课程。

在E-R图共有三种符号:矩形、椭圆(或者圆形)和菱形。

其中,矩形用来表示实体,椭圆或者圆形用来表示属性,菱形用来表示关系。

下面来看一下如何使用E—R图描述上面讲到的三种关系。

1.使用E-R图描述一对一关系这里以学校和校长为例,使用E-R图描述一对一关系。

其E-R图如图1.1所示。

图1.1 一对一关系图1.1描述了学校和校长的一对一关系。

其中,矩形中的学校和校长表示实体;椭圆中的学校编号、学校名称表示实体学校的属性,校长名称、校长年龄、校长姓名表示实体校长的属性;菱形中的管理表示学校和校长之间的关系,即学校是由校长来管理的。

·217·2.使用E-R图描述一对多关系这里以学生和院系为例,使用E-R图描述一对多关系。

其E-R图如图1.2所示。

图1.2 一对多关系图1.2描述了学生和院系的一对多关系。

其中,矩形中的学生和院系表示实体;椭圆中的院系编号、院系名称表示实体院系的属性,学生编号、学生名称、学生年龄表示实体学生的属性;菱形中的属于表示院系和学生之间的关系,即学生是属于某一个院系的。

3.使用E-R图描述多对多关系这里以教师和课程为例,使用E-R图描述一对多关系。

其E-R图如图1.3所示。

图1.3 多对多关系图1.3描述了教师和课程的多对多关系。

其中,矩形中的教师和课程表示实体;椭圆中的课程编号、课程名称表示实体课程的属性,教师编号、教师名称、教师年龄表示实体教师的属性;菱形中的授课表示院系和学生之间的关系,即课程是由教师来讲授的。

1.1.2 关系数据模型在数据库管理系统的实现中,关系数据模型是通过二维表的形式描述实体与属性之间的关系。

二维表是由行和列两部分组成的。

表1.1是一张学生信息表。

表1.1 学生信息表其中,二维表中的一行用来描述实体集中的一个实体。

二维表中的列用来表示实体中的属性,每一列的名称称为属性名。

例如,学生信息表中对应的属性就有三个,stuID、stuName和age。

二维表中列的取值范围称为域。

例如,学生年龄的属性域可以是15~50。

在关系数据模型中,实体与实体之间的联系都是用二维表来描述的。

从表1.1中可以看到,学生信息表是一个二维数据表。

但是关系数据模型中的表与一般的二维表相比,还是有些不同的。

关系是一种规范化的二维表格,每一个属性值都是不可再分的。

·218·❑关系数据模型的二维表中,不会有重复的行。

即关系数据模型的二维表中每一行的数据都应该是不同的。

关系数据模型中,常用的关系操作主要包括查询、连接、交、并、差、数据插入、修改和删除的操作。

这些操作需要满足一定的关系完整性约束条件。

关系的完整性约束包括实体完整性、参照完整性和用户定义完整性。

其中,实体完整性是针对级别关系的,它要求数据表中所有的行都要有一个惟一性的标示,一般通过主键来标示。

参照完整性是用来针对多个数据表之间的引用关系的,一般通过外键来保证多表之间的参照完整性。

用户定义完整性是针对某一个具体的关系数据库的约束条件,可以通过检查约束限制列的取值范围或者取值条件。

有关二维表主键、外键、索引、约束等这些概念将在4.1数据库中的表一节中介绍。

1.2 关系模式关系模式是用来表示对关系的描述。

关系数据库中共有三种关系模式,概念模式、外模式和内模式。

下面就对关系数据库中的三种关系模式做一个简单的介绍。

❑模式(Schema):概念模式也可以叫做模式,它是用来描述数据库中的数据逻辑结构的。

可以把概念模式理解为现实世界中的实体在数据库系统中的具体实现。

例如,一个关系逻辑结构对应的一个二维数据表,就可以理解为关系数据库中的模式。

概念模式与应用程序和计算机硬件等环境无关。

❑外模式(External Schema):外模式也可以也叫做用户模式,它是概念模式的一部分。

在外模式中定义了允许用户操作的数据,例如,在数据库中用户看到的视图就可以理解为关系数据库中的外模式。

当然,在关系数据库中由于用户的需求、存储数据的不同,不同数据的外模式也不是完全相同的。

❑内模式(Internal Schema):内模式也叫做存储模式,它是用来描述数据的物理结构和数据的存储方式的。

例如,关系数据库中索引的组织方式、数据记录的存储方式等就可以理解为关系数据库的内模式。

1.3 常用关系数据库目前主流的数据库厂商主要包括Oracle、Microsoft、Sybase、Informix、IBM等,每一个厂商都有自己不同版本的数据库产品。

例如,Oracle数据库、Microsoft SQL Server数据库、Microsoft Access数据库、FoxPro数据库等。

另外还有一些厂商提供了一些开源版本的数据库产品,主要包括MySQL数据库、PostgreSQL数据库、SAP等。

这些数据库都是目前比较常用的关系数据库。

这一节来介绍几种主要的常用关系数据库。

1.3.1 Oracle数据库Oracle数据库是是美国Oracle公司(甲骨文)推出的关系数据库系统,它是目前主流的广泛使用的数据库系统之一。

作为大型的数据库系统,Oracle数据库提供了完整的数据管理功能,主要作用与大、中型应用系统、C/S(客户端/服务器)、B/S(浏览器/服务器)系统中的服务器端。

对于数据量大、并发操作多,实时性要求高的系统,服务器端的数据库一般都选择Oracle数据库。

·219·Oracle公司从1984年推出运行在PC机上的Oracle数据库到现在,版本在不断的编号和更新。

在1986年的第5版中,增加了Oracle数据库的分布式处理机制;在1992年的第7版中,提供了比较完善的分布式数据库功能;到2001年推出的Oracle9i是一个完整的、简单的、用于互联网的、智能化、安全可靠的数据库产品;随后Oracle公司又推出了Oracle10g,在Oracle10g中加入了网格计算的功能,并在安全性、可伸缩性、可用性都都得到了加强,并提供了SQL语言和PL/SQL语言对正则表达式的支持‘在2007年又推出了Oracle11g,该版本中在数据库管理和PL/SQL部分增加了许多新的特性。

1.3.2 Microsoft SQL Server数据库Microsoft SQL Server数据库是Microsoft公司(微软)推出的关系数据库系。

也是目前主流的广泛使用的数据库系统之一。

SQL Server数据库具有高性能、可扩展、先进的系统管理、支持WINDOWS 图形化管理工具、很好的事务处理功能等特点。

Microsoft SQL Server数据库的1.0版本是在1989年推出的,之后经历了1.11、SQL Server for Windows NT3.1、6.0、7.0、等版本。

在2000年、2005年和2008年Microsoft公司分别推出了SQL Server2000、SQL Server2005和SQL Server2008三个版本。

目前常用的两个版本是SQL Server2005和SQL Server2008。

SQL Server2008中在安全性、可靠性、可扩展性等方面都比SQL Server2005有了很大的改进,同时还增加了T-SQL语言的功能。

例如,增加了T-SQL的行构造器、增加了日期时间的数据类型、增加了MERGE语句等。

1.3.3 MySQL数据库MySQL是瑞典的MySQL AB公司开发的一款功能强大、使用灵活、多用户、多线程SQL的数据库管理系统。

为用户提供了丰富的应用程序接口和非常有用的功能集,是互联网中流行的数据库服务器,很多软件开发人员和商业用户也都在使用MySQL数据库。

MySQL数据库是由C和C++语言编写的,它支持多线程,为不同的编程语言像Perl、PHP、Java、Python、C++语言等都提供了相应的API,并且具有操作简单、性能高、可移植性好、安装时占用的资源少等特点。

而它的最大特点就是对于个人用户它是免费的,可以到其官方网站/上下载,其中文网址为/。

目前MySQL数据库的最新版本是MySQL5.0,本书中使用的就是这个版本。

1.3.4 PostgreSQL数据库PostgreSQL数据库是以Postgres 版本4.2为基础,由美国加州伯克利分校开发的一款对象关系型数据库管理系统。

PostgreSQL数据库采用的比较经典的C/S (客户端/服务器)结构,它支持事务、存储过程、并发控制、性能优异。

PostgreSQL数据库服务器还提供了统一的客户端C 接口,像ODBC、JDBC、Perl、C/C++等不同的客户端接口都是源自这个C接口,而且PostgreSQL数据库几乎支持所有类型的数据库客户端接口。

PostgreSQL数据库还拥有极其强大的扩展能力,可以很容易地扩展数据类型、函数、操作符、索引方法等。

与MySQL数据库相比,PostgreSQL数据库提供的功能要比MySQL数据库丰富,但是在速度和稳定性方面它不及MySQL数据库。