一、背景
1. 为什么学习数据库?
- 计算机其实就是存储/IO/CPU三大件
- 计算包含两个东西:数据与算法
database=SQL?
2. 数据库历史
- IMS层次数据库
- 网状数据库:不适合集合查询
- 关系型数据库(主要介绍)
二、引言
1. 什么是数据库?
数据(Data)
数据库(DB)
数据库管理系统(DBMS)
数据库管理系统(DataBase-Management System, DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合通常称作数据库(database),其中包含了关于某个企业的信息。 DBMS的主要目标是要提供一种可以方便、高效地存取数据库信息的途径。
数据库系统(DBS)
2. 数据库存在的价值?
- Data redundancy and inconsistency(冗余与不一致性)
- Difficulty in accessing data (获取数据困难)
- 对于每个任务需要编写新的程序
- Data isolation (数据孤岛)
- 数据与数据间不互通
- Integrity problems (完整性问题)
某些数据天然有限制条件(如,银行卡余额大于0),这些限定应该加到数据本身,而使用文件管理系统只能用代码进行约束
3.使用文件系统存储数据的缺点
- 更新原子性
- A给B 50,A减少但B未增加,凭空损失50
- 多用户并发访问
- 多个用户同时访问相同数据项资源时,用户不应该感受到其他用户也在访问
- 安全问题
- 让用户访问数据,但并不是访问所有数据,(例如,查询成绩只能查询自己的)
4. 抽象(三层)
(由下至上)
物理层(Physical level)
最低层次的抽象,描述数据实际上是怎样存储的。物理层详细描述复杂的底层数据结构。
链式存储,线性存储
逻辑层(Logical level)
比物理层层次稍高的抽象,描述数据库中存储什么数据及这些数据间存在什么关系。这样逻辑层就通过少量相对简单的结构描述了整个数据库。虽然逻辑层的简单结构的实现可能涉及复杂的物理层结构,但逻辑层的用户不必知道这样的复杂性。这称作物理数据独立性( physical data independence)。数据库管理员(DBA)使用抽象的逻辑层,他必须确定数据库中应该保存哪些信息
视图层(View level)
视图层(view level)。最高层次的抽象,只描述整个数据库的某个部分。尽管在逻辑层使用了比较简单的结构,但由于一个大型数据库中所存信息的多样性,仍存在一定程度的复杂性。数据库系统的很多用户并不需要关心所有的信息,而只需要访问数据库的一部分。视图层抽象的定义正是为了使这样的用户与系统的交互更简单。系统可以为同一数据库提供多个视图。
提供窗口,每个用户通过视图访问对应数据
5. 实例与模式
- 实例(Instances):指特定时刻存储在数据库中的信息的集合
- 模式(Schemas):指数据库的总体设计
- 模式相当于编程语言中的变量,int i;i=5;
- 物理模式(physical schemas):在物理层描述数据库的设计
- 逻辑模式(logical schemas):在逻辑层描述数据库的设计。程序员使用逻辑模式来构造数据库应用程序
- 子模式(subschemas):描述了数据库的不同视图
- 物理数据的独立性
6. 数据模型
- 定义:描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。
- 常用的数据模型:关系模型、E-R模型、半结构化数据模型、基于对象数据模型是主要的常用的数据模型
关系模型
在关系模型中,数据以表的形式表示。每个表有多个列,每个列有唯一的名字,表的每一行表示一条信息。