[SingleSele]数据库系统概论(基础篇)笔记
数据库系统概论(基础篇) 中国人民大学
目录
初识数据库系统
引言
- 数据库系统的发展经历了三代演变
- 层次/网状数据库系统、关系数据库系统、新一代数据库系统
- 造就了四位图灵奖得主
- C.W.Bachman、E.F.Codd、James Gray、M.R.Stonebraker
- 发展了一门计算机基础学科
- 数据建模和DBMS核心技术为主,内容丰富领域宽广
- 带动了一个巨大相关产业
- DBMS及其相关工具产品、应用套件、解决方案

数据库的四个基本概念
- 数据 Data
- 数据库 Database,DB
- 数据库管理系统 Database Management System,DBMS
- 数据库系统 Database System,DBS
数据
- 数据(Data)是数据库中存储的基本对象
- 数据的定义
- 描述事物的符号记录
- 数据的种类
- 数字、文字、图形、图像、音频、视频、学生的档案记录、订单情况等
- 数据的含义称为为数据的语义,数据与其语义是密不可分的
- 日常生活中,人们可以直接使用自然语言来描述事物
- 计算机常常用记录来描述,如学生档案中的学生记录
- 数据的形式不能完全表达其内容
- 数据的解释
- 语义:学生姓名、性别、出生年份、籍贯、所在系别、入学时间
- 解释:李明是大学生,1995年5月生,男,江苏南京人,2013年考入计算机系
- 数据有结构:记录是计算机存储数据的一种格式或一种方法
数据库
- 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合
- 为什么要建立数据库
- 收集并抽取出一个应用所需要的大量数据,将其保存,以供进一步加工处理,抽取有用信息,转换为有价值的知识。
- 数据库的基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享、冗余度较小、易扩展
- 数据独立性较高
数据库定义
- 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合
- 可以供各种用户共享,具有最小冗余度和较高的数据独立性
- 数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复
数据库管理系统
- DBMS概念
- 位于用户应用与操作系统之间的一层数据管理软件
- 是基础软件,是一个大型复杂的软件系统
- 数据库管理系统的用途
- 科学地组织和存储数据、高效地获取和维护数据

- 数据库管理系统的主要功能
- 数据定义功能
- 提供数据定义语言(DDL)
- 定义数据库中的数据对象
- 数据组织、存储和管理
- 分类组织、存储和管理各种数据
- 确定数据在存储级别上的结构和存取方式
- 实现数据之间的联系
- 提供多种存取方法,提高存取效率
- 数据操纵功能
- 提供数据操纵语言(DML)
- 实现对数据库的基本操作(查询、插入、删除和修改)
- 数据库的事务管理和运行管理
- 数据的安全性、完整性、多用户对数据的并发使用
- 发生故障后的系统恢复数据库
- 由数据库管理系统统一管理和控制,保证事物正确运行
- 数据库的建立和维护功能
- 提供实用程序、工具,完成数据库数据批量装载,数据库转储,介质故障恢复,数据库的重组织和性能监视等
- 其他功能
- 数据库管理系统与网络中其他软件系统的通信
- 数据库管理系统系统间的数据转换
- 异构数据库之间的互访和互操作
- 数据定义功能
数据库系统
- DBS概念
- 是指在计算机系统中引入数据库后的系统构成
- 在不引起混淆的情况下常常把数据库系统简称为数据库
- 数据库系统的构成
- 数据库
- 数据库管理系统(及其应用开发工具)
- 应用程序
- 数据库管理员(DataBase Administrator,DBA)

数据管理技术的产生,数据管理系统的特点
数据管理技术的产生和发展
- 什么是数据管理
- 对数据进行分类、组织、编码、存储、检索和维护
- 数据处理和数据分析的中心问题
- 数据管理技术的发展过程
- 人工管理阶段(20世纪50年代中之前)
- 文件系统阶段(20世纪50年代末~60年代中)
- 数据库系统阶段(20世纪60年代末~现在)



- 数据库系统的特点
- 数据结构化
- 数据的共享性高,冗余度低且易扩充
- 数据独立性高
- 数据由数据库管理系统统一管理和控制
数据结构化


数据独立性
- 物理独立性
- 指用户的应用程序与数据库中数据的物理存储是相互独立的。当数据的物理存储改变了,应用程序不用改变
- 逻辑独立性
- 指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,应用程序不用改变
- 数据独立性由数据库管理系统的二级映像功能来保证
数据由数据管理系统统一管理和控制

数据库系统的核心:数据模型
概念模型、数据模型
数据模型
- 数据模型是对现实世界数据特征的抽象
- 通俗地讲数据模型就是现实世界的模拟
- 数据模型应满足三方面要求
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
- 数据模型是数据库系统的核心和基础
两类数据模型
- 概念模型,也称信息模型
- 它是按用户的观点来对数据和信息建模,用于数据库设计
- 逻辑模型和物理模型
- 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等
按计算机系统的观点对数据建模,用于DBMS实现 - 物理模型是对数据库最底层的抽象
描述数据在系统内(磁盘上)的表示和存取方法
- 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等

概念模型
- 概念模型的用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户进行交流的语言
- 对概念模型的基本要求
- 较强的语义表达能力
- 简单、清晰、易于用户理解
信息世界中的基本概念
- 实体 Entity
- 客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。
- 属性 Attribute
- 实体所具有的某一特征称为属性。一个实体可以由若干个属性来刻画。
- 码 Key
- 唯一标识实体的属性集称为码。
- 实体型 Entity Type
- 用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
- 实体集 Entity Set
- 同一类型实体的集合称为实体集。
- 联系 Relationship
- 现实世界中事物内部以及事物之间的联系在信息世界中反应为实体(型)内部的联系和实体(型)之间的联系
- 实体内部的联系:是指组成实体的各属性之间的联系
- 实体之间的联系:是指不同实体集之间的联系,有一对一、一对多、多对多等多种类型
实体-联系方法
- 概念模型的一种表示方法
- 实体-联系方法 Entity-Relationship Approach
- 用E-R图来描述现实世界的概念模型
- E-R方法也称E-R模型
数据模型的组成要素
- 数据模型是严格定义的一组概念的集合
- 精确的描述了系统的静态特征、动态特征和完整性约束条件
- 数据模型由三部分组成
- 数据结构——描述系统的静态特征
- 数据操作——描述系统的动态特征
- 完整性约束 Integrity Constraint
数据结构
- 刻画数据模型性质的重要方面
- 数据结构的类型来命名数据模型
- 层次结构-层次模型、网状结构-网状模型、关系结构-关系模型
- 描述数据库的组成对象——对象的类型、内容、性质
- 描述对象之间的联系
数据操作
- 数据操作
- 对数据库中各种对象的实例允许执行的操作的集合
- 包括操作及有关的操作规则
- 数据操作的类型
- 查询
- 更新(包括插入、删除、修改)
- 数据操作语言
- 定义数据操作的确切含义、符号、优先级
- 实现数据操作的语言
- 查询语言——Query Language
- 更新语言——DML
数据的完整性约束条件
- 一组完整性规则的集合
- 完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则
- 用以限定符合数据模型的数据库状态及状态的变化,以保证数据的正确、有效和相容。
- 数据模型对完整性约束条件的定义
- 反映和规定必须遵守的基本的通用的完整性约束条件
- 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件
层次模型、网状模型
常用的数据模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
- 非结构化数据模型、图模型
层次模型
- 层次模型用树形结构来表示各类实体以及实体间的联系
- 表示方法
- 实体型:用记录类型描述,每个节点表示一个记录类型(实体)
- 属性:用字段描述,每个记录类型可包含若干个字段
- 联系:用节点之间的连线表示记录类型(实体)之间的一对多的父子联系
- 层次模型的定义
- 满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个节点没有双亲节点,这个节点称为根结点
- 根以外的其他节点有且只有一个双亲节点
- 满足下面两个条件的基本层次联系的集合为层次模型
层次模型的数据结构

层次模型的数据操纵与完整性约束
- 层次模型的数据操纵
- 查询
- 插入
- 删除
- 更新
- 层次模型的完整性约束条件
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
层次模型的优缺点
- 优点
- 层次模型的数据结构比较简单清晰
- 查询效率高,性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
- 缺点
- 结点之间的多对多联系表示不自然
- 对插入和删除操作的限制多,应用程序的编写比较复杂
- 查询子女结点必须通过双亲结点
- 层次数据库的命令(语音)趋于程序化
网状模型
- 网状数据库系统采用网状结构来表示各类实体以及实体间的联系
- 表示方法(与层次数据模型相同)
- 实体型:用记录类型描述,每个结点表示一个记录类型(实体)
- 属性:用字段描述,每个记录类型可包含若干个字段
- 联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系
- 网状模型的定义
- 满足下面两个条件的基本层次类型的集合
- 允许一个以上的节点无双亲
- 一个结点可以有多于一个的双亲
- 满足下面两个条件的基本层次类型的集合
网状模型的数据结构

多对多联系在网状模型中的表示
- 网状模型间接表示多对多联系
- 方法:将多对多联系分解成一对多联系
网状模型的数据操纵与完整性约束
- 导航式的查询语言和增删改操作语言
- 完整性约束条件不严格
- 允许插入尚未确定双亲结点值的子女结点值
- 允许只删除双亲结点值
- 实际的网状数据库系统提供了一定的完整性约束
- 支持码的概念:唯一标识记录的数据项的集合,取唯一的值
- 保证一个联系中双亲记录与子女记录之间某些约束条件
网状模型的优缺点
- 优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲
- 具有良好的性能,存取效率高
- 缺点
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握
- DDL、DML语言复杂,用户不容易使用
- 记录之间联系是通过存取路径实现的,应用程序必须选择存取路径,加重了程序员的负担
关系模型
- 关系数据库系统采用关系模型作为数据的组织方式
- 1970年美国IBM公司SanJose研究室的研究院E.F.Codd首次提出了数据库系统的关系模型
- 数据库厂商推出的数据库管理系统几乎都支持关系模型

- 关系 Relation
- 一个关系对应通常说的一张表
- 元组 Tuple
- 表中的一行即为一个元组
- 属性 Attribute
- 表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码 Key
- 也称码键。表中的某个属性组,它可以唯一确定一个元组
- 域 Domain
- 是一组具有相同数据类型的值的集合。属性的取值范围来自某个域
- 分量
- 元组中的一个属性值
- 关系模式
- 对关系的描述
- 关系必须是规范化的,满足一定的规范条件
- 每一个分量必须是一个不可分的数据量
- 不允许表中还有表
关系模型的操纵与完整性约束
- 数据操作是集合操作,操作对象和操作结果都是关系
- 查询
- 插入
- 删除
- 更新
- 存取路径对用户隐蔽,用户只要指出“找什么”,不必详细说明“怎么找”,提高了数据的独立性,提高了用户生产率
- 关系的完整性约束条件
- 实体完整性(关系的两个不变性)
- 参照完整性(关系的两个不变性)
- 用户定义的完整性
关系模型的优缺点
- 优点
- 建立在严格数学概念的基础上
- 概念单一
- 实体和各类联系都用关系来表示
- 对数据的检索结果也是关系
- 关系模型的存取路径对用户透明
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
- 缺点
- 存取路径对用户透明,查询效率往往不如格式化数据模型
- 为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度
数据库系统的结构
数据库系统的结构
- 从数据库应用开发人员角度看
- 数据库采用三级模式结构,是数据库系统内部的系统结构
- 从数据库最终用户角度看
- 数据库系统的结构有
- 单用户结构
- 主从式结构
- 分布式结构
- 客户-服务器
- 浏览器-应用服务器/数据库服务器
- 数据库系统的结构有
数据库系统模式的概念
- 模式 Schema
- 是对数据库逻辑结构和特征的描述
- 是型的描述,不涉及具体值
- 模式是相对稳定的
- 实例 Instance
- 数据库某一时刻的状态——模式的一个具体值
- 同一个模式可以有很多实例
数据库系统的三级模式结构

模式
- 模式(也称逻辑模式)
- 数据库中全体数据的逻辑结构和特征的描述
- 所有用户的公共数据视图
- 一般,某个应用的数据库有一个模式
- 模式是数据库系统模式结构的中心
- 与数据的物理存储细节和硬件环境无关
- 预聚体的应用程序、开发工具及高级程序设计语言无关
- 定义模式
- DDL定义数据的逻辑结构,以某种数据模型为基础
- 数据记录有哪些数据项构成,数据项的名字、类型、取值范围等
- 定义数据之间的关系
- 定义与数据有关的安全性、完整性要求
- DDL定义数据的逻辑结构,以某种数据模型为基础
外模式
- 外模式(也称子模式或用户模式)
- 数据库用户使用的局部数据的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
- 外模式与模式的关系
- 外模式通常是模式的子集、一个模式可以有多个外模式
- 反映了不同用户的应用需求、看待数据的方式、对数据保密的要求
- 对模式中某一数据,在不同的外模式中,结构、类型、长度、保密级别都可以不同
- 外模式与应用的关系
- 一个外模式可以为多个应用系统所使用,一个应用程序只能使用一个外模式
- 外模式的用途
- 每个用户只能看见和访问所对应的外模式中的数据,简化用户视图
- 保证数据库安全性的一个有力措施
内模式
- 内模式(也称存储模式)
- 是数据物理结构和存储方式的描述
- 是数据在数据库内部的表示方式
- 记录的存储方式(比如顺序存储,堆存储,Cluste按hash方法存储等)
- 索引的组织方式(B+树,Bitmap,Hash)
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定——如定长/变长,记录是否可以跨页存放等
- 一个数据库只能有一个内模式
数据库的二级映像功能与数据独立性
- 三级模式是对数据的三个抽象级别
- 数据库管理系统内部提供二级映像
- 外模式/模式映像
- 模式/内模式映象
- 三个抽象层次的联系和转换
外模式/模式映像
- 对每一个外模式,有一个外模式/模式映像
- 定义外模式与模式之间的对应关系
- 映像定义通常包含在外模式中
- 保证数据的逻辑独立性
- 当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变。
- 应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
模式/内模式映象
- 模式/内模式映象
- 定义了数据全局逻辑结构与存储结构之间的对应关系
- 如,说明某个逻辑记录对应何种存储结构
- 定义了数据全局逻辑结构与存储结构之间的对应关系
- 数据库中模式/内模式映象是唯一的
- 该映像定义通常包含在模式描述中
- 保证数据的物理独立性
- 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
- 模式不变,则应用程序不变,保证了数据与程序的物理独立性,简称数据的物理独立性
数据库的二级映像功能与数据独立性的意义
- 保证了应用程序的稳定性
- 除非应用需求本身发生变化,否则应用程序一般不需要修改
- 从程序为中心——发展为以数据为中心
- 具有了数据与程序之间的独立性,使的数据的定义和描述可以从应用程序中分离出去
- 数据的存取由数据库管理系统管理
- 简化了应用程序的编制
- 大大减少了应用程序的维护和修改
数据库系统的组成
数据库系统的组成
- 数据库
- 数据库管理系统(及其开发工具)
- 应用程序
- 数据库管理员
硬件平台及数据库
- 数据库系统对硬件资源的要求
- 足够大的内存
- 足够大的磁盘或磁盘阵列等外部设备
- 较高的通道能力,提高数据传送率
软件
- 数据库管理系统
- 支持数据库管理系统运行的操作系统
- 与数据库接口的高级语言及其编译系统
- 以数据库管理系统为核心的应用开发工具
- 为特定应用环境开发的数据库应用系统
人员
- 数据库管理员
- 系统分析员和数据库设计人员
- 应用程序员
- 最终用户

不同的人员涉及不同数据的抽象级别,具有不同的数据视图
数据库管理员 DBA
- 参与确定数据库中的信息内容和结构
- 参与数据库的存储结构和存取策略的设计
- 参与确定数据安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 周期性转储数据库
- 数据文件
- 日志文件
- 系统故障恢复
- 介质故障恢复
- 监视审计文件
- 周期性转储数据库
- 数据库的改进和重组
- 性能监控和调优
- 定期对数据库进行重组织,以提高系统的性能
- 需求增加和改变时,数据库需要重构造
系统分析员
- 负责应用系统的需求分析和规范说明
- 与用户及数据库管理员结合,确定系统的软硬件配置
- 参与数据库系统的概要设计
数据库设计人员
- 参加用户需求调查和系统分析
- 确定数据库中的数据
- 设计数据库各级模式
应用程序员
- 设计和编写应用程序的程序模块
- 进行调试和安装
用户
用户是指最终用户EndUser。他们通过应用系统的用户接口使用数据库。
- 偶然用户
- 不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息
- 企业或组织机构的高中级管理人员
- 简单用户
- 主要工作是查询和更新数据库
- 银行的职员、机票预订人员、旅馆总台服务员
- 复杂用户
- 工程师、科学家、经济学家、科技工作者等
- 直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的应用程序接口编制自己的应用程序
小结

概念结构设计
概念模型
概念结构设计
- 什么是概念结构设计
- 将需求分析得到的用户需求抽象为信息结构即****概念模型**的过程就是概念结构设计
- 概念结构是现实世界的一个真实模型。是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定
- 概念模型的用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户之间进行交流的语言
- 对概念模型的基本要求
- 较强的语义表达能力
- 简单、清晰、易于用户理解




E-R模型
实体之间的联系
- 两个实体型之间的联系,可分为三种
- 一对一联系(1:1)
- 一对多联系(1:n)
- 多对多联系(m:n)
- 两个以上的实体型之间的联系,也存在着一对一、一对多、多对多联系
- 单个实体型内部的联系,也存在一对一、一对多、多对多的联系
- 把参与联系的实体型的数目称为联系的度
- 两个实体型之间的联系度为2,称为二元联系
- 三个实体型之间的联系度为3,称为三元联系
- N个实体型之间的联系度为N,称为N元联系
E-R模型
- E-R图:提供了表示实体型、属性和联系的方法
- 实体型:用矩形表示,矩形框内写明实体名
- 属性:用椭圆表示,并用无向边将其与相应的实体型连接起来
- 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m: n)
- 联系可以具有属性
![]()
![]()
ER模型

数据模型
- 映射的概念
- 需要抽取对象的因素,并用一定语言描述清楚
![]()
ER模型的要素
- 实体集
- 属性
- 简单属性
- 复合属性
- 关系模型目前无法处理
- 可以将复合属性中的属性拆分为单独属性
- 多值属性
- 关系模型目前无法处理
- 可以将多值属性变成一个新的实体
- 关系属性
- 属性也可以代表联系
- 约束
- 码约束
- 作为码的属性的每个值仅表示一个实体
- 存在一个primary key和多个candidate key
- 作为码的属性的每个值仅表示一个实体
- 码约束
- 联系
- 度
- 参与者的数量
- 基数比约束
![]()
- 一元联系
- 度
设计原则

关系数据库
关系数据结构
关系数据库简介

关系数据结构
- 单一的数据结构——关系
- 现实世界的实体以及实体间的各种联系均用关系来表示
![]()
域
- 域是一组具有相同数据类型的值的集合
- 整数
- 实数
- 介于某个取值范围的整数
- 指定长度的字符串集合
- ......
笛卡尔积
- 给定一组域D1,D2, ......,Dn,允许其中某些域是相通的。D1,D2, ......,Dn的笛卡尔积为
D1xD2x ......xDn=
{(d1,d2, ...,dn) | di∈Di,i=1, 2, ..., n} - 所有域的所有取值的任意组合
- 笛卡尔积可以看成是关系的“域”
- 基数(CardinalNumber)
- 笛卡尔积的表示方法
- 笛卡尔积可表示为一张二维表
- 表中的每行对应一个元组,表中的每列对应一个域
关系
- D1xD2x ......xDn的子集称作关系,表示为
R(D1xD2x ......xDn)
R:关系名
n:关系的目或度(degree) - 元组
关系中的每个元素(d1,d2...dn)叫做一个n元组(n-tuple)或简称元组,通常用t表示 - 属性
- 关系中不同列称为属性(Attribute),每个属性有一个名字
- n目关系必有n个属性
- 码
- 候选码 Candidate key
- 若关系中的某一属性组的值能唯一地标识一个元组,则该属性组为候选码
- 简单的情况:候选码只包含一个属性
- 全码 All-key
- 最极端的情况:关系没事的所有属性组是这个关系模式的候选码,称为全码
- 主码 Primary key
- 若一个关系有多个候选码,则选定一个为主码
- 主属性 Prime Attribute
- 候选码的诸属性称为主属性
- 不包含在任何候选码中的属性称为非主属性(Non-Prime Attribute)或非码属性(Non-key Attribute)
- 候选码 Candidate key
- 单元关系与二元关系
- 当n=1时,称该关系为单元关系(Unary relation)或一元关系
- 当n=2时,称该关系为二元关系(Binary relation)
- 基本关系的性质
- 列是同质的(Homogeneous),即来自同一属性
- 不同的列可以出自同一个域
- 列的顺序无所谓,列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须取原子值
关系模式
- 关系模式(Relation Schema)是型,关系是值
- 关系模式是对关系的描述
- 元组集合的结构
- 属性构成
- 属性来自的域
- 属性与域之间的映像关系
- 完整性约束条件
- 元组集合的结构
定义关系模式
- 关系模式可以形式化地表示为
R(U, D, DOM, F)- R 关系名
- U 组成该关系的属性名
- D U中属性所来自的域
- DOM 属性向域的映像集合
- F 属性间数据的依赖关系的集合
- 关系模式通常可以简记为
R(U)或R(A1,A2,...,An)- R:关系名
- An:属性名
- 注:域名及属性向域的映像常常直接说明为属性的类型、长度
关系模式与关系 的“关系”
- 型与值的关系
- 关系模式:是对关系的描述,是静态的、稳定的
- 关系:是关系模式在某一时刻的状态或内容,是动态的,随时间不断变化的
- 关系模式和关系往往统称为关系
关系数据库
- 关系数据库
- 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
- 关系数据库的型与值
- 关系数据库的型:关系数据库模式,是对关系数据库的描述
- 关系数据库的值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库
关系的完整性
关系的三类完整性约束
- 实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
- 用户定义的完整性
- 应用领域需要遵循的约束条件,体现了具体领域中的语义约束
实体完整性
- 实体完整性(Entity Integrity)
- 关系的主属性不能取空值
- 空值就是“不知道”或“不存在”或“无意义”的值
- 说明
- 实体完整性规则是针对基本关系而言的
一个基本表通常对应现实世界的一个实体集 - 现实世界中的实体是可以区分的,即它们具有某种唯一性标识
- 关系模型中以主码作为唯一性标识
- 主码中的属性即主属性不能取空值。
主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点矛盾,因此这个规则被称为实体完整性
- 实体完整性规则是针对基本关系而言的
关系的完整性
关系间的引用
- 在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用
![]()
![]()
![]()
外码 Foreign Key
- 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
- 基本关系R称为参照关系(Referencing Relation)
- 基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)
![]()
![]()
- 关系R和S不一定是不同的关系
- 目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上
- 外码并不一定要与相应的主码同名
- 当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
参照完整性规则
- 参照完整性规则
- 若属性(或属性组)F是基本关系R的外码,他与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元素在F上的值必须为
- 或者取空值(F中每个属性值均为空值)
- 或者等于S中某个元组的主码值
- 若属性(或属性组)F是基本关系R的外码,他与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元素在F上的值必须为
![]()
![]()
![]()
用户定义的完整性
- 针对某一具体关系数据库的满足条件,反映某一具体应用所涉及的数据必须满足的语义要求
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理他们,而不需由应用程序承担这一功能
![]()
关系代数
传统集合操作
关系数据库语言分类

关系代数
- 关系代数是一种抽象的查询语言,它用对关系的运算表达查询
- 关系代数
- 运算对象是关系
- 运算结果也是关系
- 关系代数的运算富有两类:集合运算符和专门的关系运算符
![]()
符号
- R, \(t\in R\), t[Ai]
- A, t[A], A
- \(\overgroup{t_r\\ t_s}\)
- 象集Zx
运算
- 并 Union
- 差 Difference
- 交 Intersection
- 笛卡尔积 Cartesian Product
关系特有操作
选择 Selection
- 又称为限制 Restriction
- 含义
投影 Projection
- 从R中选择出若干属性列组成新的关系
- 主要是从列的角度进行运算
- 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
连接 Join
- 也称\(\theta\)连接
- 运算的含义
- 等值连接 Equijoin
- \(\theta\)为'='的连接运算
![]()
- 自然连接
![]()
![]()
- 悬浮元组
- 外连接Outer Join
除运算 Division
SQL概述
SQL概述

SQL历史


SQL特点
- 综合统一
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁,易学易用
SQL的基本概念
- SQL支持关系数据库三级模式结构
- 基本表
- 本身独立存在的表
- SQL中一个关系就对应一个基本表
- 一个(或多个)基本表对应一个存储文件
- 一个表可以带若干索引
- 存储文件
- 逻辑结构组成了关系数据库的内模式
- 物理结构对用户是隐蔽的
- 视图
- 从一个或几个基本表导出的表
- 数据库中只存放视图的定义而不存放视图对应的数据
- 视图是一个虚表
- 用户可以在视图上再定义视图
数据查询
单表查询
语句格式


- 选择表中的若干列
![]()
![]()
![]()
![]()
![]()
- 选择表中的若干元组
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
- ORDER BY语句
![]()
![]()
- 聚集函数
![]()
![]()
![]()
- GROUP BY子句
![]()
![]()
![]()
![]()
连接查询

- 等值与非等值连接查询
![]()
![]()
![]()
![]()
![]()
![]()
![]()
- 自身连接
![]()
![]()
- 外连接
![]()
![]()
![]()
- 多表连接
![]()
嵌套查询




带有in谓词的子查询





带有比较运算符的子查询





带有ANY或ALL谓词的子查询







带有EXISTS谓词的子查询











集合查询


SQL小结






数据定义



模式定义




数据类型


模式与表


基本表定义




修改基本表




删除基本表



索引定义




修改索引

删除索引

数据的更新
插入数据


插入元组






插入子查询结果



修改数据


修改某一个元组的值 SET

修改多个元组的值

带子查询的修改语句 WHERE

删除数据


删除某一个元组的值 WHERE

删除所有元组的值

带子查询的删除 WHERE

视图

视图的作用








定义视图












删除视图


查询视图






更新视图







数据库完整性
数据库完整性概述及实体完整性
数据库的完整性
- 数据的正确性
- 数据的相容性
![]()
![]()
数据库的安全性
维护数据库的完整性
为维护数据库的完整性,数据库管理系统必须
提供定义完整性约束条件的机制

提供完整性检查机制

提供违约处理机制

由DBMS进行完整性检查的好处

实体完整性
实体完整性定义




实体完整性检查和违约处理



参照完整性
参照完整性定义





参照完整性检查

向参考表添加元组

在参考表修改元组

从被参考表删除元组

在被参考表修改元素

参照完整性违约处理


用户定义的完整性

属性上的约束条件
定义





检查和违约处理

元组上的约束条件
定义



检查和违约处理

完整性的约束命名子句





断言

断言的创建




断言的删除

触发器

定义触发器
















激活触发器

删除触发器

































































































浙公网安备 33010602011771号