一、为什么使用数据库?
与文件存储系统作比较(操作存储在硬盘各个盘符中的文件,这种我们平时使用电脑的方式就是文件存储系统)
- 数据被长期的存储在外存中,状态稳定(这一点双方都一样)
- 数据的逻辑结构与物理结构分离开了(例如在表面上看数据就是以二维表格的形式存储,而在底层是以其他的结构进行存储的)
- 数据库中的数据可以有目的地被多个应用使用(这一点显然使用文件系统是做不到的)
- 数据库可以便捷和高效地进行存取(尤其是查询方面)
二、数据库管理系统 DBMS (Database Management System)
应该把DBMS和数据库本身这两个概念分开,数据库管理系统创建并管理数据库,我们平时使用的大型数据库软件其实就是DBMS,而DBMS本身并不是数据库。
三、关系型数据库的大致结构:
从概念上来说,关系型数据库是基于关系模型上实现的数据库。形象来说,一个关系型数据库中包含若干个表,这些表之间存在各种的关系(例如外键关系等依赖的关系),进入到一个表内:
- 一个表由若干行组成
- 每一行可以称为一条记录或者一个元组
- 一个表是由若干个列组成的,每一个列都规定了列名和取值域以及各种约束。
- 一列可以称为一个字段
- 每一个列都有一个域(domain),每一个域规定了这个字段的取值范围。
具体结构的示意如下图:
四、数据的抽象等级:
数据库中有三种抽象等级,这三种抽象等级组成了数据库中很重要的概念,也具有很强的现实意义。
由内到外依次是: 物理层次 逻辑层次 视图层次
数据的抽象等级对应有了三级模式
如图:
- 先说逻辑层次:逻辑层次就是我们所建立和修改的一个个表,逻辑层次描述了表的内部逻辑结构和各个表之间的关系。例如现在有一个学生信息表,表中有学生的学号、姓名、班级等信息,规定这些属性的取值范围和约束,那么这个就是表的内部逻辑结构。例如现在又有一个学生成绩表,在规定了内部逻辑结构之后,又规定了学生成绩表中的学生姓名必须参考学生信息表中的姓名字段,那么这就是两个表之间的一个关系。综合表的内部逻辑结构和表之间的关系就构成了逻辑层次。
- 视图层次:针对不同的用户,为了安全性可以让具有不同权限的用户看到数据库的一部分数据。而视图层次是数据抽象的最高层次,这个层次描述了数据库的一部分。例如:一个学生访问数据库时,就看不到老师们的信息(例如工资),而老师们就可以。视图层次就是基于逻辑层次进行一定的限制。
- 物理层次:物理层次类似于底层的结构,例如一个表中的各种数据在硬盘中是怎样存储的,当我们设置了一个索引(index)想要加速检索过程时,这个索引如何实现也是属于物理层次的内容。总之物理层次定义了一个复杂的数据库如何被存储在硬盘中
三级模式的运行图:
这里一个个外模式可以是我们程序开发者使用的API对数据库进行操作,也可以是某个技术员查询或录入信息,可以是某个用户请求数据库中的信息,需求不同,所得到的权限和数据就不同。正是因为有这些多种多样的数据库使用需求,才会有变幻多端的外模式。
五、三级模式与两级映射:
正是因为有了三级模式,所以才能实现两级映射,这两个映射可以实现数据库的:物理独立性和逻辑独立性。举个栗子:假如我们改变了底层的存储算法,那么只需要改变 物理层次 -> 逻辑层次 这个映射,就可以保证逻辑层次的结构不需要改变。两级映射使得数据库体系变得很灵活,三个中的一个改变了并不会导致其他都需要进行改变
六、SQL语言的分类:
SQL标准规定了一系列对于数据库的操作。SQL99标准下的分类如图:
对数据库部分总结的规划与展望
这学期对于数据库的学习总体上来说是从基本概念和体系开始,一二章主要就是这些概念与体系的建立,然后之后的三四五章就进入SQL各个部分的学习。从开始的数据库模式、码、模式图、关系运算这些体系和概念开始,到后面的第三、四、五章开始进入具体SQL各部分语法的学习中,也就是说基本上就进入了上图中各部分的具体学习中了。后期的话会涉及到数据库设计的部分