数据库系统概念与实现(一)
2016年更新
2016年我发布了我自己的数据库QDB.01现已开源,提供数据操作,事务管理,索引等等机制,欢迎大家前往Github一起参与我的开源计划
前言:
本章共40章,将从全面剖析数据库的概念及底层知识,前15章可作为本科生参考,后25章可作为研究生的数据库参考
数据库系统
何为数据库系统,根据《耶鲁大学》的《数据库系统概念》我们可以知道,数据库系统是一些互相关联的数据以及一组使得用户可以访问和修改这些数据的程序的集合
数据库系统的主要目的是为用户提供数据的抽象视图,换言之,数据库系统隐藏了关于数据存储和维护的一些细节。
数据抽象
由于许多数据库系统的用户并不会对数据库进行专业化的操作,所以身为数据库系统的开发人员应该通过以下几个层次来为用户屏蔽复杂性,以简化用户和数据库系统的交互操作
物理层
此为数据库最低层次的抽象,描述了数据实际上是怎么存储的,物理层详细描述复杂的底层数据结构
逻辑层
描述了数据库中存储什么数据以及这些数据间存在什么样的关系,因此逻辑词就可以通过少量相对简单的结构描述了整个数据库
虽然在物理层方面会涉及很多复杂的底层数据结构但逻辑词的用户不比知道这样的复杂性,这被称为物理数据独立性(physical data independence)
数据库管理员使用抽象的逻辑层必须确定数据库中应该保存哪些信息
视图层
描述了整个数据库的一部分,由于一个大型数据库中所存储的信息的多样性,有些时候,用户并不会关注所有的信息,而只需访问数据库的一部分
视图层抽象的定义正是为了使这样的用户与数据库系统的交互更加简单,数据库系统可以为同一数据库提供多个视图
总结
数据库系统为数据库开发者屏蔽了许多物理层的最底层的存储细节,而数据库管理员则需要了解数据组织的某些细节
数据库管理员常常在逻辑层上进行工作
而所谓的用户看见的是为其屏蔽了数据类型细节的一组应用程序,视图层上定义了数据库的多个视图,视图除了屏蔽了数据库逻辑层细节以外
视图还提供了防止用户访问数据库的某些部分的安全机制,比如在教学管理系统中,学生就不可以访问老师的工资信息。
常见的数据库DB2的系统结构
实例和模式
实例:
特定时刻存储在数据库中的信息集合称作数据库的一个实例,而数据库的总体设计称作数据库模式,数据库模式即使发生变化也不会频繁
在前面我们讨论了数据库不同的抽象层次,数据库系统可以分为几种不同的模式,物理模式在物理层描述数据库的设计,逻辑模式则在
逻辑层描述数据库的设计,数据库在视图层也可以有几种模式,有时称为子模式,它描述了数据库的不同视图
因为程序员使用逻辑模式来构建数据库应用程序,所以逻辑模式是目前最重要的一种模式,应用程序如果不依赖于物理模式,它们就被称为是具有物理数据独立性
因此即使物理模式改变了它们也无需重写
数据模型
数据库结构的基础就是数据模型,数据模型是一个描述数据,数据联系,数据语义以及一致性约束的概念工具的集合
数据模型可被划分为四类:
关系模型:关系模型用表的集合来表示数据和数据间的关系,每个表有多个列,每列都有唯一的列名
关系模型是基于记录的模型的一种,基于记录模型名称的由来是因为数据库是由若干种固定格式的记录来构成的,每个表包含某种特定类型的记录,每个记录类型定义了
固定数目的字段(或属性),表的列对应于记录类型的属性,常见的关系型数据库有MySQL,Oracle等。
实体-联系模型 实体-联系数据模型,本质是一组被称为实体的基本对象以及这些对象间的联系构成的
基于对象的数据模式:面向对象的数据模型可以看作成E-R模型增加了封装、方法(函数)和对象标识等概念后的扩展,对象-关系模型结合了面向对象的数据模型和关系模型的特征
半结构化数据模型:半结构化数据模型允许那些相同类型的数据项含有不同的属性集的数据定义
2013-05-01 于GitHub
—————————————————————————————————————————————————————-分割线————————————————————————————————————————————————————————
2020-01-08搬运