数据库概述
一、数据库基本概念
1.数据库系统
数据库(DB)通常包含企业信息的集合。(存在于硬盘上)
区分DB:业务是否相关
数据库管理系统(DBMS):存储和检索数据(要求方便和高效)(MySQL)
数据库系统(DBS):引入数据库后整个系统(包含DB、DBMS)
DBS 包括 数据库本身的软件(数据库管理系统DBMS、操作系统OS、应用系统)、硬件、数据库管理员
2.计算机硬件
!
OS指操作系统的文件系统
3.使用数据库系统的目的
1.使用文件系统的缺点
a. 数据的冗余和不一致(语言不同导致无法编译)
b.数据访问困难(难以从数据中筛选有用的)
c.数据孤立(格式不同)
d.完整性问题(难以添加约束)
e.原子性问题(难以在更改过程中进行复原)
f.多个用户的并发访存(多个用户同时 更改数据)
g.安全性问题
4.数据视图
数据库系统为用户提供数据的抽象视图,隐藏了数据存储和维护的某些细节
屏蔽复杂性的三个层次:
1.物理层
描述数据是怎么被存储的
2.逻辑层
描述数据库中数据是怎么存储的和数据之间的关系
是描述整个数据库是怎么存储数据的
3.视图层
描述一部分数据库中的数据
!
Secondary Memory:二级存储器(硬盘)
5.模式schema和实例Instance
数据库的模式:数据库的总体设计
模式分为三种模式:物理模式(内模式)(1个)、逻辑模式(1个)、子模式(外模式)(里面可以有多个视图),分别对应三种层次
物理数据独立性:程序员通过逻辑模式来构造应用程序,应用程序不依赖于物理模式,即使物理模式改变,通过改变物理模式和逻辑模式之间的映射来保证逻辑模式不变
逻辑数据独立性:即使逻辑模式改变,也可以保证子模式不变
数据库的实例:特定时刻储存在数据库中信息的集合
二、数据模型
用什么样的结构组织数据
1.关系模型(Relational Model)
关系数据库基于关系数据模型,使用表来表示数据和数据间的联系。
表就是行的集合,也就是记录的集合,每个记录有多个分量,分量就叫做属性,每一列就对应属性。
每一个表就是一个关系,基于关系构建的就是关系数据模型。
2.实体联系模型Entity-relationship data model(E-R模型)
数据库设计使用的模型。基于现实世界认识构成。
实体Entity:现实世界中可区别于其他对象的事情或物体。如人、梦、账户。
实体的特征称为属性Attribute,如人所在街道。
联系Relationship:实体之间的联系
实体集Entity Set:具有相同属性所有实体的集合,如某所大学的所有教师。
联系集Relationship set:相同种类所有联系的集合
图形化表示:
!
矩形:实体集 椭圆:属性 菱形:实体间的联系
3.基于对象的数据模型Object-based data model
面向对象的数据模型(E-R模型扩展)
4.半结构化数据模型Semistructured data model
XML
5.其他模型
网状数据模型Network data model、层次数据模型Hierarchical data model
三、数据库语言
语言分类:过程性语言procedural(指出需要的数据和怎么得到数据)C、java、非过程性语言(声明性语言)declarative(指出需要什么数据)SQL语言
1.SQL语言(基于关系模型构建的语言):结构化查询语言,纯pure数据库语言
!
在customer表中查询id为。。的名字
a.数据库定义语言DDL:数据库从无到有或从有到无,建立数据库、表
!
把表的定义存储于数据字典里。数据字典以表的形式存在,包含的数据称为元数据metadata。
元数据:关于数据的数据,包含数据库的模式database schema、完整性约束Integrity constraints、权限数据Authorization。
b.数据操纵语言DML(查询语言):数据库查询更新,可以使用现有的数据库
访问或者操纵按照某种适当数据模型组织起来的数据。
操作类型:检索数据库中的信息、插入新的信息、删除、修改信息。(增删改查)(大部分是查询操作。)
四、数据库程序语言
将SQL与其他高级语言配合时其他语言叫数组语言。
1.在应用程序中访问数据库方法:
1.扩展数组语言,嵌入SQL语句(特殊字符作为SQL开始),整个程序通过SQL预编译器转变为数组语言过程调用,然后数组语言再解释执行.
2.提供应用程序接口,如ODBC(微软),JDBC(Java)。
2.关系Relational数据库
基于关系模型构建。
数据和数据之间的联系通过表的集合来表示。
关系数据库包含DML和DDL(一般就是SQL语言)。
五、数据库设计(最重要逻辑设计、物理设计)
1.逻辑设计Logical design
找到最优表的模式的集合。(业务层面:需要记录哪些属性,计算机科学方面:使用什么模式、属性如何分布在模式里)
2.物理设计
决定数据库物理布局,包括文件组织形式、内部的存储结构等。
六、数据库用户
1.数据库普通用户
分为应用程序员Application programmers(通过数据操作语言调用)、老练用户Sophisticated users(用数据库查询语言研究数据)、专门用户Specialized users(编写数据库应用)、无经验用户Naive users(使用写好的应用程序)
2.数据库管理员DBA
职责:
1.模式定义(数据库初始表的定义)
2.存储结构和存取方法定义
3.数据访问授权
4.定义完整性约束(条件合不合理)
5.与用户联络
6.监控性能并根据需求进行变更
七、数据库管理系统DBMS的功能
1.存储管理
数据库存储于硬盘,使用操作系统、文件系统。
存储管理器storage manager提供数据库的数据和应用程序之间的接口,将各种DML查询操作翻译为底层的文件系统命令。
1.存储管理器包括:
a.权限级完整性管理器manager
数据是否满足完整性约束和检查用户的权限。
b.事务Transaction管理器
保证及时系统故障,数据库也可以保证正确
保证并发的事务执行不发生冲突
数据库应用中完成单一逻辑功能的操作集合,确保数据库处于一致性状态。
事务管理器确保意外情况数据库正常。
并发控制管理器就是控制事件并发情况。
c.文件管理器
分配磁盘存储空间
管理磁盘存储信息的数据结构
d.缓冲区管理器
将数据从磁盘取到内存中
决定哪些数据应该被缓存到磁盘中
2.存储管理器部件应该实现的数据结构:
a.数据文件data file
存储数据库的数据
b.数据字典data dictionary
存储数据库的元数据和数据库的模式
data about data
c.索引indices
提供数据库的快速访问
对一列数据进行排序,排序的那个属性后面还有一个指针,指向原数据位置。
2.查询Query处理(可以在视图层次工作)
实现:数据抽象、非过程性语言(SQL)
查询处理器Query processor将SQL的语句翻译成物理层的操作序列
1.组成:
1.DDL解释器interpreter
解释DDL语句,并将定义记录在字典中
2.DML编译器compiler and organizer
将查询语言的DML语句翻译成执行方案(低级指令),查询的优化
3.查询执行引擎Query evaluation engine
执行DML语句生成的执行计划
2.执行给定查询的其他方法(替代查询):
1.计算等价的表达式
2.采用不同的算法
评估中间统计结果的信息来计算表达式的代价,来找到最小的代价
计算代价取决于数据库必须维护的统计信息,通过统计信息statistical data(相当于人类的经验)来计算代价
3.查询处理步骤
1.将查询语句解析并翻译parsing and translation成查询处理器可以理解的关系代数表达式
2.系统对查询进行优化,结合统计信息尽可能选出最小查询执行代价的查询执行计划 optimization
3.查询执行引擎查询并执行evaluation
!
3.整体功能介绍
通过代码想数据发出查询请求:code -> engine
DML编译器: 数据字典查询权限信息,统计信息进行优化
文件管理和缓冲管理:访问数据和索引(也相当于一种数据)
!
4.系统的体系结构Architecture
取决于数据库运行的计算机系统。
1.集中式的Centralized
2.客户-服务器式的Client-server
3.并行Parallel
针对并行的计算体系设计的
4.分布式Distributed
地理上分离的多台计算机的