Pixiv - KiraraShss
database-01-引言
6016 字
30 分钟
database-01-引言
数据库系统原理
引言
2026
阅读指南
本文和教材的内容顺序不完全一致,且含部分教材以外内容,有如下标注:
- 标题末尾的
§x.x.x表示对应的教材章节- 章节号如出现
0,表示相关补充内容 - 如
§1.2.0.1表示:第1章第2节的补充内容的第1点
- 章节号如出现
- 标题后出现
*表示:- 该小节应“了解”,但无需“掌握”
讲在前言的前面§1.0
这门学问的特点和定位§1.0.1
- 理论型?
- 关系数据库理论 — 实际上是数学
- 效率问题 — 很多理论空间:hash、map……
- 数据挖掘
- ……
- 应用型?
- 搜索引擎 — Google、Baidu、几乎所有网站
- 管理信息系统 — MIS、ERP……
- 所有涉及到数据管理的领域的重要平台
- 遗憾的是,少见能够把数据库结构设计做得很漂亮的人
各位在这门学问中的定位§1.0.2
- 毕业需要
- no pass no degree ?
- 工作需要
- 广泛的应用范围,导致了它广泛的实用价值
- 可操作性强
一点建议§1.0.3
- 认清自己的目标
- 兴趣是最好的老师
- 如果没有兴趣……
- 方法建议
- 基本概念要理解而不是记忆
- 要知所以其然而不是仅仅知其然 → 举一反三
- 练习: 自己动手才有效果
- 实践、实践、实践
- 重复一遍对大家有好处:实践、实践、实践
- 基本概念要理解而不是记忆
数据库系统的历史* §1.9
FAILUREis the mother ofSUCCESSNECESSITYis the mother ofINVENTION
NECESSITY is the mother of INVENTION§1.9.0
- 需求:数据管理和处理任务
- 数据管理
- 对数据进行分类、组织、编码、存储、检索
- 数据处理
- 对数据进行收集、存储、加工、传播
- 数据管理
- 两次数据危机
- 20世纪60年代
- 美国陆地卫星,阿波罗计划等催生了数据库系统。
- 80-90年代
- 人类基因组计划,web数据大量增加等促成了数据挖掘技术的产生。
- 20世纪60年代
几个具有代表意义的事件* §1.9.0
Ted Codd
Turing Award 1981
- 1969 IBM IMS 层次数据库
- 60年代末到70年代初的CODASYL下的DBTG 网状数据库模型
- 1970 E.F.Codd. “大型共享数据库数据的关系模型” 关系数据库模型
- 80年代中期以后,对象-关系模型
20世纪50年代和60年代初* §1.9
- 数据处理使用磁带进行存储
- 磁带仅提供顺序存取(sequential access)
- 打孔卡带
20世纪60年代末和70年代* §1.9
- 硬盘:允许直接访问(direct access)数据
- 网状和层次数据模型
- Ted Codd 提出了关系(relational)数据模型
- 凭借这项工作获得ACM图灵奖
- IBM 研究院启动 System R 原型
- 加州大学伯克利分校开始Ingres prototype
- 高性能事务处理
20世纪80~90年代* §1.9
- 80年代
- 关系原型演变为商业系统
SQL成为行业标准
- 并行和分布式数据库系统
- Wisconsin, IBM, Teradata
- 面向对象的数据库系统
- 关系原型演变为商业系统
- 90年代
- 大型决策支持(decision support)和数据挖掘(data-mining)应用程序
- 数据仓库:大型TB级数据
- 网络/电子商务登场
21世纪00~10年代* §1.9
- 00年代
- Big data storage systems
- Google BigTable, Yahoo PNuts, Amazon
- “NoSQL” systems.
- Big data analysis: beyond SQL
- Map reduce and friends
- Big data storage systems
- 10年代
- SQL 前端到 Map Reduce
- 大规模并行数据库系统
- 多核主内存数据库
数据库系统应用§1.1
应用行业§1.1
- 企业信息管理
- 销售:客户、产品、采购
- 会计:付款、收款、资产
- 人力资源:有关员工、工资、工资税的信息
- 制造业:生产、库存、订单、供应链管理
- 银行和金融业
- 客户信息、账户、贷款和银行交易。
- 信用卡交易
- 金融:金融工具(如股票、债券)销售和购买; 实时市场数据存储
- 大学: 注册, 成绩管理
- 航空业:预订、时刻表
- 电信业:记录通话,短信和数据使用,生成月度账单,维护预付费电话卡的余额
- 在线服务
- 在线零售商:订单跟踪,个性化推荐
- 在线广告
- 文档数据库
- 导航系统
- 不同景点的位置及道路,火车系统,公共汽车路线……
应用方式§1.1
实际应用中最常见的数据库使用方式有两种
- 联机事务处理 / OnLine Transaction Processing
- 并发量大、请求频次高
- 单次请求数据量小、响应时间短
- 一般是日常业务,如:收银
- 联机数据分析 / OnLine Analytics Processing
OnLine Data Analytics- 并发量小、请求频次低
- 单次请求数据量大、响应时间长
- 一般是汇总分析,如:年终汇总、决策支持、数据挖掘
数据库系统的目标§1.2
数据管理-人工阶段§1.2
[ 环境条件 ] |---|---| |时间|20世纪50年代中期前| |硬件|外存:卡片、纸带、磁带| |软件|汇编语言| |处理方式|数据批处理|
- 数据不进行保存
计算时输入,用完撤走 - 没有专门的数据管理软件
程序自己管理存储结构、存取方法、输入方式…… - 数据不共享
程序之间无统一定义 - 数据不独立
数据存储或逻辑结构变化将导致程序变化
数据管理-文件系统阶段§1.2
[ 环境条件 ] |—|--------| |时间|20世纪50年代末到60年代中期| |硬件|磁盘.磁鼓等直接存取的外存设备| |软件|操作系统、高级语言、OS中的文件系统是专门用于数据管理的软件(DOS)| |处理方式|文件批处理、联机实时处理|
- 数据可长期保存
文件系统管理数据 - 数据共享性差,冗余大
不同应用,对文件数据结构定义不同 - 数据存储结构独立性得到实现
程序不需关心具体物理设备差异 - 数据逻辑结构独立性差
逻辑结构变化将导致程序变化
文件系统在数据管理上的问题§1.2
- 数据
冗余(redundancy)和不一致(inconsistency)- 多种文件格式、不同文件中的信息重复
- 访问数据困难
- 需要编写新程序来执行每个新任务
- 数据孤立(
isolation) — 多个文件和多种格式 - 完整性(
Integrity)问题- 完整性约束(例如,帐户余额> 0)在程序代码中变得“埋没”,而不是明确说明
- 难以添加新约束或更改现有约束
- 更新的
原子性(Atomicity)- 故障可能会使数据库处于与执行部分更新不一致的状态
- 示例:资金从一个账户转移到另一个账户应该完成或根本没有发生
- 多个用户并发访问
- 性能所需的并发访问
- 不受控制的并发访问可能导致不一致
- 示例:两个人读取余额(假设100)并通过同时取款(假设每个50)
- 安全问题
- 很难为用户提供对某些(但不是全部)数据的访问权限
数据管理-数据库系统阶段§1.2
[ 环境条件 ] |---|---| |时间|20世纪60年代后期| |硬件|大容量的磁盘(硬件价格下降)| |软件|软件开发成本提高(冗余的工作显得昂贵)| |处理方式|联机实时处理|
- 数据结构化
- 共享性高,冗余小,易扩充
- 数据独立性高
- 由DBMS统一管理控制
数据库系统§1.3.0
数据库管理系统/DBMS- 相关数据的集合 (
数据库/Database/DB) - 用于存取这些数据的程序的集合
- 一个能够方便高效使用的环境
- 相关数据的集合 (
- 被DBMS管理的数据有以下特点:
- 高价值
- 数据量较大
- 经常被多个用户或程序同时访问
- 现代的数据库系统/DBS 是一个复杂的软件系统,目的是管理大量的、复杂的数据集合
- 数据库触及我们生活的方方面面
数据视图/View of Data§1.3
数据库系统是相互关联的数据和一组允许用户访问和修改这些数据的程序的集合
数据库系统应该给程序提供数据的抽象视图
View of Data -概念,逻辑,符号系统§1.3.0
- 概念决定论
- “所有答案都在定义中”
- 概念是基石,不同的概念导致不同的理论,所以概念很重要!
- “符号”“符号系统”“归纳化→概念化→抽象化”
- 逻辑
- 本能?理智?感性?希尔伯特vs哥德尔定理
- 对角线原理、皇帝新脑、人工智能、逻辑……(命题:悖论问题)
定义数据库系统 – data,DB,DBMS,DBS§1.3.0
- 数据(
Data)- 数据:描述事物的符号记录
- 语义(semantic):数据的含义(实际的价值和意义)
- 价值→价值判断(立场)
- 数据库(
Database,DB)- 数据集合:长期储存、有组织、可共享
- 小冗余、高独立性、易扩展
- 数据库管理系统(
DBMS)- 数据组织、存储、管理
- 数据定义(DDL), 数据操纵(Data Manipulation Language)
- DB的事务和运行管理:安全性、完整性
- DB的建立和维护(一些实用程序)
- 数据库系统(
DBS)- 硬件→OS→DBMS→应用程序
模型、数据模型§1.3.1.0
🙈🙉🙊
模型(Model):
现实世界特征的模拟和抽象- 模型就是世界观 → 建模过程就是形成世界观的过程
数据模型(Data Model):
现实世界数据特征的模拟和抽象- 数据模型就是计算机系统的世界观
逻辑模型:按计算机系统的观点对数据的建模,主用于DBMS的实现,如:层次、网状、关系等。物理模型:对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法。
数据模型-基本概念§1.3.1
数据模型是用于描述以下内容的概念工具集合:
- 数据 (data)
- 数据之间的关系(relationships)
- 数据的语义(semantics)
- 数据的一致性约束(integrity constraints)
数据模型-要求和要素§1.3.1.0
- 数据模型三要求
- 真实模拟(现实世界)
- 容易(为人)理解
- 便于(在计算机上)实现
- 数据模型三要素
- 数据结构(静态特性)
- 所研究的对象类型的集合
- 一类描述对象的类型、内容、属性
- 一类描述对象之间的的联系
- 数据操作(动态特性)
- 对各种对象的实例允许进行的操作的集合
- 完整性约束
- 完整规则的集合
- 数据结构(静态特性)
常见数据模型§1.3.1
- 关系模型(Relational model)
- 实体-联系模型(Entity-Relationship)
- 主要用于数据库设计
- 基于对象的模型(Object-based)
- 面向对象(Object-oriented)和对象关系(Object-relational)
- 半结构化数据模型 (XML)
- 其他老模型:
- 网状模型/Network model
- 层次模型/Hierarchical model
关系模型-直观感受§1.3.2
所有数据存放在多个 表(table)中,如:
[instructor]
| ID | name | dept_name | salary |
|---|---|---|---|
| 22222 | Enstein | Physic | 95000 |
| 45565 | Katz | Comp. Sci. | 75000 |
| 33456 | Gold | Physic | 87000 |
| 15151 | 张三 | 法律 | 44444 |
[department]
| dept_name | building | budget |
|---|---|---|
| Comp. Sci. | Taylor | 100000 |
| Physic | Waston | 70000 |
| 法律 | Taylor | 50000 |
层次模型(Hierarchical Model)* §1.3.2.0
层次模型-要素* §1.3.2.0
- 数据结构(Structure)
- 树(Tree)
- 全路径(Full path) ➔ 全语义(Full semantics)
- 数据操作和完整性约束(Operations & Constraints)
- (除根外)插入必须有双亲结点
- 删除必须删除所有子女结点
- 使用冗余结点时,修改要保证一致性
层次模型-优缺点* §1.3.2.0
- 优点
- 数据结构简单清晰
- 查询效率高
- 良好的完整性支持
- 缺点
- 多对多的表示困难
- 插入和删除的限制较多,编程困难
- 查询子女必须经过双亲,全路径全意义,所以操作命令需要程序化
Hierarchical model : type & value* §1.3.2.0
型:type
系
- 教研室
- 教员
- 学生
值:value
计算机系
物理系
计算机系/教研室-网络/龙傲天
- 教研室-数据库
- 教员-张三
- 教员-龙傲天
- 教研室-网络
- 教员-龙傲天
- 教员-陈芝豹
- 学生-笛卡尔
- 学生-龙傲天
- 教研室-X
- 教员-Y
- 学生-X
逻辑层:如何表示多对多* §1.3.2.0
层次模型善于表示树状结构,但表示“多对多”困难
比如:有两个学生,两门课程,学生1选了课程1、2;学生2选了课程1
Many to Many: Redundant Nodes* §1.3.2.0
学生1选了课程1、2;学生2选了课程1
root
- 学生1张三No.123
- 课程1数据库No.666
- 课程2C++No.888
- 学生2李四No.456
- 课程1数据库No.666
- 课程1数据库No.666
- 学生1张三No.123
- 学生2李四No.456
- 课程2C++No.888
- 学生1张三No.123
- 浪费空间
- 修改复杂
- 删除异常
Many to Many: Virtual Nodes* §1.3.2.0
- 节约空间
- 修改容易
- 删除异常
物理层:如何存储“一棵树”* §1.3.2.0
层次模型的逻辑结构是典型树结构
内存或文件的逻辑结构是典型的“一维数组”(字节序列)
“树”结构如何存放到“一维”结构中呢?
邻接法
树➔内存(文件)
ABDEGCF
内存(文件)➔树
ABDEGCF
邻接法➔新增节点
ABDHEGCF
链接法
网状模型(Network Model)* §1.3.2.0
网状模型-要素* §1.3.2.0
课程
学生
选课记录
R1
R2
R1
R2
R3
R4
R5
- 数据结构(Structure)
- 无环有向连通图
- 允许一个以上的节点无双亲
- 一个节点可以有多于一个的双亲
- 允许两个节点间有多个联系(连线)
- 数据操作和完整性约束(Operations & Constraints)
- 删除必须删除所有子女结点
- 一个联系中双亲和子女间是一对多
网状模型-优缺点* §1.3.2.0
- 更真实的模拟
- 良好的性能
- 结构复杂
- DDL,DML语言复杂
数据抽象层次Data Abstraction Level§1.3.3
物理层Physical level- 最低层次抽象,描述数据在“物理设备”中的存储结构
- 又名:
内模式(Internal schema),存储模式(Storage schema)
逻辑层Logical level- 中层抽象,描述在“逻辑设备(数据库)”中的存储结构
- 又名:
模式(Schema),概念模式(Concept schema)
type instructor = recordID : string;name : string;dept_name : string;salary : integer;end;视图层View level- 提供给应用的抽象描述,模式的子集,有重命名能力(昵称)
- 又名:
外模式(External schema),子模式(Subschema)
- 数据库系统(DBS)的三个抽象层
- DBS的物理设备是文件,一个DB只能有一种内模式(存储方式)
- DBS的逻辑设备就是DB,一个DB只能有一种模式(逻辑结构)
- 一个DB可以有多个外模式(视图)供程序使用
实例和模式Instances and Schemas§1.3.4
类似编程语言中的类型和变量
模式(schema) DB中全体数据的逻辑结构和特征的描述,仅仅涉及到型(type)的描述,不涉及到具体的值(value)- 外模式External schema: 描述数据库在视图层的结构
- 逻辑模式Logical Schema: 描述数据的完整逻辑层结构
- 类似于程序中变量的类型信息,或“类的定义”
- 示例:数据库包含有关银行中一组客户和帐户的信息以及它们之间的关系
- 物理模式Physical schema :描述数据的完整物理层结构
实例(Instance) 模式的一个具体值,数据库某一时刻的具体内容- 类似程序中变量的值(value),或“类的实例”
三级模式(schema)/两级映射(map)§1.3.4
应用程序依赖于数据的外模式,外模式依赖逻辑模式
| 应用 | 程序逻辑、UI | |
| 外模式:程序接口 | DBMS | |
| 映射:模式/外模式 | ||
| 模式:逻辑结构 | ||
| 映射:内模式/模式 | ||
| OS | 内模式:文件存储 | |
| 存储:硬盘、U盘 |
- 数据
物理独立性Physical Data Independence- 能做到修改物理模式不引起逻辑模式的变化,就可不改程序
- 即实现数据的物理独立性
- 数据
逻辑独立性Logical Data Independence- 能做到修改逻辑模式不引起外模式的变化,就可不改程序
- 即实现数据的逻辑独立性
- 相邻层模式之间可
映射(map)转换- 某层模式改变,如可通过调整转换映射使得相邻层模式不用改变,即可实现相应的独立性
数据库语言/Database Languages§1.4
数据定义语言/Data Definition Language(DDL)§1.4.1
- 用于定义数据库模式(database schema)
create table instructor (ID char(5),name varchar(20),dept_name varchar(20),salary numeric(8,2));
- DDL定义的模式存储在
数据字典(data dictionary)中 - 数据字典包含“
元数据(metadata)” - 描述数据的数据- 数据库模式(Database Schema)
- 完整性约束(Integrity constraints)
- 域约束(domain constraints) - 类似数据类型,如:整数、字符串…
- 引用完整性(referential integrity) - 不能引用不存在的东西
- 授权(Authorization) - Who can do what on what
数据操纵语言Data Manipulation Language(DML)§1.4.3
- 访问和修改数据库中的数据的语言
- Query, Insert, Delete, Update
- 涉及到信息检索的部分称作
查询语言(query language)
- DML有两种类型
过程化的/Procedural
需用户指定获取什么数据,以及如何获取声明式的/Declarative(非过程化的/nonprocedural)
只需指定获取什么数据,不必指明如何获取
- SQL 是最常用的DML
应用程序访问数据库§1.4.5
- 应用程序需要
- 将DDL、DML发送到数据库系统(Database System)
- 应用程序需要获得DBS的执行结果
- DBS提供API给应用程序调用
ODBC: C,C++,其它一些应用的DB APIJDBC: java
数据库及应用体系结构/Database and Application Architecture§1.7
数据库结构
- Centralized databases
- One to a few cores, shared memory
- Client-server
- One server machine executes work on behalf of multiple client machines.
- Parallel databases
- Many core shared memory
- Shared disk
- Shared nothing
- Distributed databases
- Geographical distribution
- Schema/data heterogeneity
数据库应用的结构
应用程序
application
application
通信/communicate
数据库管理系统
DBMS
DBMS
Database applications are usually partitioned into two or three parts
Two-tierarchitecture
the application invokes database system functionality directly
客户端程序
application client
application client
通信/communicate
服务端程序
application server
application server
数据库管理系统
DBMS
DBMS
Three-tierarchitecture the client acts as a front end and does not contain any direct database calls- The client communicates with an server, usually through a forms interface
- The server in turn communicates with a database system to access data
数据库的用户和管理员/Database Users and Administrators§1.8
- 简单用户/naive users
- 售货员、出纳……
- 通过程序界面完成日常业务
- 复杂用户/sophisticated users
- 决策层、分析员……
- 使用查询工具获取决策分析数据
- 应用程序员/application programmers
- 使用开发工具根据外模式设计编写程序模块、调试……
- 数据库管理员/Database Administrator(
DBA)- 设计逻辑模式/Schema definition
- 设计存储结构和存取策略/Storage structure and access-method definition
- 定义安全性要求/Granting of authorization for data access
- 日常维护/Routine maintenance
- 监控DB的使用和运行/Monitoring jobs running on the database
- 确保DB有足够的存储空间/Ensuring enough free disk space
- 周期备份/Periodically backing up the database
- DB的改进和重组重构
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
database-01-引言
https://meteorfate-github-io.pages.dev/posts/01-引言/ 相关文章 智能推荐
1
database-03-SQL介绍
database lue
2
database-02-关系模型介绍
database lue
3
database-06-形式化关系查询语言
database lue
4
Firefly 代码块示例
文章示例 在Firefly中使用表达性代码的代码块在 Markdown 中的外观。
5
Firefly 布局系统详解
博客指南 深入了解 Firefly 的布局系统,包括侧边栏布局(左侧/双侧)和文章列表布局(列表/网格),以及自适应网格列数。
随机文章 随机推荐