关系型数据库原理深度解析
一、关系模型基础
关系型数据库基于关系模型构建,关系模型将数据组织成二维表的形式,这些表被称为关系,在一个学生信息管理系统中,可能存在“学生表”“课程表”“选课表”等关系。
图片来源于网络,如有侵权联系删除
1、表结构
- 表由行和列组成,每一行代表一个实体实例,在“学生表”中,一行就代表一个学生的所有信息,每一列代表实体的一个属性,如学生表中的“学号”“姓名”“年龄”等。
- 每个表都有一个主键,主键是能够唯一标识表中每一行的属性或属性组合。“学生表”中的“学号”通常被设为主键,因为每个学生的学号是唯一的。
2、数据完整性约束
- 实体完整性:主键不能取空值,这确保了表中每行都能被唯一标识,如果允许主键为空,就无法准确区分不同的实体实例。
- 参照完整性:存在于表与表之间的关系约束,在“选课表”中,“学号”字段参照“学生表”中的“学号”,“课程号”字段参照“课程表”中的“课程号”,这就保证了选课记录中的学号和课程号必须是已经存在于相应表中的有效数据。
- 用户定义完整性:根据具体业务需求定义的约束,如规定学生的年龄必须在某个范围内。
二、关系代数操作
关系型数据库的操作基于关系代数,它是一种抽象的查询语言,用于对关系进行操作。
1、选择操作(σ)
- 选择操作是从关系中选择满足特定条件的元组(行),从“学生表”中选择年龄大于20岁的学生,这是通过对“年龄”属性进行条件判断,筛选出符合要求的行,而列的结构不变。
图片来源于网络,如有侵权联系删除
2、投影操作(π)
- 投影操作是从关系中选择某些属性列组成新的关系,从“学生表”中只选取“学号”和“姓名”两列来创建一个新的关系,用于显示学生的基本信息,同时去除了其他不必要的列。
3、连接操作(⋈)
- 连接操作是将两个或多个关系根据一定的条件组合成一个新的关系,通过“选课表”中的“学号”和“学生表”中的“学号”以及“选课表”中的“课程号”和“课程表”中的“课程号”进行连接,可以得到包含学生信息、课程信息以及选课关系的综合关系,从而能够查询出某个学生选了哪些课程以及课程的相关信息等。
三、存储结构与索引
1、存储结构
- 关系型数据库在存储数据时,通常采用基于磁盘的存储方式,数据以页(page)为单位进行存储,页是磁盘和内存之间数据传输的基本单位,表中的数据会按照一定的顺序存储在这些页中,按照主键的顺序存储可以提高查询效率。
- 数据库管理系统还会对数据进行组织,以减少数据冗余,采用规范化的设计,将数据分解到多个表中,通过关系来关联,避免重复存储相同的数据。
2、索引
- 索引是一种特殊的数据结构,它可以提高数据库的查询速度,索引就像是一本书的目录,通过索引可以快速定位到需要的数据,常见的索引类型有B - 树索引。
- 在“学生表”中,如果经常根据“姓名”进行查询,那么可以为“姓名”字段创建索引,当执行查询语句时,数据库系统首先查找索引,根据索引中的指针快速定位到包含目标数据的页,而不是逐行扫描整个表,索引也会占用额外的存储空间,并且在数据更新时需要维护索引的一致性。
图片来源于网络,如有侵权联系删除
四、事务管理
1、事务概念
- 事务是一组数据库操作的逻辑单元,这些操作要么全部成功执行,要么全部不执行,在银行转账系统中,从一个账户转出资金和向另一个账户转入资金这两个操作必须作为一个事务来处理,如果转出操作成功而转入操作失败,就会导致数据不一致。
2、ACID特性
- 原子性(Atomicity):事务中的所有操作是一个不可分割的整体,要么全部执行成功,要么全部失败回滚。
- 一致性(Consistency):事务执行前后,数据库的完整性约束没有被破坏,转账前后,总金额不变。
- 隔离性(Isolation):多个事务并发执行时,相互之间是隔离的,一个事务的执行不能被其他事务干扰。
- 持久性(Durability):一旦事务提交成功,其对数据库的修改将永久保存,即使系统发生故障也不会丢失。
关系型数据库通过关系模型、关系代数操作、合理的存储结构与索引以及有效的事务管理等原理,实现了对大量数据的高效存储、管理和查询操作,广泛应用于各种企业级和互联网应用的数据管理场景。
评论列表