1.1 《数据库系统概论》之数据库系统概述(数据、数据库、数据库管理系统、数据库系统、数据库的产生和发展)
前言
- 本篇文章学习书籍:《数据库系统概论》第5版 王珊 萨师煊编著
- 视频资源来自:数据库系统概论完整版(基础篇+高级篇+新技术篇)
- 由于 BitHachi 学长已经系统的整理过本书了,我在学习课本和视频以及学长文章的同时在学长文章的基础上进行相应自适应修改。(学长原系列目录:Here)
- 资料参考网站:MySQL教程
0.思维导图
1.四大基本概念
(1)数据:Data
数据(Data)是数据库中存储的基本对象
① 数据的定义
描述事物的符号记录
② 数据的种类
文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等
③ 数据的特点
数据与其语义是不可分的
④ 数据举例
数据的含义称为数据的语义,数据与其语义是不可分的。
例如 93是一个数据
语义1:学生某门课的成绩
语义2:某人的体重
语义3:计算机系2003级学生人数
语义4:请同学给出。。。
学生档案中的学生记录
(李明,男,197205,江苏南京市,计算机系,1990)
语义:学生姓名、性别、出生年月、籍贯、所在院系、
入学时间
解释:李明是个大学生,1972年5月出生,江苏南京市人,1990年考入计算机系
(2)数据库:Database
① 数据库的定义
数据库(Database,简称DB)是长期储存
在计算机内
、有组织
、可共享
的大量数据
的集合
。
② 数据库的基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
(3)数据库管理系统:DataBase Management System
① 什么是DBMS?
DBMS是位于用户与操作系统之间的一层数据管理软件
。是基础软件,是一个大型复杂的软件系统
② DBMS的用途
科学地组织和存储数据、高效地获取和维护数据
③ DBMS的主要功能
数据定义功能
提供数据定义语言(DDL)
定义数据库中的数据对象数据组织、存储和管理
分类组织、存储和管理各种数据
确定组织数据的文件结构和存取方式
实现数据之间的联系
提供多种存取方法提高存取效率数据操纵功能
提供数据操纵语言(DML)
实现对数据库的基本操作 (查询、插入、删除和修改)数据库的事务管理和运行管理
数据库在建立、运行和维护时由DBMS统一管理和控制
保证数据的安全性、完整性、多用户对数据的并发使用
发生故障后的系统恢复数据库的建立和维护功能(实用程序)
数据库初始数据装载转换
数据库转储
介质故障恢复
数据库的重组织
性能监视分析等其它功能
DBMS与网络中其它软件系统的通信
两个DBMS系统的数据转换
异构数据库之间的互访和互操作
(4)数据库系统:Database System
① 什么是数据库系统(Database System,简称DBS)
在计算机系统中引入数据库后的系统构成
② 数据库系统的构成
- 数据库 Database
- 数据库管理系统(及其开发工具)Database Management System
- 应用系统
- 数据库管理员 Database Administrator
③ 数据库系统的特点
❶ 数据结构化
整体数据的结构化
是数据库的主要特征之一整体结构化
不再仅仅针对某一个应用,而是面向全组织
不仅数据内部结构化,整体是结构化的,数据之间具有联系数据库中实现的是数据的真正结构化
数据的结构用数据模型
描述,无需程序定义和解释
数据可以变长
数据的最小存取单位是数据项
❷ 数据的共享性高,冗余度低,易扩充
- 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用。
数据共享的好处
减少数据冗余,节约存储空间
避免数据之间的不相容性与不一致性
使系统易于扩充
这样就支持多种编程语言调用
❸ 数据独立性高
物理独立性
指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。逻辑独立性
指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。- 数据独立性是由DBMS的二级映像功能来保证的
❹ 数据由DBMS统一管理和控制
DBMS提供的数据控制功能
- (1)
数据的安全性(Security)保护
保护数据,以防止不合法的使用造成的数据的泄密和破坏。 - (2)
数据的完整性(Integrity)检查
将数据控制在有效的范围内,或保证数据之间满足一定的关系。 - (3)
并发(Concurrency)控制
对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。 - (4)
数据库恢复(Recovery)
将数据库从错误状态恢复到某一已知的正确状态。
❺ 应用程序与数据的对应关系(数据库系统)
2.数据管理技术的产生和发展
(1) 什么是数据管理
- 对数据进行分类、组织、编码、存储、检索和维护
- 数据处理的中心问题
(2) 数据管理技术的发展过程
- 人工管理阶段(20世纪40年代中–50年代中)
- 文件系统阶段(20世纪50年代末–60年代中)
- 数据库系统阶段(20世纪60年代末–现在)
(3)时期
- 20世纪60年代末以来
(4) 产生的背景
- 应用背景 大规模管理
- 硬件背景 大容量磁盘、磁盘阵列
- 软件背景 有数据库管理系统
- 处理方式 联机实时处理,分布处理,批处理
3.常用数据库汇总
现在已经存在了很多优秀的商业数据库,如甲骨文(Oracle)公司的 Oracle 数据库、IBM 公司的 DB2 数据库、微软公司的 SQL Server 数据库和 Access 数据库。同时,还有很多优秀的开源数据库,如 MySQL 数据库,PostgreSQL 数据库等。下面介绍这些常见的数据库。
1)Oracle
Oracle 是甲骨文公司的一款关系型数据库管理系统,在数据库领域一直处于领先地位的产品,是目前世界上流行的关系型数据库之一,是一种高效率、可靠性好、适应高吞吐量的数据库方案。
优点:
- Oracle 可移植性好,能在所有主流平台上运行(包括 Windows),完全支持所有工业标准。采用完全开放策略,使客户可以选择最适合解决方案。以及对开发商的全力支持。
- 获得最高认证级别的 ISO 标准认证,安全性高。
- 与其它数据库相比,Oracle 性能最高。保持着开放平台下 TPC-D 和 TPC-C 世界记录。
- 多层次网络计算,支持多种工业标准,可以用 ODBC、JDBC、OCI 等网络客户连接 。
- 完全向下兼容,因此被广泛应用,且风险低 。
向下兼容指的是高版本支持低版本的或者说后期开发的版本支持和兼容早期开发的版本。
缺点:
- 对硬件的要求高
- 价格比较昂贵
- 管理维护麻烦
- 操作比较复杂
2)SQL Server
SQL Server 是 Microsoft(微软)公司推出的关系型数据库管理系统,主要应用于大型的管理系统中。
优点:
- 与微软的 Windows 系列操作系统的兼容性很好。
- 高性能设计,可充分利用 WindowsNT 的优势。
- 系统管理先进,支持 Windows 图形化管理工具,支持本地和远程的系统管理和配置。
- 强壮的事务处理功能,采用各种方法保证数据的完整性。
- 支持对称多处理器结构、存储过程、ODBC,并具有自主的 SQL 语言。
缺点:
- SQL Server 只能在 Windows 系统上运行,没有丝毫开放性。
- 没有获得任何安全证书。
- 多用户时性能不佳 。
- 只支持 C/S 模式,SQL Server C/S 结构只支持 Windows 客户用 ADO、DAO、OLEDB、ODBC 连接。
3)MySQL
MySQL 是一种开放源代码的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。因为其速度、可靠性和适应性而备受关注。MySQL 是流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的应用软件之一。
优点:
- 性能卓越服务稳定,很少出现异常宕机
- 开放源代码且无版权制约,自主性强、使用成本低。
- 历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。
- 软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
- 支持多种操作系统,提供多种 API 接口,支持多种开发语言。
缺点:
- MySQL 最大的缺点是其安全系统,主要是复杂而非标准,只有调用 mysqladmin 来重读用户权限才会发生改变。
- MySQL 不允许调试存储过程,开发和维护存储过程很难。
- MySQL 不支持热备份。
- MySQL 的价格随平台和安装方式变化。
4)Access
Access 是由 Microsoft(微软)发布的小型关系数据库管理系统,是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。
优点:
- 存储方式简单,易于维护管理。Access 的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb 或 .accdb)的数据库文件中,便于用户的操作和管理。
- Access 是一个面向对象的开发工具,这种基于面向对象的开发方式,使得开发应用程序更为简便。
- 界面友好、易操作。Access 是一个可视化工具,风格与 Windows 完全一样,用户想要生成对象应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。
- 集成环境,可以处理多种数据信息。Access 基于 Windows 操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。
- 支持广泛,易于扩展,弹性大。Access 是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发。即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。
缺点:
- 不支持并发处理。
- 数据库存储量小安全性不够高。
- Access 是小型数据库,当数据量过大时,一般百M以上(纯数据,不包括窗体、报表等客户端对象)性能会变差。
- 虽然理论上支持 255 个并发用户,但实际上根本支持不了那么多,如果以只读方式访问大概在 100 个用户左右,而如果是并发编辑,则大概在10-20个用户。
- 单表记录数过百万时,性能就会变得较差,如果加上设计不良,这个限度还要降低。
- 不能编译成可执行文件(.exe),必须要安装 Access 运行环境才能使用。
5)DB2
DB2 是美国 IBM 公司开发的一款支持多媒体、Web 的关系型数据库管理系统。主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境。
优点:
- 相比较 MySQL 和 Oracle 两种数据库来说,DB2 提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模地应用程序执行能力,具有与平台无关的基本功能和 SQL 命令。
- DB2 采用了数据分级技术,能够使大型数据很方便的下载到数据库服务器,使数据库本地化和远程连接透明化。
- 拥有非常完备的查询优化器,改善了查询性能,并支持多任务并行查询。
- 具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统更加使用。
- DB2 可跨平台使用。
缺点:
- 配置文件和参数多,且命名不规范。
- 一些 DB2 产品开发不方便。
- 和 Oracle 相比,命令多,且没 Oracle 统一规范的好。
- 由于其设计框架的问题,如果用户对数据库的本身优化和应用程序优化做的不足,那么 DB2 容易出现锁等待现象。
6)PostgreSQL
PostgreSQL 是一款富有特色的自由数据库管理系统,甚至可以说是最强大的自由软件数据库管理系统。该数据库管理系统支持了目前世界上最丰富的数据类型。是自由软件数据库管理系统中唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的自由软件。
优点:
- PostgreSQL 遵循的是 BSD 协议,是一个完全开源、免费、同时非常强大的关系型数据库。
- 与 PostgreSQL 配合的有很多分布式集群软件,如 pgpool、pgcluster、slony、plploxy 等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这些 MySQL 则比较难实现。
- PostgreSQL 源代码写的很清晰,易读性比 MySQL 强,所以很多公司基本都是以 PostgreSQL 做二次开发的。
- PostgreSQL 是多进程的,而 MySQL 是多线程的。并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL 的总体处理性能不如 PostgreSQL,原因是 MySQL 的线程无法充分利用 CPU 的能力。
- PostgreSQL 有很强大的查询优化器,支持很复杂的查询处理。
BSD 开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
缺点:
- 对于简单而繁重的读取操作,相比较其它数据库来说,PostgreSQL 性能较低。
- PostgreSQL 数据库扩容花费时间很长。