数据库系统概念笔记——第一章 引言

第一章 引言

数据库管理系统(DataBase Management System, DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合通常称作数据库(database)

==目的:==为了管理大量的信息。

数据库系统的应用

  • 企业信息
  • 银行和金融
  • 大学
  • 航空业
  • 电信业

数据库系统的目标

文件处理系统(file processing system)是传统的操作系统支持的,永久记录被存储在多个不同文件中。

缺点:

  • 数据的冗余和不一致(data redundancy and inconsistency)
  • 数据访问困难(difficult in accessing data)
  • 数据独立(data isolation)
  • 完整性问题(integrity problem)
  • 原子性问题(atomicity problem)
  • 并发访问异常(concurrent access anomaly)
  • 安全性问题(security problem)

数据视图

数据抽象

  • 物理层(physical level): 最低层次的抽象,描述数据实际上是怎样存储的。
  • 逻辑层(logical level):比物理层稍高的抽象,描述数据中存储什么数据及这些数据间存在什么关系。
  • 视图层(view level):最高层次的抽象,只描述整个数据库的某个部分。

实例和模式

数据库模式与实例的概念可以通过程序设计语言写出的程序进行类比理解。数据库模式对应于程序设计语言中的变量声明(以及与之关联的类型的定义)。每个变量在特定的时刻会有特定的值,程序中变量在某一时刻的值对应于数据库模式的一个实例。

数据库系统可以分为几种不同的模式:

  • 物理模式(physical schema)在物理层描述数据库的设计
  • 逻辑模式(logical schema)在逻辑层描述数据库的设计
  • 数据库在视图层也有几种模式,也称为子模式(subschema),描述了数据库的不同视图。

数据模型

数据库结构的基础是数据模型(data model)。数据模型是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。数据模型提供了一种描述物理层、逻辑层以及视图层数据库设计的方式。

数据模型可以分为四类:

  • 关系模型(relation model):关系模式是基于记录的模型的一种。
  • 实体-联系模型(entity-relationship model):实体-联系(E-R)数据模型基于对现实世界的这样一种认识。
  • 基于对象的数据模型(object based data model)
  • 半结构化数据模型(semistructured data model):半结构化数据模型允许那些相同类型的数据项含有不同属性集的数据定义。

数据库语言

数据库系统提供数据定义语言(data definition language)来定义数据库模式, 以及数据操纵语言(data manipulation language)来表达数据库的查询和更新。

数据操纵语言

**数据操纵语言(data manipulation language,DML)**是这样一种语言,它使得用户可以访问或操纵那些按照某种适当的数据模型组织起来的数据,有以下访问类型:

  • 对存储在数据库中的数据进行检索
  • 向数据库中插入新的信息
  • 从数据库中删除信息
  • 修改数据库中存储的信息

通常有两类基本的数据操纵语言:

  • 过程化DML(procedural DML)要求用户指定需要什么数据以及如何获取这些数据。
  • 生命式DML(declarative DML)要求用户指定需要什么数据,而不指明如何获取这些数据。

查询(query)是要求对信息进行检索的语句。DML中设计信息检索的部分称作查询语言(query language)。

数据定义语言

数据库模式是通过一系列定义来说明,这些定义由一种称作**数据定义语言(data definition language,DDL)**的特殊语言来表达,DDL也可用于定义数据的其他特征。

数据库系统所使用的存储结构和访问方式是通过一系列特殊的DDL语言来说明的,这种特殊的DDL称为数据存储和定义(data storage and definition)语言。

存储在数据库中的数据值必须满足某些一致性约束(consistency constraint)

  • 域约束(domain constraint):每个属性必须对应于一个所有可能的取值构成的域。声明一种属性属于某种具体的域就相当于约束它可以取的值。
  • 参考完整性(referential integrity):一个关系中给定属性集上的取值也在另一关系的某一种属性集的取值中出现。
  • 断言(assertion):一个断言就是数据库需要时刻满足的某一条件。域约束和参照完整性约束是断言的特殊形式。
  • 授权(authorization):常见的权限有读权限(read authorization)、插入权限(insert authorization)、更新权限(update authorization)和删除权限(delete authorization)。

关系数据库

关系数据库是基于关系模型,使用一系列来表达数据以及这些数据之间的联系。

每个表有多个列,每个列有唯一的名字。

在这里插入图片描述
关系模型是基于记录的模型的一个实例,基于记录的模型,是因为数据库的解构是几种固定格式的记录。每个记录包含一种特定类型的记录。每个记录类型定义固定数目的字段或属性。表的列对应记录类型的属性。

数据操纵语句

SQL查询语言是非过程化的,它以几个表作为输入,总是仅返回一个表。
在这里插入图片描述
这个查询指定了从instructor表中要取回的dept_name为History的那些行,并且那些行的name数据要显式出来。

数据定义语言

SQL提供了丰富的DDL语言,我们可以定义表、完整性约束,断言等等。

在这里插入图片描述

数据库设计

数据库设计的主要内容是数据库模式的设计。

设计过程

数据设计的初始阶段是全面刻画预期的数据库用户的数据需求。

概念设计(conceptual design)阶段开发出来人的模式提供给企业的详细概述。

一个开发完全的概念模式还将指出企业的功能需求,在功能需求说明(specification functional requirement)中,用户描述数据之上的各种操作。

逻辑设计阶段(logical design phrase)设计者将高层的概念模式映射到要使用的数据库系统的实现数据模型上。

大学机构的数据库设计

初始的用户需求说明可以基于与数据库用户的交流以及设计者自己对大学结构的分析。主要的特性

  • 大学分为多个系,每个系由自己唯一的名字(dept_name)来标识,坐落在特定的建筑物(building)中,有它的经费预算(budget)
  • 每个系有一个开设课程列表。每个课程有课程号(course_id)、课程名(title)、系名(dept_name)和学分(credits)和可能先修的要求(prerequisites)。
  • 教师由个人唯一的标识号(ID)来标识,每个教师都有名字(name)、所在系(dept_name)和工资(salary)。
  • 学生由个人唯一的标识号(ID)来标识,每个学生有姓名(name)、主修的系(dept_name)和已修学分数(tot_cred)
  • 大学维护一个教室列表,详细说明楼名(building)、房间号(room_number)和容量(capacity)
  • 大学维护开设的所有课程的列表,每次开课由课程号(course_id)、开课号(sec_id)、年(year)和学期(semester)来标识,与之关联的有学期(semester)、年(year)、楼名(building)、房间号(room_number)和时段号(time_slot_id)。
  • 系由一个教学任务列表,说明每位教室的授课情况。
  • 大学有一个所有学生课程注册的列表,说明每位学生在那些课程在哪次开课中注册了。

实体-联系模型

实体-联系(E-R)数据模型使用一组称作实体的基本对象,以及这些对象间的联系。数据库中的实体通过属性(attribute)集合描述。

联系(relationship)是几个实体之间的关系。同一类型的所有实体的集合称作实体集(entity set),同一类型的所有联系的集合称作联系集合(relationship set)。

规范化

数据存储和查询

存储管理器

存储管理器是数据库系统中负责在数据库中存储的底层数据与应用程序以及系统提交的查询之间提供接管口的部件。存储管理器负责与文件管理器进行交互。

存储管理部件包括:

  • 权限及完整性管理器(authorization and integrity manager):检测是否满足完整性约束,并检查试图访问数据的用户的权限。
  • 事务管理器(transaction manager):保证即使发生了故障,数据库也保持在一致的(正确的)状态,并保证并发事务的执行不发生冲突。
  • 文件管理器(file manager): 管理磁盘存储空间的分配,管理用于表示磁盘上所有存储信息的数据结构。
  • 缓冲区管理器(buffer manager):负责将数据从磁盘读取到内存中来,并决定哪些数据应被缓冲存储在内存汇中。

存储管理实现了几种数据结构:

  • 数据文件(data files):存储数据库本身
  • 数据字典(data dictionary):存储数据库的元数据,尤其是数据库模式
  • 索引(index):提供对数据项的快速访问

查询处理器

存储处理器组件包括:

  • DDL解释器(DDL interpreter):解释DDL语句并将这些定义记录在数据字典中
  • DML编译器(DML compiler):将查询语言中的DML语句翻译为一个执行方案,包括一系列查询执行引擎所能理解的低级指令。
  • 查询执行引擎(query evaluation engine):执行由DML编译器产生的低级指令

事务管理

事务(transaction)是数据库应用中完成单一逻辑功能的操作集合,每个事务是一个即具有原子性又具有一致性的单元。原子性和持久性的保证是数据库系统自身的指责,是恢复管理器(recovery manager)的指责。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值