计算机二级数据库知识整理

基本概念

数据(Data)

  • 定义:数据是描述事物的符号记录,可以是数字、文字、图形、图像、声音等。数据是数据库中存储的基本对象。
  • 例子:学生的学号“2024001”、姓名“张三”、年龄 20,这些都是数据。
  • 细节:数据本身没有语义,需要结合解释才有意义。例如,“20”可能代表年龄,也可能代表成绩。

数据库(Database, DB)

  • 定义:数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。它具有较小的冗余度、较高的数据独立性和易扩展性
  • 特点
    • 长期存储:持久保存,非临时文件。
    • 有组织:按某种数据模型组织,便于管理。
    • 可共享:允许多个用户并发使用数据。
  • 例子:学校的教务系统将所有学生的信息、课程信息、选课记录组织在一起,形成一个数据库。

数据库管理系统(Database Management System, DBMS)

  • 定义:DBMS 是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据,高效地获取和维护数据。
  • 主要功能
    • 数据定义:提供数据定义语言(DDL),用于定义数据库的结构(如表、视图、索引)。
    • 数据操纵:提供数据操纵语言(DML),用于对数据的增、删、改、查。
    • 数据库运行管理:保证数据的安全性、完整性、并发控制和故障恢复。
    • 数据组织与存储:管理数据的物理存储结构。
    • 数据库建立与维护:包括数据导入/导出、备份恢复等。
  • 常见 DBMS:Oracle, MySQL, SQL Server, Access, DB2 等。

数据库系统(Database System, DBS)

  • 定义:数据库系统是指引入数据库后的计算机系统,通常由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。
  • 组成
    • 硬件:运行数据库系统的计算机设备。
    • 软件:包括 DBMS、操作系统、应用开发工具等。
    • 数据:数据库本身。
    • 人员:数据库管理员(DBA)、系统分析员、应用程序员、最终用户。
  • 特点:数据结构化、数据共享度高、数据独立性好、数据冗余度低、数据由 DBMS 统一管理。

数据库管理员(DBA)

职责:负责数据库的规划、设计、维护、监控、性能调优、安全管理、备份恢复等。

数据库应用系统

定义:利用数据库系统开发的、面向具体应用的软件系统,如教务管理系统、图书管理系统等。

数据管理技术的发展

人工管理阶段(20 世纪 50 年代中期以前)

  • 背景:计算机主要用于科学计算,硬件无磁盘,软件无操作系统,数据不保存。
  • 特点
    • 数据不保存。
    • 数据由应用程序自己管理,无数据管理软件。
    • 数据不共享,冗余度极大。
    • 数据不具有独立性,程序与数据一一对应。

文件系统阶段(20 世纪 50 年代后期至 60 年代中期)

  • 背景:有了磁盘等存储设备,出现了操作系统和文件系统。
  • 特点
    • 数据可长期保存,以文件形式组织。
    • 文件系统管理数据,提供存取方法。
    • 数据共享性差,冗余度大。
    • 数据独立性差,数据与程序仍相互依赖。
    • 数据无结构化,文件之间无联系。

数据库系统阶段(20 世纪 60 年代后期开始)

  • 背景:数据量激增,多用户、多应用共享数据需求强烈。
  • 特点
    • 数据结构化,面向全组织描述数据。
    • 数据共享性高,冗余度低。
    • 数据独立性高,包括物理独立性和逻辑独立性。
    • 数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、恢复)。

数据模型

数据模型是数据库系统的核心,它是对现实世界数据的抽象表示。

概念模型(信息模型)

  • 作用:按用户的观点对数据和信息建模,用于数据库设计。
  • 常用工具:实体-联系(E-R)模型。
  • 基本术语
    • 实体(Entity):客观存在并可相互区别的事物,如学生、课程。
    • 属性(Attribute):实体所具有的某一特性,如学生的学号、姓名。
    • 码(Key):唯一标识实体的属性集,如学号。
    • 实体型(Entity Type):用实体名及其属性名集合来抽象同类实体,如学生(学号,姓名,性别)。
    • 实体集(Entity Set):同一类型实体的集合,如全体学生。
    • 联系(Relationship):实体之间的关联,如学生选课。联系类型有 1:1, 1:N, M:N。

逻辑模型(结构模型)

  • 作用:按计算机系统的观点对数据建模,是 DBMS 所支持的模型。
  • 主要类型
    • 层次模型:用树形结构表示实体及联系,有且仅有一个根结点,其他结点有且仅有一个父结点。如组织架构、家族关系。
    • 网状模型:用有向图表示实体及联系,允许一个结点有多个父结点。如道路网络。
    • 关系模型:用二维表格表示实体及联系,是目前最常用的模型。

物理模型

作用:描述数据在存储介质上的存储方式,如文件结构、索引方式等,对用户透明。

关系模型的基本术语

  • 关系(Relation):一张二维表,对应一个实体集。
  • 元组(Tuple):表中的一行,对应一个实体。
  • 属性(Attribute):表中的一列,对应实体的一个属性。
  • 码(Key):能唯一标识元组的属性或属性组。
  • 候选码(Candidate Key):所有能唯一标识元组的属性组。
  • 主码(Primary Key):从候选码中选定的一个作为主键。
  • 外码(Foreign Key):一个表中的属性,是另一个表的主码。
  • 域(Domain):属性的取值范围,如性别域为 {男,女}。
  • 分量:元组中的一个属性值。
  • 关系模式:关系的描述,表示为 关系名(属性1,属性2,...)

关系数据库

关系数据库是采用关系模型(即二维表)组织的数据库。

关系的完整性约束

  • 实体完整性:主码的值不能为空且唯一。例如,学生表中学号不能为空,且不能重复。
  • 参照完整性:外码的值必须等于被参照表中某个元组的主码值,或者为空。例如,选课表中的学号必须在学生表中存在(或为空,若允许未注册学生选课)。
  • 用户定义完整性:针对某一具体数据的约束条件,由应用环境决定。例如,年龄在 0~150 之间,性别只能为‘男’或‘女’。

关系代数

关系代数是一种抽象的查询语言,用对关系的运算来表达查询。基本运算有:

  • 选择(σ):从关系中选出满足条件的元组。例如,σ_{年龄>20}(学生) 查询年龄大于 20 的学生。
  • 投影(π):从关系中选出指定的属性列。例如,π_{学号,姓名}(学生) 查询所有学生的学号和姓名。
  • 连接(⋈):将两个关系按一定条件组合成一个新关系。常用的是自然连接(等值连接、去重复列)。
  • 除(÷):用于查询“至少选了某课程集合中所有课程的学生”之类的问题。
  • 并(∪)交(∩)差(-):集合运算,要求两个关系具有相同的属性结构。

数据库设计

设计步骤

  1. 需求分析:了解用户需求,包括数据需求和处理需求,产生数据流图、数据字典。
  2. 概念结构设计:将需求抽象为概念模型(E-R 图),独立于具体 DBMS。
  3. 逻辑结构设计:将 E-R 图转换为关系模型(即表结构),并进行规范化处理。
  4. 物理结构设计:为逻辑模型选择存储结构和存取方法(如建立索引)。
  5. 数据库实施:编写 SQL 代码建库、建表,加载数据。
  6. 数据库运行和维护:监控性能、调整、备份恢复等。

规范化与范式

规范化是为了减少数据冗余、避免更新异常。范式是衡量关系模式优劣的标准。

  • 第一范式(1NF):关系中的每个属性都是不可分割的原子项。例如,表中不能有“电话”字段包含多个电话号码。
  • 第二范式(2NF):在 1NF 基础上,消除非主属性对候选码的部分函数依赖。即每个非主属性完全依赖于全部候选码,同时接受所有候选码关联。例如,选课表(学号、课程号、成绩、学分)中,学分只依赖于课程号,不依赖于学号,因此存在部分依赖,需要拆分为学生选课表和课程表。
  • 第三范式(3NF):在 2NF 基础上,消除非主属性对候选码的传递函数依赖。即非主属性不依赖于其他非主属性,不存在多重传导性。例如,学生表(学号、姓名、班级号、班级人数)中,班级人数依赖于班级号,而班级号依赖于学号,因此存在传递依赖,应拆分为学生表和班级表。
  • BC 范式(BCNF):在 3NF 基础上,消除主属性对候选码的部分和传递依赖(更严格)。通常 3NF 已经足够。

SQL 语言基础

SQL(结构化查询语言)是关系数据库的标准语言。

SQL 分类

  • DDL(数据定义语言):CREATE, ALTER, DROP(创建、修改、删除数据库对象)。
  • DML(数据操纵语言):INSERT, UPDATE, DELETE, SELECT(增、删、改、查)。
  • DCL(数据控制语言):GRANT, REVOKE(权限授予与回收)。

常用查询语句

-- 查询所有列
SELECT * FROM 表名;

-- 查询指定列
SELECT 列1, 列2 FROM 表名;

-- 条件查询
SELECT * FROM 表名 WHERE 条件;

-- 模糊查询
SELECT * FROM 表名 WHERE 姓名 LIKE '张%';  -- %代表任意多个字符,_代表一个字符

-- 排序
SELECT * FROM 表名 ORDER BY 成绩 DESC;  -- 降序

-- 分组统计
SELECT 班级, COUNT(*) FROM 学生 GROUP BY 班级;

-- 连接查询
SELECT 学生.学号, 姓名, 课程名, 成绩
FROM 学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号;

-- 嵌套查询
SELECT 姓名 FROM 学生 WHERE 学号 IN()SELECT 学号 FROM 选课 WHERE 课程号='C01');

事务管理

事务

  • 定义:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
  • 例子:银行转账(A 账户扣钱,B 账户加钱)必须作为一个事务。

事务的特性(ACID)

  • 原子性(Atomicity):事务中的操作要么全部完成,要么全部不完成,不会结束在中间状态。
  • 一致性(Consistency):事务执行前后,数据库的完整性约束没有被破坏。
  • 隔离性(Isolation):并发执行的事务之间互不干扰,一个事务的内部操作对其他事务是隔离的。
  • 持久性(Durability):事务一旦提交,对数据库的改变是永久的,即使系统故障也不会丢失。

并发控制

  • 问题:多个事务并发可能产生丢失更新、读脏数据、不可重复读等问题。
  • 封锁:并发控制的主要技术。
    • 锁类型
      • 排他锁(X 锁,写锁):事务对数据加 X 锁后,可以读也可以写,其他事务不能加任何锁。
      • 共享锁(S 锁,读锁):事务对数据加 S 锁后,可以读但不能写,其他事务可以加 S 锁但不能加 X 锁。
    • 封锁协议:三级封锁协议解决不同问题。
      • 一级:修改前加 X 锁直到结束,可防止丢失修改。
      • 二级:在一级基础上,读数据前加 S 锁,读完即释放,可防止读脏数据。
      • 三级:在一级基础上,读数据前加 S 锁直到事务结束,可防止不可重复读。

故障恢复

  • 故障类型:事务故障、系统故障、介质故障。
  • 恢复技术:利用冗余数据(日志文件、数据备份)进行恢复。
  • 基本策略
    • 事务故障:由系统自动撤销(UNDO)未完成事务。
    • 系统故障:重启后重做(REDO)已提交但未写入磁盘的事务,撤销未完成事务。
    • 介质故障:重装备份,利用日志恢复。

三级模式

结构(ANSI/SPARC 架构)

外模式(用户模式或子模式)

  • 用户看到的数据视图,与具体应用相关。
  • 一个数据库多个外模式(可重叠)。
  • 作用:简化用户操作、增强安全性、支持逻辑独立性。
  • 例:不同用户看到不同的表或视图。

概念模式(逻辑模式)

  • 全局逻辑结构描述,所有用户的公共视图。
  • 一个数据库一个概念模式。
  • 包括实体、属性、联系、完整性约束。
  • 独立于存储细节,用 DDL 定义。

内模式(存储模式)

  • 物理存储结构描述(文件、索引、存储方式)。
  • 一个数据库一个内模式。
  • 包括存储记录、索引类型、数据压缩/加密等。
  • 对用户透明,DBA可调优。

两级映射

外模式/概念模式映射

  • 定义外模式与概念模式的对应关系。
  • 实现逻辑数据独立性。

概念模式/内模式映射

  • 定义概念模式与内模式的对应关系。
  • 实现物理数据独立性。

独立性

逻辑数据独立性

  • 概念模式改变(如增删表、列)不影响外模式及应用程序。
  • 通过修改外模式/概念模式映射实现。

物理数据独立性

  • 内模式改变(如存储结构调整、索引变更)不影响概念模式及上层。
  • 通过修改概念模式/内模式映射实现。

优点

  • 数据共享性高,用户视图独立。
  • 数据安全性强(通过外模式隐藏敏感数据)。
  • 数据完整性集中定义,易于维护。
  • 数据独立性强,应用程序与数据结构解耦(物理独立性)。
  • 简化用户操作,只需关注所需数据。
  • 便于DBA管理、优化存储。

示例(图书管理)

层次 内容
外模式 读者视图:书名、作者、价格、出版社名
概念模式 图书表(BookID, Title, Author, PublisherID, Price)
出版社表(PublisherID, Name, Address)
完整性约束
内模式 B+树索引(主键)、堆文件存储、辅助索引(出版社名)
posted @ 2026-03-28 17:19  AFewMoon  阅读(14)  评论(0)    收藏  举报