1 数据库基本概念
1.1数据库和数据库管理系统
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
从数据库管理系统的定义可知,数据库是数据库管理系统的子集
。
1.2 数据库系统和文件系统
设计数据库系统的目的是为了管理
大量信息。那为什么我们有文件系统了,可以放数据了,为啥还要用到数据库呢?这就要讨论它们的区别了。
在早期的计算机中,保存信息的方法是将它们保存在操作系统文件中。为了使用户可以对信息进行操作,系统中应该有一些对文件进行操作的应用程序。这个谈到的应用程序不是我们说的QQ啊,网易云啊这种程序,而是针对某种功能设计的特殊程序。比如大学学生管理系统中增加新的学生、教师和课程;为课程注册学生,并产生班级花名册。这些应用程序都是由系统程序员根据大学的需求编写的。
也就是说,当我们追求越完美的学生管理系统,所需要的文件和应用程序可能就越来越多。而这似乎有一些弊端。
也就是说,我们使用数据库管理系统的优点即为文件系统的缺点。
1.3 数据模型
在讲解这一部分之前,我们需要对几个概念有些许了解。
实际上,如果学过数据结构,就可以很轻松地了解以上的概念。你也可以这么理解:数据模型相当于编程语言,比如C++,Java等,数据模式就是用对应的编程语言写出来的软件。
目前数据库中主流的数据模型是关系数据模型,在数据库原理的课程中一般都是围绕关系数据模型作为讲解。数据模型可以分为以下四类:
1.4 数据库三级模式和两级独立性
1.4.1 三级模式
三级模式指的是:许多视图
、简单的概念(逻辑)模式
和物理模式
。这和Java中的MVC设计框架
有点类似。
表只是一个逻辑概念,也就是我们说的概念模式
;那么表在磁盘上会怎么存呢?比如说学生基本信息表,你是用一个堆文件来存,还是用一个哈希文件来存,还是用一个簇集,这都是取决于我们用什么结构来存,而存法,就是physical Schema(物理模式)
。概念模式,就是我们刚刚说的表,表的结构是什么,属性有多少,长度如何,这就是概念模式,我们把概念模式里的表叫做基表,基表是用真正的某种结构存储在磁盘上的。而外模式(视图),是通过对基表的改造,来呈现不同的样子给用户看,不同权限的用户看到的视图是不一样的。
举个例子,如果拿大学数据库的例子来说明上面的三级模式的话:
基表是真真实实存在的,他的数据显式地存储在数据库中,或者换一种说法就是,你当时存的时候什么样基表就长什么样。
而虚表是仅有逻辑定义,可以根据其定义从其他表(包括视图)中导出,但不作为一个表显式地存储在数据库中。换一种说法就是,比如你数据库里面已经有个基表了,然后我通过某些要求过滤了一些条件,查询出来的表就是虚表,虚表实际上不存在数据库里,他只是通过一些计算和逻辑语言提取出来的。
当基表的模式修改时,通过定义适当的视图,仍可以为用户提供修改前的数据模式,避免修改应用程序,从而有利于提高数据的逻辑独立性。也就是说,即使你基表改了,但是为了视图还是和以前一样,我们可以在基表的基础上做一些其他的操作,使他改变操作后算出来的虚表和之前没改的虚表一模一样。
1.4.2 二级映像功能
数据库管理系统的三级模式对应数据库中数据的三个抽象级别。为了能够在数据库内部实现这三个抽象层次的联系和转换,数据库系统提供了三级模式之间的两层映像
。
两层映像指的是外模式/模式映像
和模式/内模式映像
。
1.4.3 数据独立性
实际上对于应用程序来说,其可以不在意数据库中的数据是怎么存放的,这是由于数据库中的数据具有数据独立性。
数据独立性是DBMS最大的好处之一。因为文件系统是没有这样的优点的。
1.5 数据库发展历史及分类
发展历史我觉得几个特别的需要记住,其他的就算了。
- 1964年,第一个DBMS:美国通用电气公司Bachman等人开发的IDS,采用网状数据模型。
- 1969年,IBM公司推出了IMS,采用层次数据模型。
- 1970年,E.Fcodd(IBM)提出了关系数据模型,以关系(表)作为描述数据的基础。
如果根据DBMS的发展历史来分类的话,如下:
根据数据库架构的话可以分为以下两种:
C/S架构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个: 只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。
1.6 数据库系统的组成和生命周期
1.6.1 三个概念
在最开始的时候我们提到数据库是数据库管理系统的一个子集,对于很多人来说,数据库、数据库管理系统、数据库系统三个概念常常容易混淆,这里给出三者定义方便做对比:
1.6.2 生命周期
数据库和软件一样,也有一个生存周期,它包含下列五个阶段。
-
数据库系统的规划
它包含系统的应用和功能的确认、应用环境的分析、DBMS及其支持环境的选择和配置、人员的配置和培训以及投资估算和效益分析等活动。
-
数据库设计
数据库设计实际上主要是数据的表示方法和存储结构的设计。
-
数据库建立
-
数据库的运行、管理和维护
数据库投入运行后,还必须监视和调优其性能,听取用户的反馈,必要时对数据库做相应的调整
-
数据库的扩充和重构
一个单位的组成、结构和功能是会变化的,其对应的数据模式也须做相应的改变。
1.6.3 存储管理器
存储管理器负责数据库中数据的存储、检索和更新,其和文件管理器进行交互,原始数据通过操作系统提供的文件系统存储在磁盘上。
存储管理器一般包括以下几类:
存储管理部件 | 说明 |
---|---|
权限及完整性管理器 | 它检测是否满足完整性约束,并检查视图访问数据的用户的权限 |
事务管理器 | 它保证即使发送了保障,数据库也保持在一致的状态,并保证并发事务的执行不发生冲突 |
文件管理器 | 它管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构 |
缓冲区管理器 | 它负责将数据从磁盘上取到内存来,并决定哪些数据应该缓冲存储在内存中 |
存储管理器还实现了一些数据结构,可以作为系统物理实现的一部分:
数据结构 | 说明 |
---|---|
数据文件 | 存储数据库自身 |
数据字典 | 存储关于数据库结构的元数据,尤其是数据库模式 |
索引 | 用于提供对数据项的快速访问,在MySQL中一般采用B+树索引 |
1.7 数据库用户和管理员
使用数据库的人员一般分为数据库用户
和数据库管理员
。
举个简单的例子,我们要登录QQ,那么在登录界面当你输入账号密码后,后端马上会去数据库寻找关于你的数据,一旦找到了就通过登录。那么作为登录用户,你就是数据库用户
;而对于后台管理数据库的人来说,它要设计你所在数据库中对应的表,还有负责一系列优化、并发、恢复工作,这类人就叫数据库管理员
,即DBA。
DBA主要的作用如下:
作用 | 说明 |
---|---|
模式定义 | DBA利用DDL来书写关于表的定义 |
存储结构以及存取方式的定义 | |
模式和物理组织的修改 | DBA设计模式来适应不同的需求,并且选择不同的物理结构来提高性能 |
数据访问授权 | 对不同类型的权限,DBA可以给不同权限看不同的视图 |
日常维护 | 主要是定期备份、监视磁盘空间、监视数据库运行 |