理解数据库与数据模型的概念

本篇首先引入编程微课项目作为数据库的应用案例,通过对项目功能及涉及的相关数据的介绍,让读者对数据库的应用有一个感性认识,然后重点讲述关系数据库的理论基础知识。通过本篇的学习,读者应该能掌握以下内容:

● 编程微课的主要功能

● 数据库的基本原理及数据模型

● 关系数据库

 

1、编程微课

编程微课项目使用图文,语言,视频等方式进行内容教学,再附加各种训练题,帮助练习和巩固知识。

微课内容来自于编程达人,编程达人撰写课程内容,通过编程微课平台为编程爱好者提供课程内容,获得收益。读者可以通过PC浏览器、微信小程序支付课程费用和学习课程内容,并可以加入编程达人的朋友圈,与编程达人进一步互动交流学习。

 

2、理解数据库

数据库可以理解为存储数据的仓库,每个数据项在数据仓库中都有编号,通过编号就可以找到该数据项。例如,图书馆就是存储图书的仓库,在图书馆存储的每本图书都有一个编号,编号表示了书的类别和顺序号,同类别的书放在一个书架上,便于图书管理员和读者查找图书。

图书馆存储的是图书,数据库存储的是数据,每条数据称为数据项。数据是对客观事物的符号表示,如文字、图形、数字等。在日常生活中,人们直接用语言来描述事物,例如在描述一门课程时,人们常用“Java编程课程—入门篇由编程达人郎老师编写,编程语言课,课程面向青少年编程爱好者,课程以浅显易懂的语言,以常见的生活场景为案例,带领大家逐步进入计算机编程世界”。

在计算机中,为了存储和处理这些事物,就要将事物的特征抽象出来组成一个记录来描述。

例如,将课程事物抽象为数据项记录(课程名称,授课老师,类别、学生对象,课程简介)。课程事物的一条数据可以描述为(Java编程课程—入门篇,郎老师,编程语言,面向青少年爱好者,课程以浅显易懂的语言,以常见的生活场景为案例,带领大家逐步进入计算机编程世界)。

当需要存储多个课程数据项时,就构成了数据库。因此,数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用提供数据服务。

 

3、数据库发展简史

计算机应用于数据管理的初期,由于没有必要的软件、硬件环境的支持,用户只能直接在裸机上操作。当时编写的应用程序不仅要设计如何处理和存储数据,还要指明数据在存储器上的存储地址。在这一管理方式下,应用程序和数据之间相互结合,不可分割,数据独立性差,缺少共享性,编程效率低下。这一阶段称为人工管理阶段。

随着计算机软、硬件的发展,数据管理进入了文件管理阶段,这一阶段的主要标志是计算机有了专门管理数据库的软件——操作系统(文件管理)。文件管理方式是把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,有一个专门的文件管理系统实施统一管理。在这一管理方式下,应用程序通过文件管理系统对数据文件中的数据进行加工处理,应用程序的数据具有一定的独立性和共享性,比手工管理方式更进了一步。

在文件管理阶度,数据虽然具备了一定的独立性和共享性,但由于数据的组织依然是面向程序,数据不但存在大量冗余,而且数据自身的逻辑结构也难以满足不同用户对数据的要求。为了减少数据冗余,提高数据的共享性和独立性,人们需要对使用的数据进行统一规划管理,形成一个数据中心,构成一个数据库。数据库中数据能够满足所有用户的不同要求,供不同用户共享。这个阶段称为数据库管理系统阶段。

 

4、数据模型

数据模型是数据库的基础,数据是对客观事物的符号表示,模型是现实世界的抽象。数据模型是对数据特征的抽象。

客观事物抽象为数据模型,是一个逐步转化的过程,经历了现实世界、信息世界和计算机世界这三个不同的世界,经历了两级抽象和转换,如下图所示:

 

                             理解数据库与数据模型的概念_第1张图片

                                                                         图 2-1 数据抽象过程

 

现实世界是指客观存在的事物及其相互间的联系,人们一般选择事物的基本特征来描述事物。事物可以是抽象的,也可以是具体的,如课程属于抽象的事物,人们通常用课程名称、授课老师、类别、学生对象、课程简介等特征来描述和区分。学生就属于具体的事物,通常用学号、姓名、班级、成绩等特征来描述和区分。

信息世界是对现实世界的抽象,人们把事物的特征和联系通过符号记录下来,并用规范化的语言描述现实世界的事物,从而构成一个基于现实世界的信息世界,这个信息世界就是概念模型概念模型主要用来描述显示世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及数据库管理系统的具体技术问题,集中精力分析数据以及数据之间的联系。在概念模型中,最常用的设计模型就是实体—联系模型(ER模型),关于课程的ER模型如下图所示:

 

                                        理解数据库与数据模型的概念_第2张图片

                                                                                   图 2-2 课程ER模型

 

信息世界的概念模型还不能被数据库管理系统直接使用,需要将概念模型进一步转换为逻辑数据模型,形成便于计算机处理的数据形式。逻辑数据模型是具体的数据库管理系统所支持的数据模型,主要有关系数据模型、层次数据模型和网状数据模型。关系数据模型是目前最流行的数据库模型,支持关系数据模型的数据库管理系统称为关系数据库管理系统,MySQL就属于关系数据库管理系统。关系数据模型以二维表结构来表示事物与事物之间的联系,也可以称为实体与实体之间的联系。关于课程关系的二维表如下表所示:

                             理解数据库与数据模型的概念_第3张图片

 

                                                                           表格 2-1 课程关系表

 

逻辑数据模型反映了数据的逻辑结构,当需要把逻辑模型数据存储到物理介质时,就需要用到物理数据模型了,物理数据模型是面向计算机物理表示的模型,描述了数据在存储介质上的组织结构,它不但与具体的数据库管理系统有关,而且还与操作系统和硬件相关,每一种逻辑数据模型在实现时都有对应的物理数据模型。本课程重点讨论概念数据模型和逻辑数据模型,物理数据模型不是本课程讨论的重点。

 

5、 关系数据库

要设计一个数据库系统,首先要将现实世界抽象到数据的世界,即将现实世界用数据进行描述,得到一个现实世界的数据模型

关系数据模型是目前描述现实世界主要的抽象化方法它将用户数据的逻辑结构归纳为满足一定条件的二维表的形式。由于关系数据模型概念简单、清晰,用户易懂易用,又有严格的数学基础。因此,20世纪80年代以来推出的数据库管理系统都支持关系数据模型,支持关系数据模型的数据库管理系统也称为关系数据库。

在描述现实世界的过程中,为了分析的方便,可以将这一抽象过程分为两个阶段首先应用ER模型将现实世界抽象为一个信息世界,这种信息的结构不依赖于具体的计算机实现,然后将信息世界的数据抽象为结构化的二维表形式,形成关系数据模型。

下面以编程微课项目的学生与课程两个事物(实体)为例,对两个阶段的抽象过程作具体说明。

在现实世界中描述学生和课程,要结合具体的事物场景来分析。编程微课项目使用图文,语言,视频等方式进行在线教学,学生可以在任何时间、任何地点使用手机或电脑打开课程学习。结合上面的场景来分析学生和课程的特征。学生有名称、账号、登录密码、性别、年龄等基本特征;课程有课程名称、授课老师、类别、学生对象、课程简介等基本特征;学生与课程的主要关系是学生学习课程。

经过上面对学生和课程的分析,可以画出学生与课程的ER模型,完成第一阶段从现实世界到概念世界的抽象。ER模型如下图所示:

 

                                          理解数据库与数据模型的概念_第4张图片

                                                                             图 2-3 学生与课程ER模型

第二阶段将设计的ER模型抽象为结构化的二维表形式,形成关系数据模型。将ER模型转换为结构化的二维表形式非常简单,一个事物(实体)对应一个表,事物(实体)的属性为表的字段,事物(实体)之间的关系可以在一个实体的二维表中增加另一个实体的主要字段来实现。ER模型转换后的二维表如下图所示:

 

                               理解数据库与数据模型的概念_第5张图片

                                                               图 2-4 学生课程二维表结构

 

■ 课程小结

可以把关系数据库理解为超市,超市摆放商品的每一排货架为数据库表,货架中每一列为表的字段,每一行为表的一条记录。假设货架每行同列摆放的商品类别相同,则可以把超市的每一排货架理解为数据库的二维表结构。由此可以看出,关系数据库是由多个二维表组成的,在每个二维表中每行同列存储的数据类别相同。

设计关系数据库时,需要两个阶段。第一个阶段是需要将现实世界的事物进行概念化,抽象为概念数据模型,此阶段最常用的工具是实体—联系模型(ER图);第二个阶段是将ER模型转换为二维表结构(关系数据模型),此阶段一般需要利用数据库设计工具进行设计,如PowerDesigner、Visio等设计软件。

你可能感兴趣的:(数据库,关系型数据库)