跳转至

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

数据抽象的层级由数据库的用途决定,不同的用途需要不同的抽象层级。

  1. Physical Level:describes how a record is stored. 描述数据如何存储记录,数据具体是如何存储在硬件中的
  2. Logical Level:describes data stored in database, and the relationships among the data on upper level. 描述数据存储的数据结构
  3. View Level:view level应用程序可以对用户隐藏信息(因为信息保密的必要)

Schemas and Instances

  • Schema:模式,每个层次数据库的结构
    • Physical Schema:physical level
    • Locical Schema:logical level
    • Subschema:view level
  • Instance:实例,数据库某一时间真正存储的内容。schema就好比变量的type,而instance就是变量名和取值

独立性

数据库某一层的schema发生改变时,不会对更高层的功能带来影响

  1. 物理独立性:改变physical schema时,不会对logical schema带来影响
  2. 逻辑独立性:数据库的逻辑结构发生变化时应用程序不会受到影响

数据建模

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可以分为如下两类:

  1. Procedural DML:过程性DML,用户决定需要什么数据以及如何访问这些数据(比如C语言)
  2. Nonprocedural DML:非过程性DML,用户只需要给出需要的数据即可,不需要给出查询的方式(有SQL、Prolog等)

SQL

SQL = DDL + DML + DCL(Data Control Language,数据控制语言)

数据库设计

数据库设计步骤

  1. 需求分析
  2. Conceptual database design:对于数据的高层抽象描述,使用E-R模型(或其他类似的模型)
  3. Logical database design:将概念设计转化为schema
  4. Schema refinement:将关系标准化,检查relational schema的冗余性和异常
  5. Physical database design
  6. 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

  1. Transaction:数据库应用程序中执行单个逻辑操作的集合
  2. Transaction Requirements
    • Atomicity
    • Consistency:要保证数据操作结束后,数据库中的数据只能从一种平衡状态转移到另一种平衡状态(比如银行的转账系统要保证操作前后所有账户总金额不变)
    • Isolation:因为会有concurrent access,为了保证consistency,所以数据间需要有isolatoin
    • Durability:保证数据持久存在,不能丢失

Database Architecture

Storage Manager

为数据库中存储在低层级的数据和应用程序间提供接口(interface)的程序模块

Query Processor

查找处理指的是数据库访问用户所需要的数据的过程。包含DDL interpreter、DML compiler和query processing