Introduction
数据库的作用
一些基本概念
- Database:长期存储在计算机内,有组织、可共享的数据集合
- DBMS:Database Management System, a software system designed to store, manage, and facilitate access to databases. (由数据库外加一系列文件管理程序组成)
- FPS:File-Processing System, supported by a conventional Operating System. 在数据库出现之前,人们使用FPS管理数据
FPS和DBMS有什么区别?
FPS每次进行操作都需要新建文件,而FPS中的文件是相互独立的,因此长期使用会导致数据冗余、格式不一、数据不互通等问题。
FPS的缺点
- Data redundancy and inconsistency. 数据冗余、不一致(比如,之前存储的数据需要更新,但由于更新是通过新创建新文件实现的,这样会导致新旧数据同时存在,数据不一致)
- Difficulty in accessing data. 每次新增功能都需要编写新的程序
- Data isolation. 不同文件格式不同,检索和共享困难
- Integrity problems. 难以添加新的约束或更改已有约束(因为文件间各式差异很大,导致程序难以对数据实现良好的约束)
- No atomicity of updates.
- Difficult to concurrent access by multiple users.
- Security problems.
DBMS的特点
数据库可以解决上面FPS的所有问题
- Efficiency and scalability in data access. 查询和存储是否高效、数据规模增加后是否依旧高效
- Reduced application development time. 降低使用的技术门槛
- Data independence (including physical data independence and logical data independence).
- Data integrity and security. 安全性和一致性
- Concurrent access and robustness (i.e., recovery). 同时访问(比如,两个用户同时操作数据库中的某个数据时该如何管理)、可靠性
- Atomicity. 原子性。可以实现两个操作不可分割(比如,会计系统里可以规定借方增加时贷方必须减少相同数额)
- Data Persistence. 数据持久
Data
Levels of Data Abstraction
数据抽象的层级由数据库的用途决定,不同的用途需要不同的抽象层级。
- Physical Level:describes how a record is stored. 描述数据如何存储记录,数据具体是如何存储在硬件中的
- Logical Level:describes data stored in database, and the relationships among the data on upper level. 描述数据存储的数据结构
- View Level:view level应用程序可以对用户隐藏信息(因为信息保密的必要)
Schemas and Instances
- Schema:模式,每个层次数据库的结构
- Physical Schema:physical level
- Locical Schema:logical level
- Subschema:view level
- Instance:实例,数据库某一时间真正存储的内容。schema就好比变量的type,而instance就是变量名和取值
独立性
数据库某一层的schema发生改变时,不会对更高层的功能带来影响
- 物理独立性:改变physical schema时,不会对logical schema带来影响
- 逻辑独立性:数据库的逻辑结构发生变化时应用程序不会受到影响
数据建模
Data Model是用于描述数据结构、关系、含义和约束的工具的集合。为了更好地管理数据,我们在设计数据库时需要对其进行建模。不同层级的数据抽象需要不同的数据模型来描述。
数据库语言
数据定义语言DDL
Data Definition Language,用于定义database schema,决定了数据库基本的存储结构、访问方式、静态限制(consistency constrains)等
- Data Dictionary:当DDL编译时,会生成这张表格,其中记录着metadata
- Metadata:data about data,记录数据的数据。记录了数据库的schema、integrity constraints、authorization等
数据操作语言DML
Data Manipulation Language,也叫query language,数据操作语言。用于访问和操作数据,具体有以下功能:
- 检索数据:retrieve data
- 增、删、改:insert, delete, update
DML可以分为如下两类:
- Procedural DML:过程性DML,用户决定需要什么数据以及如何访问这些数据(比如C语言)
- Nonprocedural DML:非过程性DML,用户只需要给出需要的数据即可,不需要给出查询的方式(有SQL、Prolog等)
SQL
SQL = DDL + DML + DCL(Data Control Language,数据控制语言)
数据库设计
数据库设计步骤
- 需求分析
- Conceptual database design:对于数据的高层抽象描述,使用E-R模型(或其他类似的模型)
- Logical database design:将概念设计转化为schema
- Schema refinement:将关系标准化,检查relational schema的冗余性和异常
- Physical database design
- Create and initialize database & security design
E-R Model
Entity-Relationship Model。在概念设计中,需要将真实世界中数据的关系建立为E-R模型
- 实体:指的是一个真实存在的操作主体(比如一个公司、一个账号都是一个实体),实体通过一组attribute(属性)来描述
- 关系:将不同的实体关联起来(规定某账号属于某公司)
Relation Model
将E-R表转化为relational schema,用于将E-R模型转化为具体的数据库结构
Transaction Management
- Transaction:数据库应用程序中执行单个逻辑操作的集合
- Transaction Requirements
- Atomicity
- Consistency:要保证数据操作结束后,数据库中的数据只能从一种平衡状态转移到另一种平衡状态(比如银行的转账系统要保证操作前后所有账户总金额不变)
- Isolation:因为会有concurrent access,为了保证consistency,所以数据间需要有isolatoin
- Durability:保证数据持久存在,不能丢失
Database Architecture
Storage Manager
为数据库中存储在低层级的数据和应用程序间提供接口(interface)的程序模块
Query Processor
查找处理指的是数据库访问用户所需要的数据的过程。包含DDL interpreter、DML compiler和query processing