零基础学SQL
上QQ阅读APP看书,第一时间看更新

第一篇 关系数据库与SQL语言

第1章 关系数据库介绍

关系数据库是一个二维表的集合,可以用来存储不同类型的数据信息。用户可以根据自己的需要查询其中的信息。目前经常使用的数据库包括Oracle数据库、MySQL数据库、Microsoft SQL Server数据库和DB2数据库等。本章主要介绍关系数据库中涉及的几个重要的概念以及几种常用的关系数据库,最后以MySQL 5.0数据库为例,介绍了MySQL 5.0数据库的安装和使用方法。

本章重点:

❑概念模型和关系数据模型

❑关系模式

❑常用关系数据库介绍

❑MySQL 5.0数据库的安装和使用方法

1.1 数据模型

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

1.1.1 概念模型

在关系数据库的设计中,概念模型通常是通过E-R图来描述的。其中,E表示实体的意思;R表示关系的意思。因此E-R图也叫做实体—关系图。

在E-R图中的E是英文单词Entity的缩写,表示实体的意思。这里所说的实体可以理解为现实世界中的事物,例如,高等院校中的院系、教师等。E-R图中的R是英文单词Relationship的缩写,表示关系的意思。这里所说的关系可以理解为实体与实体之间的相互联系。例如,高等院校中院系与教师之间的相互联系。在E-R图中还涉及的一个概念是属性,英文单词为Attribute,它用来描述实体的特征。例如,高等院校中院系的编号、名称;教师的姓名、编号、工资、所在院系等。

在E-R图中,关系是用来表示实体与实体之间相互联系的。关系可以分为一对一、一对多和多对多三种类型。下面通过例子来讲解关系中的这3种类型。

❑一对一(1:1):在高等院校中,校长和学校的关系就是一对一的关系。每一个学校只有一名校长,一名校长只能管理一个学校。

❑一对多(1:n):在高等院校中,院系和学生之间就是一对多的关系。一个院系中可以对应多个学生,而每一个学生只是其中某一个院系中的成员。

❑多对多(n:m):在高等院校中,课程与授课教师之间就是多对多关系。一门课程可以由几个不同的教师来讲授,一名教师也可以讲授多门不同的课程。

在E-R图共有3种符号:矩形、椭圆(或者圆形)和菱形。其中,矩形用来表示实体,椭圆或者圆形用来表示属性,菱形用来表示关系。下面来看一下如何使用E-R图描述上面讲到的3种关系。

1. 使用E-R图描述一对一关系

这里以学校和校长为例,使用E-R图描述一对一关系。其E-R图如图1.1所示。

图1.1 一对一关系

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

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 关系数据模型

在数据库管理系统的实现中,关系数据模型通过二维表的形式描述实体与属性之间的关系。两个二维表之间的关系也包括一对一、一对多和多对多3种类型。

❑一对一(1:1):在二维表A和二维表B中,如果表A中的一条记录只与表B中的一条记录相对应,同时表B中的每一条记录也只与表A中的一条记录相对应,那么这两个数据表之间就是一对一的关系。

❑一对多(1:n):二维表A和二维表B中,如果表A中的一条记录只与表B中的一条记录相对应,但是表B中的每一条记录却能对应表A中的多条记录,那么这两个数据表之间就是一对多的关系。

❑多对多(n:m):二维表A和二维表B中,如果表A中的一条记录与表B中的多条记录相对应,同时表B中的每一条记录也与表A中的多条记录相对应,那么这两个数据表之间就是多对多的关系。

二维表是由行和列两部分组成的。其中,二维表中的行用来描述实体中的具体数据,二维表中的列用来表示实体中的属性。在二维表还涉及与其有关的一些概念,这些与二维表有关的概念将在4.1节中介绍。