第1章 数据库入门
学习目标
。掌握数据库、数据库系统、教据库管理系统的基本概念
。了解数据库技术发展经历的三个阶段
。掌握关系模型、SOI.的基本概念
。掌握 MySQl的安装、配置、启动、登录等操作
。了解常用图形化工具的使用
数据库技术是计算机应用领域中非常重要的技术。它产生于20世纪60年代末,是数据管理的最新技术,也是软件技术的一个重要分支。本章重点讲解数据库的基础知识以及MySQL 的安装与使用。
1.1据库基础知识
1.1.1 数据库概述
1.1 数据库基础知识
1.1.1数据库概述
数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库,其本身可被看作电子化的文件柜,用户可以对文件中的数据进行增加,删除,修改,查找等操作。需要注意的是,这里所说的数据(Data)不仅包括普通意义上的数字,还包括文字,图像,声音等。也就是说,凡是在计算机中用来描述事物的信息都可称为数据。
数据库技术是计算机领域重要的技术之一。在互联网、银行,通信,政府部门、企事业单位,科研机构等领域,都存在着大量的数据。数据库技术研究如何对数据进行有效的管理。包括组织和存储数据,在数据库系统中减少数据存储冗余,实现数据共享,保障数据安全,以及高效地检常和处理数据,
大多数初学者认为数据库就是数据库系统(Database System,DBS)。其实,数据库系统的范用比数据库大很多。数据库系统是指在计算机系统中引人数据库后的系统,除了数据库,还包括数据库管理系统(Database Management System,DBMS),数据库应用程序等。为了让读者更好地理解数据库系统,下面通过一张图来描述,如图1-1所示。图 1-1描述了数据库系统的几个重要部分,如数据库,数据库管理系统,数据库应用程序等,具体解释如下。
(1)数据库。数据库提供了一个存储空间用来存储各种数据,可以将数据库视为一个存储数据的容器。
(2)数据库管理系统。专门用于创建和管理数据库的一套软件,介于应用程序和操作系统之间,如 MySQL,Oracle,sQl Server、DB2等。数据库管理系统不仅具有最基本的数据管理功能,还能保证数据的完整性,安全性和可靠性。
(3)数据库应用程序。虽然已经有了数据库管理系统,但在很多情况下,数据库管理系统无法满足用户对数据库的管理。此时,就需要使用数据库应用程序与数据库管理系统进行通信、访问和管理 DBMS 中存储的数据。
1.1.2 数据库技术的发展
任何一种技术都不是凭空产生的,而是经历了长期的发展过程。通过了解数据库技术的发展历史,可以理解现在的数据库技术是基于什么样的需求而诞生的。数据库技术的发展主要分为3个阶段,分别是人工管理阶段,文件系统阶段和数据库系统阶段。关于这3个阶段的具体介绍如下。
1.人工管理阶段
在 20世纪 50年代中期以前,计算机主要用于科学计算,硬件方面没有磁盘等直接存取设备,只有磁带、卡片和纸带;软件方面没有操作系统和管理数据的软件。数据的输人,存取等,需要人工操作。人工管理阶段处理数据非常麻烦和低效,该阶段具有如下特点。(1)数据不在计算机中长期保存。
(2)没有专门的数据管理软件,数据需要应用程序自己管理。
(3)数据是面向应用程序的,不同应用程序之间无法共享数据,(4)数据不具有独立性,完全依赖于应用程序。
2.文件系统阶段
从 20世纪50年代后期到60年代中期,硬件方面有了磁盘等直接存取设备,软件方而有了操作系统,数据管理进人了文件系统阶段。这个阶段,数据以文件为单位保存在外存储器上,由操作系统管理,程序和数据分离,实现了以文件为单位的数据共享。
文件系统阶段具有如下特点。
(1)数据在计算机的外存设备上长期保存,可以对数据反复进行操作。(2)通过文件系统管理数据,文件系统提供了文件管理功能和存取方法(3)虽然在一定程度上实现了数据独立性和共享性,但都非常薄弱。
3,数据库系统阶段
从 20世纪60年代后期开始,计算机应用越来越广泛,管理的数据量越来越多,同时对多种应用程序之间数据共享的需求越来越强烈,文件系统的管理方式已经无法满足需求。为了提高数据管理的效率,解决多用户,多应用程序共享数据的需求,数据库技术应运而生,由此进人了数据库系统阶段。
数据库系统阶段具有如下特点。
(1)数据结构化。数据库系统实现了整体数据的结构化,这是数据库主要的特征之一这里所说的“整体"结构化,是指在数据库中的数据不只是针对某个应用程序,而是面向整
体的。
(2)数据共享。因为数据是而向整体的,所以数据可以被多个用户,多个应用程序共享使用,可以大幅度地减少数据冗余,节约存储空间,避免数据之间的不相容性与不一致性。例如,企业为所有员工统一配置即时通讯和电子邮箱软件,若两种软件的用户数据(如员工姓名,所属部门,职位等)无法共享,就会出现如下问题。
① 两种软件各自保存自己的数据,数据结构不一致,无法互相读取。软件的使用者需要向两个软件分别录人数据。
四由于相同的数据保存两份,会造成数据冗余,浪费存储空问。
③ 若修改其中一份数据,忘记修改另一份数据,就会造成数据的不一致。
使用数据库系统后,数据只需保存一份,其他软件都通过数据库系统存取数据,就实现了数据的共享,解决了前面提到的问题。
(3)数据独立性高。数据的独立性包含逻辑独立性和物理独立性。其中,逻辑独立性是指数据库中数据的逻辑结构和应用程序相互独立,物理独立性是指数据物理结构的变化不影响数据的逻辑结构。数据的独立性原理会在三级模式和二级映像中详细讲解。
(4)数据统一管理与控制。数据的统一控制包含安全控制,完整控制和并发控制。简单来说就是防止数据丢失、确保数据正确有效,并且在同一时间内,允许用户对数据进行多路存取,防止用户之间的异常交互。如,春节期间网上订票时,由于出行人数多、时间集中和抢票的问题,火车票数据在短时间内会发生巨大的变化,数据库系统要保证数据不能出现问题。
1.1.3 三级模式和二级映像
美国国家标准学会(American National Srandards Institute.ANSI)所属的标准计划与需求委员会(Standards Planning and Reguirements Committee,SPARC)在 1971 年公布的研究报告中提出了 ANSI-SPARC体系结构,即三级模式结构(或称为三层体系结构)。ANSI-SPARC最终没有成为正式标准,但它仍然是理解数据库管理系统的基础。三级模式是指数据库管理系统从三个层次来管理数据,分别是外部层(ExternalL.evel),概念层(Conceptual Level)和内部层(Internal Level)。这三个层次分别对应三种不同类型的模式,分别是外模式(External Schema),概念模式(Conceptual Schema)和内模式(Internal Schema)。在外模式与概念模式之间,以及概念模式与内模式之间,还存在映像,即二级映像,具体如图 1-2 所示。
在图 1-2 中,外模式面向应用程序,描述用户的数据视图(View);内模式(又称为物理模式,存储模式)面向物理上的数据库,描述数据在磁盘中如何存储;概念模式(又称为模式,逻辑模式)面向数据库设计人员,描述数据的整体逻结构。
由于三级模式比较抽象,为了更好地理解,下面将计算机中常用的 Excel电子表格类比成数据库,并假设有一个商城使用电子表格来保存商品信息。
(1)概念模式。概念模式类似于表格的列标题,它描述了商品表中包含哪些信息,如图 1-3 所示。
在图 1-3 中,表的横向称为行,纵向称为列,第一行就是列标题,用来描述该列的数据表示什么含义。实际上,概念模式在数据库中描述的信息还有很多,如多张表之间的联系,表中每一列的数据类型和长度等,读者在后面的学习中就会接触到这些内容。(2)内模式。在将Excel表格另存为文件时,可以选择保存的文件路径,保存类型(如X1S,XI.SX.CSV 等格式)等,这些与存储相关的描述信息相当于内模式。在数据库中,内模式描述数据的物理结构和存储方式,如堆文件、索引文件,散列(Hash)文件等。(3)外模式。在打开一个电子表格后,默认会显示表格中所有的数据,这个表格称为基本表。在将数据提供给其他用户时,出于权眼,安全控制等因素的考虑,只允许用户看到一部分数据,或不同用户看到不同的数据,这样的需求就可以用视图来实现。图 1-4演示了图和基本表的关系。
在图1-4中,基本表中的数据是实际存储在数据库中的,而视图中的数据是查询或计算出来的。由此可见,外模式可以为不同用户的需求创建不同的视图,且由于不同用户的需求不同,数据的显示方式也会多种多样。因此,一个数据库中会有多个外模式,而概念模式和内模式则只有一个。通过前面的分析可知,三级模式是数据的三个抽象级别,每个级别关心的重点不同。为了使三级模式之问产生关联,数据库管理系统在三级模式之问提供了二级映像功能。二级映像是一种规则,它规定了映像双方如何进行转换。
通过二级映像,体现了逻辑和物理两个层面的数据独立性。具体解释如下。(1)逻辑独立性。外模式/概念模式映像体现了逻辑独立性。逻辑独立性是指当修改了概念模式,不影响其上一层的外模式。例如,将图 1-4中基本表的“库存”和“销量"拆分到另一张表中,此时概念模式发生了更改,但可以通过改变外模式/概念模式的映像,继续为用户提供原有的祝图,如图1-5 所示。
由此可见,逻辑独立性能够让使用视图的用户感觉不到基本表的改变。其实,逻辑独立性带来的好处还有很多,随着后面的学习,读者会有更深人的体会。
(2)物理独立性。概念模式/内模式映像体现了物理独立性。物理独立性是指修改了内模式,不影响其上层的概念模式和外模式。例如,在 Excel 中将.xls 文件另存为.xlsx文件,虽然更换了文件格式,但是打开文件后显示的表格内容一般不会发生改变。
在数据库中,更换更先进的存储结构,或者创建索引以加快查询速度,内模式会发生改变。此时,只需改变概念模式/内模式映像,就不会影响到原有的概念模式。
另外,物理独立性使得用户不必了解数据库内部的存储原理,即可正常使用数据库来保存数据。数据库管理系统会自动将用户的操作转换成物理级数据库的操作。
多学一招:数据库相关的人员
教据库系统涉及一些人员,主要包括数据库管理员(Database Administrator,DBA)、应用程序员(Application Programmer)和最终用户(End User)。关于这些人员的具体解释如下。
(1)数据库管理员。负责管理和维护数据库,参与数据库的设计,测试和部署。数据库管理员需委对数据库系统非常精道,且应具有较高的技术水平和较深的资历。
(2)应用程序员。负贵为最终用户设计和写程序,并进行调试和安装,以便最终用户利用应用程序来对数据库进行存取操作。
(3)最终用户。一般为非计算机专业人员,通过应用程序访问数据库。例如,在 12306网站订票的用户,在一些购物网站购买商品的用户,他们可能对数据库完全不了解,在使用浏览器、客户瑞等应用程序时,间接地访问了数据库。
1.1.4 数据模型
数据库的类型通常按照数据模型(Data Model)来划分。数据模型是数据库系统的核心和基础,它是对现实世界数据特征的抽象,用来描述数据,可以理解成一种数据结构。在数据库的发展过程中,出现了3种基本数据模型,分别是层次模型(HierarchicalModel),网状模型(Network Model)和关系模型(Relational Model)。目前使用最多的数据模型是关系模型,建立在关系模型基础上的数据库称为关系数据库。本书讲解的 MySQL就是一个关系数据库管理系统。若要理解关系模型,首先应该掌握一些理论知识,下面进行详细讲解。
1.数据建模
数据建模是对现实世界中的各类数据的抽象组织,以确定数据库的管辖范围、数据的组织形式等。数据建模大致分为3个阶段,分别是概念建模阶段,逻辑建模阶段,物理建模阶段,相应的产物分别是概念模型,逻辑模型和物理模型,具体如图 1-6所示。
在图1-6中,概念模型是现实世界到机器世界的中间层,它将现实世界中的客观对象(如学生,班级,课程)抽象成信息世界的数据。逻辑模型是指数据的逻辑结构,可以选择层次模型,网状模型或关系模型。在完成逻辑模型后,最后使用物理模型描述数据如何进行实际存储,也就是将逻辑模型转换成计算机能够识别的模型。
2.概念模型的术语
在概念模型中可以通过一些术语来对现实世界进行抽象,具体如下(1)实体(Entity)。实体是指客观存在并可相互区分的事物,如学生,班级、课程(2)属性(Attribute)。属性是指实体所具有的某一特性,一个实体可以由若干个属性来描述。例如,学生实体的属性有学号,学生姓名和学生性别。属性由两部分组成,分别是属性名和属性值。例如,学号,学生姓名和学生性别是属性名,而“1,张三,男"这些具体值是属性值。
(3)联系(Relationship)。这里所说的联系是指实体与实体之间的联系,有一对一、对多,对多对三种情况。例如,每个学生都有一个学生证,学生和学生证之间是一对一的联系:一个班级有多个学生,班级和学生是一对多的联系:一个学生可以选修多门课程,一门课程又可以被多个学生选修,学生和课程之问就形成了多对多的联系。
(4)实体型(Entity Type)。实体型即实体类型,通过实体名(如学生)及其属性名集合
(如“学号,学生姓名,学生性别”)来抽象描述同类实体。(5)实体集(Entity Set)。实体集是指同一类型的实体集合,如全校学生就是一个实体集。
3.E-R 图
E-R 图也称为实体-联系图(Entity Relationship Diagram),是一种用图形表示的实体联系模型,由 Peter Chen 于 1976年提出。E-R图提供了表示实体型,属性和联系的方法,用来描述现实世界的概念模型。其通用的表示方式如下。
实体:用矩形框表示,将实体名写在框内。”属性:用椭圆框表示,将属性名写在框内,用连线将实体与属性连接,”联系,用菱形框表示,将联系名写在框内,用连线将相关的实体连接,并在连线旁标注联系类型(-0对-“1:1”、一对多“1:"”,多对多“":m”)下面演示学生与班级,学生与课程的 E-R图,分别如图 1-7 和图 1-8 所示从图 1-7 和图 1-8 中可以看出,E-R图接近于普通人的思维,即使不具备计算机专业知说,也可以理解其表示的含文。
4.关系模型
关系模型由 IBM 公司研究员 Edgar Frank Codd 于 1970 年发表的论文中提出,经过多年的发展,已经成为目前最常用,最重要的模型之一。
在关系模型中有一些基本的概念,具体如下。
(1)关系(Relation)。关系一词与数学领域有关,它是集合基础上的一个重要的概念。用于反映元素之间的联系和性质。从用户角度来看,关系模型的数据结构是二维表,即通过二维表来组织数据。一个关系对应一张二维表,表中的数据包括实体本身的数据和实体问的联系。
下面通过图 1-9 演示一个简单的学生信息二维表。
(2)属性(Attribute)。二维表中的列称为属性,每个属性都有一个属性名
(3)元组(Tuple)。二维表中的每一行数据称为一个元组。小提示:根据不同的习惯,属性也可以称为字段(Field),元组也可以称为记录( Record)
(4)域(Domain)。城是指属性的取值范围,例如,性别属性的域为男、女。
第1章 数据库入门
(5)关系模式(Relation Schema)。关系模式是关系的描述,通常可以简记为“关系名(属性 1,属性 2.…,属性 )”。例如,图 1-9 中的二维表的关系模式如下。
学生学号,姓名,性别,出生年月)
(6)键(Key)。在二维表中,若要唯一标识某一条记录,需要用到锉(又称为关键字码)。例如,学生的学号具有唯一性,学号可以作为学生实体的键。而学生姓名可能存在重名,不适合作为键。通过键可以为两张表建立联系,如图1-10 所示。
在图 1-10中,班级表中的"班级号”是该表的键,学生表中的“班级号"表示学生所属的班级,两者建立了一对多的联系,即一个班级中有多个学生。其中,班级表的"班级号"称为主键(Primary Key),学生表的"班级号"称为外键(Foreign Key)。学生与课程的多对多联系,可以通过中间表来实现,如图 1-11 所示
在图1-11中,学生表与课程表之间通过学生选课表关联。学生选课表将学生与课程的多对多关系拆解成两个一对多关系,即一个学生选修多门课,一门课被多个学生选修。