What is database(数据库)? What is DBMS(数据库管理系统)?
什么是数据库?
大规模的集成的数据集合。
数据库是面向一个企业或者一个单位的相关数据的集合,是用来支持这个企业或者这个应用单位的各种应用的开发的相关数据集合。
数据库起什么作用?
数据库是对现实世界中一个企业或者应用单位的一个建模,现在用计算机做信息化管理,用计算机来管理企业来管理机关或者企事业单位的日常运作。
在数据库中有两类最重要的数据(以学校为例):
- Entity(实体):客观存在的可有形可无形的东西:老师、学生、桌椅板凳、教室、课程、科研项目。
- Relationships(实体间的联系):学生和老师之间有教学关系、有选课关系。
什么是数据模型?
对现实世界进行建模的方法。在描述现实世界中的实体和实体间的联系时采用不同的描述方法就是采用了不同的数据模型。
什么是数据库管理系统(DBMS)?
其实就是一个用来存储和管理数据库的系统软件。
文件和数据库的关系
文件和数据库都可以用来存储数据。文件就是操作系统提供的最简单的最基本的存储数据的机制,在文件里所存的数据就是一个平滑的字符流,它没有结构。文件没有很强的数据管理的功能,它只能create, open, read, write, lseek,像内外存转换、数据缓冲、查询算法都需要用户应用程序自己去做,但DBMS可以帮助你来完成这些东西。
用文件进行数据管理的话,你需要针对单一文件来编写特定的查询代码,文件结构有一点差别,你原来编写的代码就用不了了;用DBMS的话,你只需要告诉它你要什么数据,这个数据怎么来,你不用管。
使用DBMS的话,大量用户的同时的并发访问不会破坏数据库原有数据一致性。
在导入数据时如果遇到停电等意外情况,文件里的数据未及时保存就会丢失,而DBMS会帮助你找回。
数据库系统可以进行更加精细的访问权限管理。
数据库系统就是建立在文件系统之上的,用数据库来进行更加复杂的数据管理。
计算机已经从计算发展到对信息的管理。
scramble to webspace:微博、QQ上有大量的数据,如果不对其进行有效管理,就会把你的电脑搞的乱七八糟。
scientific applications:科学应用,高精尖科学研究中有大量科研数据,帮助科研人员进行数据分析。
datasets(数据集):数据的种类和规模急剧膨胀。
DBMS这样一个系统软件的实现包含了计算机技术发展的绝大多数成果:DBMS要用操作系统、编译、多媒体技术、人工智能、逻辑等等。
数据、数据模型和数据模式
数据是用来描述现实世界的一种符号:描述一张桌子:颜色、材质、长宽高。
数据是信息存在的形式:甲骨文,符号记事。
数据模型是用来描述数据的一种概念和定义,是用来描述现实世界的一种方法。可以理解为python、C++等程序设计语言。
数据模式是用一种给定的数据模型来对一个企业进行描述产生的结果。可以理解为用python、C++编写出的程序。
relational model of data(关系数据模型)
唯一基本数据结构:“关系”:就是表格(table)。
表格中的一行(row)是一条元组,一列(column)是一个属性。
关系型数据库就是由一张一张表组成的,每个表的结构不一样,对表的结构的描述就是schema。比如,学生基本信息是一张表,这张表的结构是什么呢,它是由学生姓名、年龄、家庭地址等等这些属性组成的,每个属性的类型,比如学号,它是一个长度为10的字符串,年龄是一个整数,这些东西就是schema。
数据的抽象级别
三级模式(schema):
第一级模式:物理模式(physical schema)
第二级模式:概念(逻辑)模式(conceptual (logical) schema)
第三级模式:视图(外模式)(View 1 & View 2 & View 3)
physical schema 描述了数据在磁盘上到底是如何存储的,关系型数据库里的一张一张表要存在磁盘上用什么结构来存。数据库中的所有数据,最终是落实到操作系统的文件的,以操作系统的文件形式存在磁盘上,那到底是以什么样的格式存的呢,存储的结构是什么呢,这就是physical schema。一旦你确定了一种结构,课程表用堆文件存,教室工资表用哈希文件存,这些定下来的存储结构就构成了物理模式。
conceptual schema 比如一个关系型数据库中,有什么表,有多少张表,表的结构是什么,每张表每个属性的类型长度是多少,对逻辑结构的描述,就是概念模式。
外模式(External Schema)是给用户看的数据最终的样子。
概念模式和物理模式是一一对应的映射,逻辑模式中有一张表,物理模式中一定对这张表一定有一个存储结构。概念模式中的那些表,我们称之为“基表”,这些表是真正的用某种结构存储在磁盘上的。
而外模式是由概念模式出发,映射出来的不同的视图,根据不同用户或企业的需求来对数据模式的显性形态进行调整。
unordered files:堆文件
数据库管理员不希望用户看到,每个学生选了什么课分数是多少的详细信息,因为这是学生的个人隐私。这种情况下,我就可以做一个视图给外界用户看,这样一个新的视图,是在conceptual schema 中 Enrolled 这张表的基础上计算出来的,这就是映射。
数据独立性(Data Independence)
用于数据开发的应用程序和数据的具体结构和存储方法之间是相互隔离相互独立的,使应用程序在一定程度上不受存储结构和逻辑结构变化的影响。这就是因为上面讲的那个三级模式两级映射,映射关系保证了独立关系。
Logical data independence(数据的逻辑独立性):在数据库基础上研发的应用程序不受数据逻辑结构变化的影响,因为应用程序都是根据external schema而开发的。拿上面那个学校例子来说,Enrolled那张表,改变其逻辑结构,我只要想办法改变Course_info这张表和Enrolled这张表之间的映射关系,保证Course_info视图不变,那么我在Course_info视图基础上开发的应用程序都不受影响。
Physical data independence(数据的物理独立性):在上面学校的例子里,学生基本信息那几张表我们都在磁盘里把他们存成堆文件,在“学号”这个属性上建立一个索引,一旦系统建成后,我在运行系统时,经常要把学生的学号和课程的代码编号拿出来做查询,如果这两个东西没有索引的话,效率会非常低,那么我就要在Enrolled这张表上的sid和cid上增加两个索引。因为数据库的物理模式和逻辑模式间存在这样一种映射关系,那么即使数据的存储结构发生变化,索引增加,但是它不会影响到表格的结构,学生基本信息依旧是由姓名、学号、年龄组成的,逻辑结构没有发生改变,只是多建立了几个索引,存储方式变了。
这就是数据库的三级模式两级映射两级独立性。
数据库的历史
数据模型(data model)是数据库系统的核心。
数据库系统(Database System)
DBA是负责管理这个系统的管理员,对整个系统的正常运行和维护起到关键作用。
DBMS是数据库系统的核心。
DBMS提供了一个高级的用户访问接口,不像file只能读字节。
DBMS支持有效的查询处理和优化,关系型数据库成为主流数据库的原因。
DBMS支持有效的目录管理(高级接口)。
DBMS提供有效的并发控制和恢复功能,保证大量用户的并发访问,保证数据系统的及时响应和用户获取数据的一致性,当系统软硬件发生故障时不会破坏数据库的一致性。
DBMS支持完整性约束检查,它可以自动的按照用户所定义的一些规则,帮助用户维护数据库里面数据之间的关联关系,保证数据的一致性。
DBMS提供了完善的访问控制,它保证之后合法的经过授权的用户,才能访问他有权访问的数据。
数据库系统的生命周期
- 数据库系统的规划:规划信息系统的边界和规模,看实现这个信息系统需要采用什么架构,是CS架构还是BS架构,服务器应该用什么样的,使用什么操作系统,使用什么样的DBMS产品等等。
- 数据库的设计:如果我决定采用关系型数据库,那么这个数据库里我应该设计成多少张表、表的模式是什么、表和表的联系是什么。
- 创建并加载数据
- 运行管理和维护数据库
- 数据库重构(DBA要干的事)
数据库设计时应综合考虑:
用户的信息需求(Information requirement):用户要在数据库里管理哪些数据。
数据的处理需求(Process requirement):用户想要对数据做一些什么处理。
所用数据库产品的特性(DBMS feature)
所用硬件和操作系统的特性(Hardware,OS feature)