在当今数字化的世界里,数据无处不在,无论是个人还是企业,都需要有效的方法来存储、检索和管理数据。数据库系统正是为此而生,它们为数据的持久性、结构化和共享性提供了坚实的基础。本文旨在介绍数据库系统概论中的基本概念,帮助读者建立起对数据库系统整体架构的理解。
基本概念
数据库系统由四个核心概念组成:数据、数据库、数据库管理系统(DBMS)和数据库系统(DBS)。
数据 Data
数据库是数据库中存储的基本对象,是描述事物的符号记录
-
种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等
-
特点:数据与其语义是不可分的
数据库 Database
数据库,顾名思义,是存放数据的仓库。这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。
数据库是永久存储在计算机内,有组织、可共享的大量数据的集合
特征:
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展性
数据库数据具有永久存储、可组织、可共享三个基本特点
数据库管理系统 DataBase Management System
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。和操作系统一样是计算机的基础软件
MySQL 就是一个 DBMS
数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。它的主要功能包括以下几个方面:
-
数据定义功能:提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象的组成与结构进行定义。
-
数据组织、存储和管理:数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。要确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。
数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存取方法(如索引查找、Hash查找、顺序查找等)来提高存取效率。
-
数据操纵功能:提供数据操纵语言(DataManipulation Language,DML),用户可以使用它操纵数据,实现对数据库的基本操作,如查询、插入、删除和修改等。
-
数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理和控制,以保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
-
数据库的建立和维护功能:数据库的建立和维护功能包括
- 数据库初始数据的输入、转换功能,
- 数据库的转储、恢复功能,
- 数据库的重组织功能和性能监视、分析功能等。
这些功能通常是由一些实用程序或管理工具完成的。
-
其他功能:其他功能包括数据库管理系统与网络中其他软件系统的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能,异构数据库之间的互访和互操作功能等。
数据库系统 DataBase System
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBaseAdministrator,DBA)组成的存储、管理、处理和维护数据的系统。
数据库的建立、使用和维护等工作由称为数据库管理员的专门的人员来完成。
- 数据库提供数据的存储功能
- 数据库管理系统提供数据的组织、存取、管理和维护等基础功能
- 数据库应用系统根据应用需求使用数据库
- 数据库管理员负责全面管理数据库系统。
特点:
-
数据结构化(数据库系统与文件系统的本质区别)
-
整体结构化是数据库的主要特征之一,所谓整体结构化就是指它不针对某一个应用,而是面向全组织。不仅数据内部结构化并且数据之间也具有连续
-
数据的结构用数据模型描述,无需程序定义和解释;数据可以变长;数据的最小存取单位是数据项
-
-
数据的共享性高,冗余度低,易扩充
-
数据独立性高(由
DBMS
的二级映像功能保证)-
物理独立性:用户的应用程序与存储在磁盘上的数据库中数据是独立的。当数据的物理存储改变,应用程序不改变
-
逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变
-
-
数据由
DBMS
统一管理和控制:-
数据的安全性(Security)保护:保护数据,以防止不合法的使用造成的数据的泄密和破坏。
-
数据的完整性(Integrity)检查:将数据控制在有效的范围内,或保证数据之间满足一定的关系。
-
并发(Concurrency)控制:对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
-
数据库恢复(Recovery):将数据库从错误状态恢复到某一已知的正确状态。
-
数据库管理员的职责
数据库管理员(DBA)是从事管理和维护数据库管理系统的相关人员的统称,其主要职责 :
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据库的安全性要求和完整性约束
- 监控数据库的运行的使用
- 数据库的改进和重组,甚至重构
数据模型
数据模型是数据库系统的核心和基础。
计算机是不可能直接处理现实世界中的具体事物的,所以人们必须事先把具体事物转化为计算机能够处理的数据。数据模型(Data Model)就是对现实世界数据特征的抽象,也是一种模型。也就是说数据模型是用来描述数据、组织数据和对数据进行操作的。
- 比较真实地模拟现实世界
- 容易被人理解
- 便于在计算机上实现
根据模型应用的不同目的,可分为两大类:概念模型(信息模型)和 逻辑模型与物理模型
从现实世界到模型的转换
为了把现实世界中的具体事物抽象、组织为某一数据库管理系统支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。
首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个数据库管理系统支持的数据模型,而是概念级的模型,然后再把概念模型转换为计算机上某一数据库管理系统支持的数据模型。
![[从现实世界到概念模型.png]]
-
从现实世界到概念模型的转换是由数据库设计人员完成的
-
从概念模型到逻辑模型的转换可以由数据库设计人员完成,也可以用数据库设计工具协助设计人员完成
-
从逻辑模型到物理模型的转换主要是由数据库管理系统完成的。
概念模型
概念模型实际上是现实世界到机器世界的一个中间层次,用于信息世界的建模,是现实世界到信息世界的第一层抽象。概念模型应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,并且它还应该简单、清晰、易于用户理解。
基本概念
-
实体:客观存在并可以相互区别的事物。实体可以是具体的人、事、物,也可以是抽象的概念或联系
例如职工、学生、学生的一次选课、教师与院系的工作关系
-
属性:实体所具有的某一特性。一个实体可以由若干属性刻画
例如(
201315121,张三,男,199505,计算机系,2013
) 即表征了一个学生实体 -
码:唯一标识实体的属性,例如人的身份证号
-
实体型:具有相同属性的实体必然有共同的特征和性质,实体型就是用实体名及其属性集合来抽象和刻画同类实体。
例如学生(学号,姓名,性别,出生年月,所在院系)就是一个实体型
-
实体集:同一类型实体的集合。例如全体学生就是一个实体集
-
联系:在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为 实体(型)内部的联系 和 实体(型)之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系。实体之间的联系通常是指不同实体集之间的联系。实体之间的联系有 一对一、一对多 和 多对多 等多种类型。
实体-联系方法
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示出上述信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是PPSChen 于 1976 年提出的 实体-联系方法(Entity-Relationshipapproach)。该方法用 E-R图(E-R diagram)来描述现实世界的概念模型,E-R方法也称为 E-R模型。
物理模型
物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。物理模型的具体实现是数据库管理系统的任务,数据库设计人员要了解和选择物理模型,最终用户则不必考虑物理级的细节。
逻辑模型
逻辑模型是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。主要包括:
- 层次模型(hierarchicalmodel)
- 网状模型(network model)
- 关系模型(relationalmodel)
- 面向对象数据模型(object oriented data model)
- 对象关系数据模型 (obiect relationaldata model)
- 半结构化数据模型(semistructured datamodel)(XML)
- 非结构化数据模型(unstructured datamodel)(NoSQL)
其中,层次模型和网状模型为格式化模型,现在已经逐渐被关系模型的数据库系统取代。
层次模型
层次模型的数据结构为二叉树,在数据库中定义满足下面两个条件的基本层次联系的集合就为层次模型:
- 有且只有一个结点没有双亲结点,此结点为根节点
- 根结点以外的所有结点有且只有一个双亲结点
在层次模型中每个结点表示一个记录类型,记录类型之间的联系用结点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系
每个记录类型可包含若干个字段,这里记录类型描述的是实体,字段描述实体的属性。各个记录类型及其字段都必须命名。各个记录类型、同一记录类型中各个字段不能同名。每个记录类型可以定义一个排序字段,也称为码字段,如果定义该排序字段的值是唯一的,则它能唯一地标识一个记录值。
![[HierarchicalModel.png]]
完整性约束
层次模型的数据操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件。
-
进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女结点值。
-
进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除。
优缺点
优点
- 层次模型的数据结构较为简单清晰
- 层次模型的查询效率高
- 层次模型提供了良好的完整性支持
缺点
- 层次模型不能很好的表示多对多联系
- 插入,删除麻烦,编写程序复杂
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程序化
网状模型
层次模型实际为网状模型的一种特例。
网状模型的数据结构为图,在数据库中定义满足下面两个条件的基本层次联系的集合就为网状模型:
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
网状模型中每个结点表示一个记录类型(实体),每个记录类型可包含若干个字段(实体的属性),结点间的连线表示记录类型(实体)之间一对多的父子联系。
子女结点与双亲结点的联系可以不唯一。因此要为每个联系命名,并指出与该联系有关的双亲记录和子女记录。
完整性约束
-
支持记录码的概念,码即唯一标识记录的数据项的集合。
-
保证一个联系中双亲记录和子女记录之间是一对多的联系。
-
可以支持双亲记录和子女记录之间的某些约束条件。
优缺点
优点
- 能够更为直接地描述现实世界
- 具有良好的性能,存取效率较高
缺点
- 结构复杂,不利于用户掌握
- 其
DDL
、DML
复杂,嵌入高级语言中也难以让用户掌握 - 用户需要了解结构细节,加重了编写程序的负担
关系模型
关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。
1970年,美国 IBM 公司 San Jose 研究室的研究员 EFCodd 首次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。由于 E.F.Codd 的杰出工作,他于 1981 年获得ACM 图灵奖。
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有表。
数据结构
关系模型的数据结构关系模型与以往的模型不同,它是建立在严格的数学概念的基础上的。从用户观点看,关系模型由一组关系组成。每个关系的数据结构是一张规范化的二维表。
基本术语
-
关系(relation):一个关系对应一张表
-
元组(tuple):表中一行或一条记录叫做一个元组
-
属性(attribute):表中一列叫做一个属性,给每一个属性起一个名称叫做属性名
-
码(key):也成为码键,表中的某个属性组,用于唯一确定一个元组
-
域(domain):一组具有相同数据类型的值的集合,属性的取值范围来自于域。
如大学生年龄属性的域是(15~45岁),性别的域是(男女),系名的域是一个学校所有系名的集合。
-
分量:元组的每一个属性值,关系的每一个分量都不可以再分
-
关系模式:对关系的描述,必须是规范化的,一般表示为: 关系名(属性 1 ,属性 2 , … ,属性 n ) 关系名(属性1,属性2,… ,属性n) 关系名(属性1,属性2,…,属性n)
数据操作与完整性约束
关系模型的数据操纵主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。
关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合,而不像格式化模型中那样是单记录的操作方式。
[[关系型数据库理论#关系完整性约束|关系的完整性约束条件]]包括三大类:实体完整性、参照完整性和用户定义的完整性。
关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”或“找什么”,不必详细说明“怎么干”或“怎么找”从而大大地提高了数据的独立性,提高了用户生产率。
优缺点
优点
- 建立在严格的数学概念的基础上
- 关系模型的概念单一,无论实体还是联系都用关系表示,对数据的检索和更新结果也是关系。因此简单、清晰,易用
- 关系模型的存取路径对用户透明
缺点
- 查询效率往往不如格式化数据模型
- 开发相应数据库管理系统难度大
数据模型的组成要素
数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件(integrity constraints)。因此数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。
数据结构
数据结构描述数据库的组成对象以及对象之间的联系,是所描述的对象类型的集合,是对系统静态特性的描述。数据结构是刻画一个数据模型性质最重要的方面。
数据结构描述的内容有两类:
-
与对象的类型、内容、性质有关的,如网状模型中的数据项、记录;关系模型中的域、属性、关系等
-
与数据之间联系有关的对象,如网状模型中的系型(set type)。
因此在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。
数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。数据操作是对系统动态特性的描述
数据库主要有查询和更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。
完整性约束条件
数据的完整性约束条件是一组完整性规则。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。例如,在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件
数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。