本学期我专业开了“数据库系统概论”这门课,之前就从别人那里听说这门课概念很多,较为无聊,有很多人建议我这门课还是应该尽早开始背;在拿到课本之后我大致翻阅了一下,发现这本书确实文本量较大、概念较多,但同时作为一门专业基础课,确实也有好好学习,或者至少详细看一遍课本的必要,于是我决定对这一门课做一个详细的笔记,以来为了更好的学习这门课程,二来课上找点事情做,不然会睡着的。
刚开始的时候,我打算只用OneNote来做这门课的笔记,不过在完成序章之后,我发现课本中还是会有一定量的代码、数学公式等再OneNote中不方便呈现的内容,于是便决定转而使用MarkDown来记录笔记,顺便也为混几篇博客提供了方便。
本章内容初始是直接写在OneNote中,然后复制过来的,内容、章节会有些诡异,之后的内容都是一开始就使用MarkDown编写的了。
但愿可以持续更新。
数据库的四个基本概念:
数据、数据库、数据库管理系统、数据库系统。
数据:
描述事物的符号记录称为数据;
数据的解释是指对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分的。
数据库(DataBase,DB):
长期储存在计算机内、有组织的、可共享的大量数据的集合,数据库中的数据按一定的数据模型组织、描述、储存,具有较小的冗余度、较高的数据独立性、易扩展性,并可以为各种用户共享。
概括地讲,数据库数据具有永久储存、有组织、可共享三个基本特点。
数据库管理系统(DataBase Management System,DBMS):
位于用户与操作系统之间的一层数据管理软件,和操作系统一样是计算机的基础软件,包括以下主要功能:
功能 | 解释 |
---|---|
数据定义功能 | 提供数据定义语言(Data Definition Language,DDL),用户通过DDL可以方便地对数据库中的数据对象的组织与构成进行定义。 |
数据组织、储存、管理 | 分类组织储存管理各种数据,确定文件结构储存方式,如何实现数据之间的联系,基本目标是提高储存空间利用率和方便存取,提供多种存取方法(Hash,索引,顺序) |
数据操纵功能 | 提供数据操纵语言(Data Manipulation Language,DML),实现如查询删除插入的基本操作 |
数据库的事务管理和运行管理 | 提供数据操纵语言(Data Manipulation Language,DML),实现如查询删除插入的基本操作 |
数据库的事务管理和运行管理 | 数据库在建立运用和维护时由DBMS统一管理控制,保证事务的正确性,数据的安全完整,并发使用,故障后的系统恢复。 |
数据库的建立和维护功能 | 初始数据的输入、转换,数据库的储存、恢复、重组织、性能监视分析 |
其他 | DBMS与网络中其他软件的通信,一个DBMS与另一个DBMS或文件系统的数据转换功能,异构数据库之间的互访和互操作。 |
数据库系统(DataBase System,DBS):
由数据库、数据库管理系统(及其应用开发工具)、应用程序、数据库管理员组成的储存、管理、处理和维护数据的系统。
在不引起混淆的情况下,数据库系统简称数据库。
数据管理:
对数据进行分类、组织、编码、储存、检索、维护,他是数据处理的中心问题;
数据处理指的是对各种数据进行收集、储存、加工、传播的一系列活动的总和。
人工管理阶段:
文件系统阶段:
磁盘出现;文件系统出现;批处理、联机处理出现;
数据库系统阶段:
多种应用、语言共享数据集合的要求越来越强烈;
硬件价格下降;
软件价格上升;
联机处理、分布式处理要求增多;
从文件系统到数据库系统标志着数据管理技术的飞跃;
数据结构化:
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
所谓的“整体结构化”是指:数据库中的数据不再仅仅针对某一个应用,而是面向整个组织或是企业;不仅数据内部是结构化的,而且整体是结构化的,数据之间是具有联系的。
数据的共享性高、冗余度低、易扩充
数据共享可以减少冗余度、节约存储空间,避免数据之间的不相容性与不一致性(统一数据不同副本值不同);
弹性大、易于扩充。
数据独立性(物理独立性、逻辑独立性)高
物理独立性:应用程序与数据的物理储存是相互独立的;
逻辑独立性:应用程序与数据的逻辑结构相互独立,数据的逻辑结构改变时应用程序可以不变;
数据独立性由DBMS的二级映像功能实现;
数据由DBMS统一管理和控制
数据库的共享是并发的,会带来安全隐患,为此,DBMS提供以下功能:
综上所述,数据库是长期储存在计算机内,有组织、大量、共享的数据集合,可以提供各种用户共享,具有最小的冗余度与最大的数据独立性。DBMS在数据库建立、运用和维护时对数据进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用时进行并发控制,在发生故障后进行恢复。
数据库系统的出现,使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。
数据模型(Data Model):
对现实世界数据特征的抽象,用来描述数据,组织数据,对数据进行操作。
数据模型是数据库系统的核心和基础。
两类数据模型:
数据模型应该满足三方面要求:
概念模型/逻辑模型和物理模型:
模型 | 解释 |
---|---|
概念模型(conceptual model),也称信息模型 | 按用户的观点对数据和信息建模,主要用于数据库的设计。 |
逻辑模型(层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型……) | 按计算机系统的观点对数据建模,主要用于DBMS的实现。 |
物理模型 | 对数据最底层的抽象,描述数据在内部的表示存取方式,是面向计算机系统的,具体实现是DBMS的任务。 |
为了将现实世界中的具体事物抽象为某一DBMS支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。
概念模型(信息模型):
一方面应该具有较强的语义表达能力,能够方便、直接的表达应用中的各种语义知识,另一方面还应该简单、清晰、易于用户理解。
信息世界中的基本概念:
概念 | 解释 |
---|---|
实体(entity) | 客观存在并可以相互区别的物体称为实体 |
属性(attribute) | 实体所具有的某一特性 |
码(key) | 唯一标识实体的属性集,例如学生的学号 |
实体型(entity type) | 用实体名及其属性集合来抽象和刻画同类实体,称为实体型 |
实体集(entity set) | 同一类型的实体的集合 |
联系(relationship) | 实体之间的联系通常指不同实体集之间的联系,实体之间的联系有一对一、一对多、多对多等多种类型 |
概念模型的一种表示方法: 实体-联系方法
概念模型的表示方法中,最常用的是实体-联系方法(entity-relationship approach),该方法用E-R图来描述现实世界的概念模型,E-R方法也称E-R模型。
数据模型是严格定义的一组概念的集合,这些概念精确地描述了系统的静态特性、动态特性、完整性约束条件(integrity constraints)。因此,数据模型通常由数据结构、数据操作、完整性约束条件三部分组成。
数据结构:
数据结构描述数据库的组成对象以及对象之间的联系。
数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
数据操作:
对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。
主要包括查询和更新两大类操作。
数据的完整性约束条件:
数据的完整性约束条件是一组完整性规则,完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及状态的变化,用以保证数据的正确、有效、相容。
数据库领域中主要的逻辑数据模型有:
其中层次模型和网状模型统称为格式化模型。
层次模型的数据结构:
只能处理一对多的实体联系。
叶节点,兄弟节点。
层次模型的数据操纵与完整性约束:
层次模型的优缺点:
优点:
缺点:
网状模型的数据结构:
网状模型的数据操纵与完整性约束:
DBTG(data base task group)的规定:
网状模型的优缺点:
优点:
缺点:
关系模型的数据结构:
从用户观点看,关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表;
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,其中最基本的一条是,关系的每一个分量必须是一个不可分的数据项。
关系模型的数据操纵域完整性约束
关系模型的优缺点:
优点:
在数据模型中有型(type)和值(value)的概念;
模式(schema)是数据库中全体数据的逻辑结构和特征的描述,仅仅涉及型的描述,模式的一个具体的值称为模式的一个实例(instance)。
模式(schema)
也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,及不涉及数据的物理储存与硬件环境,也不涉及具体的应用程序。
外模式(external schema)
也称子模式或用户模式,是数据库的最终用户能够看见和使用的局部数据的逻辑结构和特征描述。
一个数据库可以有多个外模式。
外模式是保证数据库安全的一个有力措施。
内模式(internal schema)
也称储存模式,一个数据库只有一个内模式,描述数据的物理结构与储存方式,是数据库内部的组织方式。
二级映像保证了数据库中的数据有较高的逻辑独立性与物理独立性。
外模式/模式映像:
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构;同一个模式可以有任意多个外模式,对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。
当模式改变时,由数据库管理员对各个外模式/模式映像做相应的改变,可以使外模式保持不变;由于应用程序是依据外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像:
模式和内模式都是唯一的,因此模式/内模式映像也是唯一的,它定义了数据的全局逻辑结构与储存结构之间的对应关系,当数据的储存结构改变时,只需要对模式/内模式映像做出改变,从而应用程序也不需要改变,保证了数据与程序的物理独立性。
硬件平台及数据库
软件
人员