数据库系统概论
数据库的4个基本概念
数据、数据库、数据库管理系统、数据库系统是与数据库技术密切相关的4个基本概念
数据(data)
数据是数据库中存储的基本对象。
描述事物的符号记录被称为数据
描述事物的符号可以是数字、文本、音频、图形、图像、视频等多种形式,他们都可以经过数字化存入计算机。
在计算机中常常这样描述:
(李明,男,199505,江苏省南京市,计算机系,2013)`
数据的含义称为数据的语义,数据与其语义是不可分的。
- 数据库(Database,DB)
数据库是长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并为各种用户共享。
概括的来讲,数据库具有永久存储、可共享、有组织三个基本特点
- 数据库管理系统
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,数据库管理系统和操作系统一样是计算机的基础软件,它的主要功能包括以下几个方面:
(1) 数据定义功能
数据库管理系统提供数据定义语言(DDL),用户通过它可以方便地对数据库中的数据对象的组成和结构进行定义
(2)数据组织、存储和管理
数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。数据的组织和存储的基本目标是提高空间利用率和方便存取,提供多种存取方法(如Hash查找、索引查找、顺序查找)来提高存取效率。
(3) 数据操纵功能
数据库管理系统提供数据操纵功能(DML),用户可以使用它来操纵数据,如插入、修改、删除、查询等
(4)数据库的事务管理和运行管理
数据库在建立、运用和维护时由数据库管理系统统一管理和控制,以保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复
(5)数据库的简历与维护
数据库的建立和维护功能包括数据库的初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织和性能监视、分析功能等。这些功能由使用程序和管理工具完成
(6) 其他功能
其他功能:数据库管理系统与网络中其他软件系统的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能,异构数据库之间的互访和互操作功能。
- 数据库系统
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。
一般不引起混淆的情况下,把数据库系统简称为数据库
数据管理的三个阶段
人工管理阶段->文件系统阶段->数据库系统阶段
现在比较流行的:
Redis 有三个主要使其有别于其它很多竞争对手的特点:
Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的;
Redis相比许多键值数据存储系统有相对丰富的数据类型;
Redis可以将数据复制到任意数量的从服务器中;
hadoop官方文档http://hadoop.apache.org/
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。其架构如下图所示:
数据库系统的优点
- 数据结构化
数据库系统实现整体数据的结构化,这是数据库系统的主要特征之一,整体结构化,数据之间有联系。
数据共享性高、冗余度低、且易扩充
数据共享课大大减少数据冗余 ,节约存储空间,数据共享还可以避免数据之间的不相容性和不一致性。
数据独立性高
数据独立性:物理独立性和逻辑独立性
物理独立性指:用户的应用程序与数据库中的数据的物理存储是相互独立的。
逻辑独立性:用户的应用程序与数据库的逻辑结构相互独立
- 数据由数据库管理系统统一管理和控制
数据库管理系统必须提供以下几个方面的控制:
(1)数据安全性保护
数据的安全性指保护数据以防止不合法使用造成数据泄密和破坏
(2)数据完整性保护
数据的完整性指数据的正确性、有效性和相容性
(3)并发控制
多用户同时存取、修改数据库时,可能发生相互干扰而得到错误的结果或使得数据库的完整性遭到破坏,必须对多用户的并发操作加以控制和协调。
(4) 数据库恢复
数据库管理系统必须有将数据库从错误状态恢复到某一已知正确状态的功能。
总结:
数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障时对数据库进行恢复。
数据模型
数据模型也是一种模型,它是对现实世界数据特征的抽象,也就是说数据模型是来描述数据、组织数据、和对数据进行操作的。
数据模型是数据库系统的核心和基础。各种机器上实现的数据库管理系统软件都是基于某种数据模型或者说是支持某种数据模型的。
数据模型应该满足三种要求:(1)比较真实的模拟现实世界(2)容易为人所理解(3)便于在计算机上实现
根据模型应用的不同目的,可以将模型分为两大类
(一)概念模型(信息模型)
按用户的观点对数据和信息建模,主要用于数据库设计
(二)逻辑模型和物理模型
逻辑模型: 层次模型、网状模型、关系模型、面向对象模型、对象关系模型、半结构化数据模型等。它是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。
物理模型:是对数据最底层的抽象,它描述数据在系统内部的表示和存取方法,或在磁盘或磁带上的存储方式和存取方式,是面向计算机系统的。物理模型的具体实现是数据库管理系统的任务,数据库设计人员要了解和选择物理模型。
人们将现实世界抽象为信息世界,然后将信息世界转换为机器世界
概念模型
- 信息世界的基本概念
实体: 客观存在并可相互区别的事物称为实体
属性: 实体所具有的某一特性称为属性
码: 唯一标识实体的属性集称为码
实体型: 用实体名及属性名集合来抽象和刻画同类实体,称为实体型
例如: 学生(学号,姓名,姓名,性别,入学时间,手机号)就是一个实体型
实体集:同一类型实体的集合称为实体集,全体学生就是一个实体集
联系:不同实体集之间的联系,实体之间的联系有一对一,一对多,和多对多等多种联系。
- 概念模型的一种表示方法:
实体联系方法用E-R图来描述现实世界的概念模型,E-R方法也称E-R模型。
数据模型的组成要素
数据模型通常由:数据结构、数据操作和完整性约束条件组成
数据结构:用来描述数据库的组成对象以及对象之间的联系
数据操作: 指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据的完整性约束条件是一组完整性规则。
常用数据模型
层次模型
网状模型
关系模型
面向对象数据模型
对象关系数据模型
半结构化数据模型
层次和网状,已经慢慢被关系数据模型所取代,20世纪80年代,面向对象的方法和技术在计算机的各个领域产生了深远的影响,也促进了数据库中面向对象数据模型的研究和发展。许多数据库厂商为了支持面向对象模型,对关系模型做了扩展,从而产生了面向对象数据模型。
随着Internet的发展,以XML为代表的半结构化和非结构化数据模型成为WEB上重要的信息来源。
层次模型:
(1)只有一个节点没有双亲节点,也就是根节点
(2)根节点以外的其他节点有且只有一个双亲节点
网状模型:
(1)多个节点可以无双亲
(2)一个节点可以有多个双亲
关系模型
关系数据库系统采用关系模型作为数据的组织方式,
- 关系模型的数据结构
每个关系模型的数据结构是一张规范的二维表。
关系模型的术语:
关系:一个关系对应通常所说的一张表
元组: 表中的一行既为一个元组
属性:表中一列即为为一个属性,每个属性起一个名叫属性名
码: 表中的某个属性组可以唯一确定一个元组
域:域是一组具有相同数据类型的值的集合 (大学生年龄属性的域是15~45岁)
分量:元组中的一个属性值
关系模型要求关系必须是规范化的,每个分量都是不可分的数据项,也就是说,不允许表中还有表。
关系模型的数据操纵和完整性约束
关系模型的数据操纵包括查询、插入、删除和更新数据。这些操作必须满足完整性约束条件(实体、参照、用户自定义完整性)。
关系模型数据操作是集合操作,操作对象和操作结果都是关系。关系模型把存取路径隐藏起来,用户只需要指出“干什么”而不需要说明“怎么干”。
数据库系统的结构
在数据模型中有型(type)和值(value)的区别,
型:是对某一类数据的结构和属性的说明
ex:学生记录定义为:
1 |
|
这样的记录型
值:值是型的一个具体赋值
1 |
|
模式
模式(schema)是数据库中全体数据的逻辑结构和特征的描述,仅仅涉及型,不涉及值。
模式的一个具体值称为实例
模式是相对稳定的,而实例是相对变动的。
数据库的二级映像功能和三级模式(保证了数据独立性)
- 模式:
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
它是数据库系统模式结构的中间层,即不涉及数据的物理存储细节和硬件环境,又与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。
- 外模式
外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,
是数据库用户的数据局视图,是与某一应用有关的数据的逻辑表示。
- 内模式
内模式也称存储模式,一个数据库只有一个存储内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
例如:记录的存储方式是堆存储还是按照某个属性的升降值存储,或按照属性值聚储存储;索引按照什么方式组织,是B+树索引还是hash索引;数据是否压缩存储,是否加密;数据的存储记录结果有何规定,如定长结构还是变长结构。
二级映像
- 外模式/模式映像
当模式改变时(例如增加新的关系,新的属性,改变属性的数据类型等),由数据库管理员对各个外模式/模式映像做出改变,从而是外模式保持不变。应用程序根据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
- 模式/内模式映像
当数据的存储结构发生改变时(例如使用了另一种存储结构),由数据库管理员对模式/内模式映像做出改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。
数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的修改和维护。
数据库系统的组成(硬件、软件、人员)
- 硬件平台及数据库
数据库系统的数据量都很大,加上数据库管理系统的丰富的功能使得自身的规模也很大,数据库系统对硬件资源提出了较高的要求。
(1)足够大的内存,存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序。
(2)有足够大的磁盘或磁盘列阵设备存放数据库,有足够大的磁盘(或光盘)做数据备份
(3)要求系统有较高的通道能力,以提高数据传输率。
- 软件
(1)数据库管理系统。数据库管理系统是为数据库的建立、使用、和维护配置的系统软件。
(2)支持数据库管理系统运行的操作系统
(3)具有与数据库接口的高级语言及其编译系统,便于应用程序开发。
(4)以数据库管理系统为核心的应用开发工具。
(5)为特定应用环境开发的数据库应用系统。
- 人员
开发、管理和使用数据库系统的人员主要包括数据库管理员、系统分析员和数据库设计人员、应用程序员和最终用户。
(1)数据库管理员
数据库系统环境下有两类共享资源,一类是数据库,另一类是数据库管理系统软件,需要有专门的系统监督和管理数据库系统。
a. 决定数据库中的信息内容和结构
b. 决定数据库的存储结构和存取策略
c. 定义数据的安全性要求和完整性约束条件
d. 监控数据库的使用和运行
e. 数据库的改进和重组、重构。
(2) 系统分析员和数据库设计人员
系统分析员负责应用系统的需求分析和规范说明,要和用户及数据库管理员相结合,确定系统的硬件软件配置,并参与数据库系统的概要设计。
数据库设计人员负责数据库中数据的确定和数据库各级模式的设计。数据库设计人员必须必须参加用户需求调查和系统分析,然后进行数据库设计。很多情况下,数据库设计由数据库管理员担任。
(3)应用程序员
应用程序员负责设计和编写应用系统的程序模块,并进行安装、调试。
(4)用户
a. 偶然用户
用户不经常访问数据库,但每次访问需要不同数据库的信息。如企业或组织中高中级管理人员
b. 简单用户
数据库大多数用户都是简单用户,工作主要是查询和更新数据库,一般是通过程序员设计友好交互界面的应用程序存取数据库。如银行职员、航空公司机票预订人员、宾馆总台服务人员
c. 复杂用户
复杂用户包括工程师、科学家、科学技术工作者等高科学技术背景的人员。这类人员比较熟悉数据库管理系统的各种功能,能够直接使用数据库语言访问数据库,甚至能基于数据库管理系统的应用接口编制自己的应用程序。
关系
关系模型的数据结构十分简单,只包含单一的数据结构——关系,也就是一张二维表。
域:是具有相同数据类型值的集合。
比如:{0,1} {男,女} 大于20小于100的正整数
笛卡尔集: 给定一组域 D1,D2,D3,……,Dn,允许某些域相同, D1,D2,D3,……,Dn的笛卡尔集是:
1
D1*D2*D3*......*Dn={(d1,d2,d3,...dn) |di(Di,i=1,2,3,.....,n}
其中,每一个元素(d1,d2,d3,…dn)叫做一个n元组,简称元组,元组中每一个值di叫做一个分量。1
2
3
4
5
6
7
8
9
10D1={A,B}
D2={C,D,}
D3={E,F,G}
D1,D2,D3的笛卡尔集是:
D1*D2*D3={
(A,C,E),(A,C,F)(A,C,G)
(A,D,E),(A,D,F)(A,D,G)
(B,C,E),(B,C,F)(B,C,G)
(B,D,E),(B,D,F)(B,D,G)
}
总共12个元组
码
候选码:关系中某一属性组的值可以唯一标识一个元组,而其子集不能,则称该属性组为候选码
主码:如果一个关系中有多个候选码,选定其中一个为主码。
候选码的诸属性称为主属性,不包含在任意一个候选码中的属性称为非主属性或非码属性
极端情况下,关系中的属性都是候选码中的值,称为全码。
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。最基本的一条就是每一个分量都是不可分割的数据项。规范的关系简称范式。
关系的描述称为关系模式,可以形式化表示为:
R(U,D,DOM.F)
R为关系名,U为组成该关系的属性名集合,D为U属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
关系数据库的型和值
关系数据库的型也称为关系数据库模式,是对关系数据库的描述
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就是关系数据库。
关系模式的存储结构
表是关系数据的逻辑模式,在关系数据库的物理组织中,有的关系数据库管理系统的一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分空间,组织表、索引等存储结构,并进行存储管理。
关系操作
基本关系操作包括:查询、删除、插入、更新。
查询又分:选择(select),投影,连接,除,并,交,差,笛卡尔集等。
选择,投影,并,差,笛卡尔集是基本操作,其他可以由这些定义、导出。
关系操作的特点是集合操作方式,操作对象和结果都是集合。
关系的完整性
关系模型的完整性规则是对关系的某种约束条件。
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性
用户定义的完整性是应用领域需要遵循的条件,体现了具体领域中的语义约束。
实体完整性:若属性(指一个或者一组属性)A是基本关系R的主属性,则A不能取空值。
参照完整性:设F是基本关系R的一个或者一组属性,但不是R的码。Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,称基本关系R为参照关系,基本关系S为被参照关系。
通俗来讲,就是一个表A中属性(不是码)与另一个表B中主码对应,这个表A对应属性只能取两种值:
(1)空值
(2)表B中主码的值
R和S可以是同一个关系,例如:
关系学生(++++学号++++,姓名,性别,专业号,年龄,班长)
班长属性应该是该学生所在班级班长的学号,它引用了本关系“学号”属性。
班长的属性可以取两种值:
- 空值,表示该学生所在班级尚未选出班长
- 非空值,值为本关系中某个元组的学号值