前言:博主是在校大二学生,目前正在学习数据库系统概论课程,笔记一直在更新完善,若有不妥的地方,请大家提出宝贵的意见,欢迎大家点赞收藏!!!(万分感谢,预计三月底完成所有笔记更新)
1.1.1 数据库的4个基本概念
一、数据(data)
1)定义:是数据库中存储的基本对象,描述事物的符号记录
2)种类:数字、文字、图形、图像、音频、视频等
3)特点:数据与其语义是不可分的
二、数据库(Database,DB)
1)定义:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合
2)基本特征:
- 按一定的数据模型组织、描述和储存
- 具有较小的冗余度
- 较高的数据独立性
- 易扩展性
- 可为各种用户共享
三、数据库管理系统:
1)定义:是位于用户与操作系统之间的一层数据管理软件。
2)用途:科学地组织和存储数据,高效地获取和维护数据
3)功能:
- 数据定义功能
提供数据定义语言(DDL):创建、修改、删除
定义数据库中的数据对象的组成与结构
- 数据组织、存储和管理
分类组织、存储和管理各种数据
确定组织数据的文件结构和存取方式
实现数据之间的联系
提供多种存取方法
- 数据操纵功能
提供数据操纵语言(DML)
方便用户操纵数据
实现对数据库的基本操作(如查询、插入、删除和修改等)
- 数据库的事务管理和运行管理
由数据库管理系统统一管理和控制数据库的建立、运用和维护
保证事务的正确运行
保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复
- 数据库的建立和维护功能
数据库初始数据的输入、转换功能
数据库的转储、恢复功能
数据库的重组织功能和性能监视 、分析功能等
- 其他功能
数据库管理系统与网络中其他软件系统的通信功能
数据库系统之间或与文件系统的数据转换功能
异构数据库之间的互访和互操作功能
四、数据库系统(Database System,DBS)
1)定义:由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
2)构成:
- 数据库
- 数据库管理系统(及其开发工具)
- 应用系统
- 数据库管理员
1.1.2 数据管理技术的产生和发展
1.人工管理阶段
背景:
- 应用背景——科学计算
- 硬件背景——无直接存取存储设备
- 软件背景——没有操作系统
- 处理方式——批处理
- 数据的管理者——用户(程序员)
- 数据面向的对象——某一应用程序
- 数据的共享程度——无共享,冗余度极大
- 数据的独立性——不独立,完全依赖于程序
- 数据的结构化——无结构
- 数据控制能力——应用程序自己控制
2.文件系统阶段:
背景:
- 应用背景——科学计算、数据管理
- 硬件背景——磁盘、磁鼓
- 软件背景——有文件系统
- 处理方式——联机实时处理、批处理
- 数据的管理者——文件系统
- 数据面向的对象——某一应用
- 数据的共享程度——共享性差,冗余度大
- 数据的独立性——独立性差
- 数据的结构化——记录内有结构、整体无结构
- 数据控制能力——应用程序自己控制
3.数据库系统阶段:
背景:
- 应用背景——大规模数据管理
- 硬件背景——大容量磁盘、磁盘阵列
- 软件背景——有数据库管理系统
- 处理方式——联机实时处理、分布处理、批处理
- 数据的管理者——数据库管理系统
- 数据面向的对象——现实世界(一个部门、企业、跨国组织等)
- 数据的共享程度——共享性高,冗余度小
- 数据的独立性——具有高度的物理独立性和一定的逻辑独立性
- 数据的结构化——整体结构化,用数据模型描述
- 数据控制能力——由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力
1.1.3 数据库系统的特点
- 数据结构化
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别
- 数据的共享性高、冗余度低且易扩充
数据共享可以大大减少数据冗余,节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性
- 数据独立性高
物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的
- 数据由数据库管理系统统一管理和控制
1)数据的安全性保护
2)数据的完整性检查
3)并发控制
4)数据库恢复
数据模型(data model):是对现实世界数据特征的抽象,是数据库系统的核心和基础
1.2.1 两类数据类型
一、概念模型(也称信息模型)
作用:第一次抽象,用于数据库设计
二、逻辑模型和物理模型 :第二次抽象
1)逻辑模型:主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系数据模型、半结构化数据模型等
2)物理模型:是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的
1.2.2 概念模型
作用:
1.用于信息世界的建模
2.现实世界到信息世界的第一层抽象
3.是数据库设计人员进行数据库设计的有力工具
4.是数据库设计人员和用户之间进行交流的语言
一、信息世界的基本概念
1)实体:客观存在并可相互区别的事物
2)属性:实体所具有的某一特性
3)码:唯一标识实体的属性集称为码
4)实体型:用实体名及其属性名集合来抽象和刻画同类实体
5)实体集合:同一类型实体的集合
6)联系:实体之间的联系通常是指不同实体集之间的联系
二、概念模型的一种表示方法:实体-联系方法
该方法用E-R图来描述现实世界的概念模型,E-R方法也成为E-R模型。
注意:只画直接联系 供应商和厂家之间并不是之间联系,他们之间的联系是建立在零件的基础之上的,如果没有零件,他们不存在任何关系。
1.2.3 数据模型的组成要素
数据模型通常由数据结构、数据操作和数据完整性约束条件三部分组成
一、数据结构:数据结构描述数据库的组成对象以及对象之间的联系,是对系统静态特性的描述
二、数据操作:数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则
三、数据的完整性约束条件:一组完整的规则的集合,用以限定复合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容
1.2.4 常用的数据模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
1.2.5 层次模型
一、层次模型的数据结构
基本条件:
- 有且只有一个结点没有双亲结点,这个结点称为根节点
- 根以外的其他结点有且只有一个双亲你结点
特点:任何一个给定的记录值只能按其层次路径查看,没有一个子女记录值能够脱离双亲记录值而单独存在
二、层次模型数据库的操纵与完整性约束
操纵:查询、插入、删除、更新
三、层次模型的优缺点
优点:
- 数据结构比较简单清晰
- 查询效率高
- 提供了良好的完整性支持
- 现实世界中很多联系是非层次性的,如结点之间具有多对多联系,不适合用层次模型
- 如果一个结点具有多个双亲结点等,不适合层次模型
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程序化
1.2.6 网状模型
一、网状模型的数据结构
条件:
- 允许一个以上的结点无双亲
- 一个结点可以有多个双亲
二、网状模型的数据操纵与完整性约束
一般来说没有层次模型那样严格的约束条件
三、网状模型的优缺点:
优点:
- 能够更为直接的描述现实世界,如一个结点可以有多个双亲,结点之间可以有多种联系
- 育有良好的性能,存取效率高
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于醉种用户掌握
- 网状模型的DDL、DML复杂,并且要嵌入某一种高级语言(如COBOL、C)中,用户不容易掌握、不容易使用
- 由于记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担
1.2.7 关系模型
一、关系模型的数据结构
关系:表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性
码:也称码键,通过码可以唯一确定一个元组(比如仅通过一个学号就可以找到一个具体的学生)
域:域是一组具有相同数据类型的值的集合
分量:元组中的一个属性值
关系模型:对关系的描述
条件:关系的每一个分量必须是一个不可分的数据项
二、关系模型的数据操纵与完整性约束
分类:
- 实体完整性
- 参照完整性
- 用户定义的完整性
三、关系模型的优缺点
优点:
- 关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的
- 关系模型的概念单一,数据结构简单,清晰,用户易懂易用
- 存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作
- 存取路径对用户是隐蔽的,查询效率往往不如格式化数据模型
1.3.1 数据库系统模式的概念
1)型:对某一类数据的结构和属性的说明
2)值:型的一个具体赋值。
3)模式:数据库中全体数据的逻辑结构和特征的描述,它仅仅设计型的描述,不涉及具体的值。4)实例:模式的一个具体值,反应数据库某一时刻的状态,同一个模式可以有很多实例,实例随 数据库中的数据的更新而变动
1.3.2 数据库系统的三级模式结构
一、模式:模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,一个数据库只有一个模式
二、外模式:外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据逻辑表示
三、内模式:内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
1.3.3 数据库的二级映像功能与数据独立性
一、外模式/模式映像
外模式描述的是数据的局部结构,保证了数据的逻辑独立性
二、模式/内模式映像
定义了数据全局逻辑结构与存储结构之间的对应关系 ,保证了数据的物理独立性
三、数据的存取由DBMS管理的好处:
1)用户不必考虑存取路径等细节
2)简化了应用程序的编制
3)大大减少了应用程序的维护和修改
1.4 数据库系统的组成
一、硬件平台及数据库
- 要有足够大的内存,存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序
- 有足够大的磁盘或磁盘阵列等设备存放数据库,有足够大的磁带(或光盘)作数据备份
- 要求系统又较高的通道能力,以提高数据传送率
二、软件
- 数据库管理系统。数据库管理系统是为数据库的建立、使用和维护配置的系统软件
- 支持数据库管理系统运行的操作系统
- 具有与数据库结构的高级语言及其编译系统,便于开发应用程序
- 以数据库管理系统为核心的应用开发工具
- 为特定应用环境开发的数据库应用系统
三、人员
- 数据库管理员(DBA)
- 系统分析员和数据库设计人员
- 应用程序员
- 用户
2.1.1 关系
1)域:一组具有相同数据类型的值的集合/范围(整数、实数)
2)笛卡尔积:给定一组域D1, D2,…,Dn,允许其中某些域是相同的。不一定有实际意义
- 所有域的所有取值的一个组合
- 不能重复
- 基数:一个域允许的不同取值个数
3)关系:笛卡尔积的子集(去掉笛卡尔积当中无效的、关系具有实际意义)
4)元组:关系中的每个元素是关系中的元组
5)分量:笛卡尔积元素(劣,d2,…,dn)中的每一个值4叫作一个分量
6)基数:若0 (i=1, 2,…,n)为有限集,其基数为m
关系的类型:
- 基本关系(基本表或基表)
- 查询表
- 视图表
基本关系的性质:
- 列是同质的(每一列中的分量是同一类型的数据,来自同一个域)
- 不同列可以出自同一个域
- 列的顺序无所谓
- 行的顺序无所谓
- 任意两个元组的候选码不能取相同的值
- 分量必须取原子值(每一个分量都必须是不可分的数据项)
n个关系具有n个属性,但不一定有n个域(域最多n个),不同的属性可以来自同一个域
2.1.2 关系模式
关系模式是型(结构),关系是值
关系模式对关系的描述:
1)元组集合的结构(属性构成、域、映射)
2)元组语义以及完整性约束条件
3)属性间的数据依赖关系集合
关系的描述称为关系模式:R(U,D,DOM,F)
R为关系名 U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合
注意:域名及属性向域的映像常常直接说明为属性的类型、长度
关系是关系模式在某一时刻的状态或内容
关系模式的特点:静态的、(相对)稳定的
关系的特点:动态的、随时间不断变化的
2.1.3 关系数据库
定义:在一个给定的应用领域中,所有关系的集合构成
型:关系数据库模式,是对关系数据库的描述
值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库
2.1.4 关系模型的存储结构
- 有的关系数据库管理系统中一个表对应一个操作系统 文件,将物理数据组织交给操作系统完成
- 有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储 结构,并进行存储管理
2.2.1 基本的关系操作
一、常用的关系操作
- 查询操作: 选择、投影(选出若干列)、连接、除、并、差、 笛卡尔积。选择、投影、并、差、笛卡尔基是5种基本操作
- 数据更新:插入、删除、修改
二、关系操作的特点
集合操作方式:操作的对象和结果都是集合, 一次一集合的方式
2.2.2 关系数据库语言的分类
一、关系代数语言
用对关系的运算来表达査询要求
二、关系演算语言:用谓词来表达査询要求
- 元组关系演算语言
- 谓词变元的基本对象是元组变量
- 代表:APLHA, QUEL
五、 具有关系代数和关系演算双重特点的语言
代表:SQL (Structured Query Language)
1)实体完整性
2)参照完整性
3)用户定义的完整性
2.3.1 实体完整性
1)实体完整性规则是针对基本关系而言的。
2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
3)关系模型中以主码作为唯一性标识。
4)主码中的属性即主属性不能取空值。
2.3.2 参照完整性
1)关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用
2)外码
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
3)参照完整性原则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值
2.3.3 用户定义的完整性
- 针对某一具体关系数据库的约束条件,反应某一具体应用所涉及的数据必须满足的予以要求
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
2.4.1 传统的集合运算
并、差、交、笛卡尔积
笛卡尔积:这里是广义的笛卡尔积,以元组集合作为运算数
作用:对集合进行合并运算,是原来份力的信息合并,存在重复的信息,存在语义上重复,可能存在无意义的元组
2.4.2 专门的关系运算
选择、投影、连接、除运算
投影:投影操作时从列的角度进行的运算,投影之后不仅取消了原关系的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,如果包含候选码,行就不会减少
连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组
等值连接:值可以比较就能形成等值连接,不管值的意义(例如拿年龄和工资来比较)
自然连接:是一种特殊的等值连接,建立在等值连接基础上
一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列进行运算的
3.1 SQL概述
SQL:结构化查询语言,是关系数据库的标准语言
3.1.1 SQL的产生与发展
目前还没有一个数据库系统能够支持SQL标准的所有概念和特性
3.1.2 SQL的特点
- 集DDL、DML、DCL功能于一体
- 高度非过程化
- 面向集合操作
- 以同一种语法结构提供多种使用方式
- 语言简洁、易学易用
3.1.3 SQL的基本概念
1)基本表
- 本身独立存在的表
- SQL中一个关系就对应一个基本表
- 一个(或多个)基本表对应一个存储文件
- 一个表可以带若干索引
2)存储文件
- 物理结构组成了关系数据库的内模式
- 物理结构对用户是隐蔽的
3)视图
- 从一个或几个基本表导出的表
- 数据库中只存放视图的定义而不存在视图对应的数据
- 视图是一个虚表
- 用户可以在视图上再定义视图
3.2 学生-课程数据库
学生-课程模式S-T:
学生表Student(Sno,Sname,Ssex,Sage,Sdept)
课程表 Course(Cno,Cname,Cpno,Ccredit)
学生选课表SC(Sno,Cno,Grade)
Sno
Sname
Ssex
Sage
Sdept