数据库底子与六大范式详解
数据库发展过程:
三个时期比较:
基本概念
数据模型:
- 三个要求:
- 能比较真实地模拟现实社会
- 容易为人所明白
- 便于在计算机上实现
- 两类:
- 概念模型:
- 也称信息模型,它是按用户的观点来对数据和信息建模,紧张用于数据库设计
- 逻辑模型 / 物理模型:
- 逻辑模型包括:
- 条理模型(hierarchical)
- 网状模型(NetWork Model)
- 关系模型(Relational Model)
- 面向对象模型(Object Oriented Model)
- 对象关系模型(Object Relational Model)
- 物理模型:
- 是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方式,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的
四个基本概念:
- 数据(Data):
- 定义:
- 数据的定义描述事物的符号记录数据的种类文本、图形、图像、音频、视频、学生的档案记录、货品的运输环境等数据的特点数据与其语义是不可分的
- 数据库(Database):
- 定义:
- 数据库(Database,简称DB)是长期储存在计算机内、有构造的、可共享的大量数据的聚集
- 各种职员数据视图:
- 基本特征
- 数据按一定的数据模型构造、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
- 数据库管理系统(DBMS):
- 定义:
- DBMS(Database Management System )位于用户与操作系统之间的一层数据管理软件.是底子软件,是一个大型复杂的软件系统
- 用途:
- 科学地构造和存储数据、高效地获取和维护数据
- 数据控制功能:
- 数据的安全性(Security)保护:保护数据,以防止不合法的使用造成的数据的泄密和破坏.
- 数据的完备性(Integrity)检查:将数据控制在有效范围内,或保证数据之间满足一定关系
- 并发(Concurrency)控制:对多用户的并发操作加以控制和和谐,防止相互干扰而得到错误的结果
- 数据库规复(Recovery):将数据库从错误状态规复到某一已知的正确状态
- 主要功能:
- 数据定义(Definition):
- 数据模式定义(为数据库构造数据框架)
- 数据存取的物理结构(为数据模式构造有效的物理存取方法与手段)
- 数据利用(Manipulation):
- 提供数据查询、插入、修改及删除的功能具有简单算术运算及统计等本领
- 还可以与某些过程性语言结合,进行过程性操作
- 数据控制(Control):
- 数据的完备性、安全性定义与检查数据库的并发控制与故障规复
- 数据服务(Service):
- 拷贝、转储、重组、性能检测、分析……
- 数据库系统(DBS):
- 定义:
- 数据库系统(Database System,简称DBS)在计算机系统中引入数据库后的系统构成
- 组成:
- 数据库
- 数据库管理系统
- 应用系统
- 数据库管理员
- 特点:
- 数据结构化
- 数据的共享性高,冗余度低,易扩充
- 数据独立性高
- 数据由DBMS统一管理和控制
数据独立性:
- 两个独立性:
- 物理独立性:指用户的应用步伐与存储在磁盘上的数据库中数据是相互独立的.当数据的物理存储改变了,应用步伐不用改变
- 逻辑独立性:指用户的应用步伐与数据库的逻辑结构是相互独立的.数据的逻辑结构改变了,用户步伐也可以不变
- 说明:
- 物理独立性与逻辑独立性保证了数据独立性也是由DBMS的二级映像功能来保证的
信息世界基本概念:
- 实体(Entity) 客观存在并可相互区别的事物称为实体.可以是具体的人、事、物或抽象的概念
- 属性(Attribute) 实体所具有的某一特性称为属性.一个实体可以由若干个属性来描画
- 码(Key) 唯一标识实体的属性集称为码
- 域(Domain) 属性的取值范围称为该属性的域
- 实体型(Entity Type) 用实体名及其属性名聚集来抽象和描画同类实体称为实体型
- 实体集(Entity Set) 同一类型实体的聚集称为实体集
- 联系(Relationship)现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系
- 说明:
- 实体内部的联系通常是指组成实体的各属性之间的联系
- 实体之间的联系通常是指不同实体集之间的联系
- 两个实体型:
- 一对一联系(1:1):
- 定义:假如对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1
- 实例:一个班级只有一个正班长,一个班长只在一个班中任职
- 一对多联系(1:n):
- 定义:假如对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n
- 实例:一个班级中有若干名学生,每个学生只在一个班级中学习
- 多对多联系(m:n):
- 定义:假如对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n
- 实例:课程与学生之间的联系:一门课程同时有若干个学生选修,一个学生可以同时选修多门课程
- 图释:
- 两个以上实体型(两个以上实体型之间一对多联系):
- 定义:若实体集E1,E2,...,En存在联系,对于实体集Ej(j=1,2,...,i-1,i+1,...,n)中的给定实体,最多只和Ei中的一个实体相联系,则我们说Ei与E1,E2,...,Ei-1,Ei+1,...,En之间的联系是一对多的
- 优点:减少沉余,减少维护和修改表的时间
- 图释:
数据库管理员(DBA)具体职责:
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完备性约束条件
- 监控数据库的使用和运行
- 周期性转储数据库
- 系统故障规复
- 介质故障规复
- 监视审计文件
- 数据库的改进和重组
- 性能监控和调优定期对数据库进行重构造,以进步系统的性能需求增长和改变时,数据库须需要重构造
关系数据库理论
关系模式(五元组):
- 格式:
- 解释:
- 关系R,它是符号化的元组语义
- 一组属性U
- 属性住中属性来自域D
- 属性到域的映射DOM
- 属性组U上的一组数据依赖F(如函数依赖(Functional Dependency,FD),多值依赖(Multivalued Dependency,MVD))
干系概念:
- 函数依赖:
- 定义:
- 设R(U)是属性集U上的关系模式.X,Y是U的子集.若R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性住相等,而在Y上的属性值不等,则X函数确定Y或Y依赖于X,记做X→Y,若X→Y,Y→X,记做X←→Y(非主属性中某属性值唯一)
- 分类:
- 非平常函数依赖:X→Y,但X不包罗Y,则称X→Y非平常函数依赖(例子 (Sno,Cno)→Grade )
- 平常函数依赖:X→Y,且X包罗Y则称X→Y平常函数依赖(例子 (Sno,Cno)→Cno )
- 完全函数依赖:X→Y且对X的任何一个真子集X',都有X'→Y不成立,则称Y对X完全函数依赖(例子 (Sno,Cno)→Grade )
- 部分函数依赖:X→Y,但Y不完全依赖于X,则称Y对X部分函数依赖(例子 (Sno,Cno)→Sdept [由Sno便可推出Sdept] )
- 传递函数依赖:在R(U)中,假如X→Y,(X不包罗Y),Y→X不成立,Y→Z,Z不属于Y,则称Z对X传递函数依赖,记做X→Z(例子 Sno→Sdept, Sdept→Mname成立,以是Sno→Mname)
- 多值依赖:
- 定义:
- 情势1:设R(U)是属性集U上的一个关系模式.X,Y,Z是U的子集,并且Z=U-X-Y,感谢模式R(U)中多值依赖X→→Y成立,当且仅当对R(U),的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关
- 情势2:在R(U)的任一关系r中,假如存在元组t,s使得t[X]=s[X],那么必然存在元组w,v属于r,(w,v可以与s,t类似),使得w[X]=v[X]=t[X],而w[Z]=v[Z]=t[Z],v[Y]=s[Y],v[Z]=t[Z](交换s,t元组的Y值所得的两个新元组必在r中)则Y多值依赖与X记做X→→Y,这里X,Y是U的子集,Z=U-X-Y
- 平常多值依赖:
- 若X→→Y,而Z=φ,即Z为空,则称X→→Y为平常多值依赖
- 多值依赖性子:
- 多值依赖具有对称性.即若X→→Y,则X→→Z此中Z=U-X-Y
- 多值依赖具有传递性,即若X→→Y,X→→Z,则X→→Z - Y,X→→Y - Z
- 函数依赖可以看做多只依赖的特殊环境,即若X→Y则X→→Y.这是因为当X→Y时,对X的每一个值x,Y有一个确定的值y与之对应,以是X→→Y
- 若X→→Y,X→→Z,则X→→YZ
- 若X→→Y,X→→Z,则X→→Y∩Z
- 多值依赖与函数依赖的区别:
- 多只依赖的有效性与属性集的范围有关
- 若X→→Y在U上成立则在W(U包罗W, W包罗XY)上一定成立,反之则不然,即X→→Y在W(U包罗W)上成立,在U上并不一定成立,这是因为多只依赖的定义中不仅涉及属性组X和Y,而且涉及U中的其余属性Z
- 一般得在R(U)上若有X→→Y在W(U包罗W)上成立,则称X→→Y为R(U)的嵌入型多值依赖
- 但是在关系模式R(U)中函数依赖X→Y的有效性仅决定于X,Y这两个属性集的值.只要在R(U)的任何一个关系r中,元组在X和Y上的值满足函数依赖的定义,则函数依赖X→Y在任何属性集W(U包罗W, W包罗XY)上成立
- 若函数依赖X→Y在R(U)上成立,则对任何Y的子集Y'具有X→Y'成立,而多值依赖X→→Y若在R(U)上成立,却不能保证对于任何一个Y' 即Y的子集的X→→Y'都成立
- 码:
- 设K为R中的属性组合,若K完全依赖于U则K为R的候选码(Candidate key),若候选码多于一个,则选定一个为主码(Primary key)
- 包罗在任何一个候选码中的属性,称为主属性(Primary attribute).不包罗在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute).最简单的环境,单个属性是码.最极端的环境,整个属性组都是码,称为全码(All-key)
关系模式存在问题:
- 数据库沉余太大
- 更新非常(Update Anmalies)
- 插入一次(Insertion Anomalies)
- 删除非常(Deletion Anomalies)
规范化(范式):
- 第一范式:
- 定义:每一个分类必须是一个不可分的数据项,则属于第一范式规范
- 第二范式:
- 定义:若R属于第一范式,且每个非主属性完全依赖于码,则属于第二范式规范
- 第三范式:
- 定义:关系模型R中若不存在这样的码X,属性Y即非主属性Z(Z不包罗于Y),使得X→Y, Y→Z,X→Z成立,Y→X不成立,则称R属于第三范式
- BCNF范式:
- 定义:关系模式R属于第一范式,若X→Y且X不包罗Y时,X必包罗有码,则R属于BCNF范式,也就是说关系模式R中,若,每一个觉得因素都包罗码,则R属于BCNF范式
- 要求:
- 所有的非主属性对每一个码都是完全函数依赖
- 所有的主属性对每一个不包罗它的码,也是完全函数依赖
- 没有任何属性完全函数依赖于非码属性的任何一组属性
- 第四范式:
- 定义:关系模式R属于第一范式,假如对于R的每个平常多只依赖XY(X不包罗Y),X都含有码,则R属于第四范式
- 范式包罗关系:
关系模型
解释:
从用户角度看关系模型中数据的逻辑结构是一张二维表,它由行和列组成
干系概念:
- 元组(Tuple):表中的一行即为一个元组
- 关系(Relation):
- 定义:一个关系对应通常说的一张表
- 要求:满足一定的规范条件(最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表)
- 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码(Key):表中的某个属性组,它可以唯一确定一个元组
- 域(Domain):属性的取值范围
- 分量:元组中的一个属性值
- 关系模式:对关系的描述 关系名(属性1,属性2,…,属性n)
完备性约束:
- 关系的完备性约束条件
- 实体完备性参照完备性
- 用户定义的完备性
优点:
- 创建在严格的数学概念的底子上
- 概念单一:
- 实体和各类联系都用关系来表示
- 对数据的检索结果也是关系
- 关系模型的存取路径对用户透明:
- 具有更高的数据独立性,更好的安全保密性
- 简化了步伐员的工作和数据库开辟创建的工作
缺点:
- 存取路径对用户透明导致查询效率往往不如非关系数据模型
- 为进步性能,必须对用户的查询请求进行优化增长了开辟DBMS的难度
系统结构解释:
- 从数据库管理系统角度看数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
- 从数据库终极用户角度看(数据库系统外部的体系结构),数据库系统的结构分为:
- 单用户结构主从式结构
- 分布式结构
- 客户/服务器
- 浏览器/应用服务器/数据库服务器多层结构等
实例(Instance):
- 模式的一个具体值
- 反映数据库某一时刻的状态
- 同一个模式可以有很多实例
- 实例随数据库中的数据的更新而变更
模式(Schema):
- 解释:
- 数据库中全体数据的逻辑结构和特征的描述
- 反映的是数据的结构及其联系
- 所有用户的公共数据视图,综合了所有用户的需求
- 说明:
- 地位:
- 特点:
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用步伐、开辟工具及高级步伐设计语言无关
- 定义:
- 数据的逻辑结构(数据项的名字、类型、取值范围等)
- 数据之间的联系
- 数据有关的安全性、完备性要求
外模式(External Schema):
- 说明:
- 数据库用户(包括应用步伐员和终极用户)使用的局部数据的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
- 地位:
- 模式与外模式的关系:一对多
- 外模式通常是模式的子集
- 一个数据库可以有多个外模式.反映了不同的用户的应用需求、对待数据的方式、对数据保密的要求
- 对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
- 外模式与应用的关系:一对多
- 同一外模式也可以为某一用户的多个应用系统所使用
- 但一个应用步伐只能使用一个外模式
- 用途:
- 保证数据库安全性的一个有力措施
- 每个用户只能看见和访问所对应的外模式中的数据
内模式(Internal Schema):
- 说明:
- 内模式(也称存储模式)
- 是数据物理结构和存储方式的描述
- 一个数据库只有一个内模式
- 是数据在数据库内部的表示方式:
- 记录的存储方式(次序存储,按照B树结构存储,按hash方法存储)
- 索引的构造方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
三级模式结构:
- 组成:
- 内模式(Internal Schema)
- 模式(Schema)
- 外模式(External Schema)
- 图片:
- 说明:
- 同一个模式可以有任意多个外模式
- 每一个外模式,数据库系统都有一个外模式/模式映象,定义外模式与模式之间的对应关系
二级映象:
- 作用:
- 二级映象在DBMS内部实现这三个抽象条理的联系和转换
- 说明:
- 外模式/模式映像:
- 作用:
- 说明:
- 外模式描述的是数据的局部逻辑结构
- 模式描述的是数据的全局逻辑结构
- 当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变应用步伐是依据数据的外模式编写的,从而应用步伐不必修改,保证了数据与步伐的逻辑独立性,简称数据的逻辑独立性
- 模式/内模式映像:
- 作用:
- 说明:
- 当数据库的存储结构改变了(比方选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变应用步伐不受影响.保证了数据与步伐的物理独立性,简称数据的物理独立性
SQL概述
SQL的特点:
- 综合统一:
- 集数据定义语言(DDL),数据利用语言(DML),数据控制语言(DCL)功能于一体
- 可以独立完成数据库生命周期中的全部活动:
- 定义关系模式,插入数据,创建数据库;
- 对数据库中的数据进行查询和更新;
- 数据库重构和维护
- 数据库安全性、完备性控制等
- 用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行
- 数据操作符统一
- 高度非过程化:
- 非关系数据模型的数据利用语言“面向过程”,必须指定存取路径
- SQL只要提出“做什么”,无须了解存取路径
- 存取路径的选择以及SQL的操作过程由系统自动完成
- 面向聚集的操作方式:
- 非关系数据模型采用面向记录的操作方式,操尴尬刁难象是一条记录
- SQL采用聚集操作方式:
- 操尴尬刁难象、查找结果可以是元组的聚集
- 一次插入、删除、更新操作的对象可以是元组的聚集
- 以同一种语法结构提供多种使用方式:
- SQL是独立的语言:可以或许独立地用于联机交互的使用方式
- SQL又是嵌入式语言:SQL可以或许嵌入到高级语言(比方C,C++,Java)步伐中,供步伐员设计步伐时使用
- 语言简洁,易学易用:
SQL的数据定义功能:
三个基本概念:
- 基本表:
- 本身独立存在的表
- SQL中一个关系就对应一个基本表
- 一个(或多个)基本表对应一个存储文件
- 一个表可以带若干索引
- 存储文件:
- 逻辑结构组成了关系数据库的内模式
- 物理结构是任意的,对用户透明
- 视图:
- 从一个或几个基本表导出的表
- 数据库中只存放视图的定义而不存放视图对应的数据
- 视图是一个虚表
- 用户可以在视图上再定义视图
SQL支持关系数据库三级模式结构:
标识符:
- 定义:
- 规则:
- 第一个字符必须是字母或下划线(_)或@或#;
- 后续字符可以是:字母、数字、_、#、$、@等;
- 注意:
- 不能使用SQL中的关键字和运算符,不允许嵌入空格或其他特殊字符
数据库之六大范式详解
**
关系数据库中的关系满足一定要求的,满足不同程度要求的为不同的范式。满足最低要求的叫第一范式,简称1NF;在第一范式的底子上满足进一步要求的称为第二范式,简称2NF,其余范式以此类推。对于各种范式之间有如下关系:
如下图所示:
1. 第一范式 1NF
定义: 属于第一范式关系的所有属性都不可再分,即数据项不可分。
明白: 第一范式强调数据表的原子性,是其他范式的底子。如下图所示数据库就不符合第一范式:
上表将商品这一数据项又划分为名称和数量两个数据项,故不符合第一范式关系。改正之后如下图所示:
上表就符合第一范式关系。
但一样平常生存中仅用第一范式来规范表格是远远不够的,依然会存在数据冗余过大、删除非常、插入非常、修改非常的问题,此时就需要引入规范化概念,将其转化为更标准化的表格,减少数据依赖。
规范化: 一个低一级的关系模式通过模式分解可以转化为若干个高一级范式的关系模式的聚集,这个过程叫做规范化。
2. 第二范式 2NF
定义: 若某关系R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,则关系R属于第二范式。
此处我们需要明白非主属性、候选码和完全函数依赖的概念。
候选码: 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系中有多个候选码,则选定此中一个为主码。
以下所有内容中,主码或候选码都简称为码。
比方下图所示的学生表中,学号和姓名都可以唯一标识一个元组,故该表的候选码为学号和姓名,主码我们可以随便选定此中一个,则选学号为主码。
主属性:
所有候选码的属性称为主属性。不包罗在任何候选码中的属性称为非主属性或非码属性。
在上面的学生表中,学号和姓名就是该关系的主属性,年龄和性别就黑白主属性。
函数依赖:
设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称Y函数依赖于X或X函数确定Y。
完全函数依赖:
设R(U)是属性集U上的关系模式,X、Y是U的子集。假如Y函数依赖于X,且对于X的任何一个真子集X’,都有Y不函数依赖于X’,则称Y对X完全函数依赖。记作:假如Y函数依赖于X,但Y不完全函数依赖于X,则称Y对X部分函数依赖。
明白:
第二范式是指每个表必须有一个(有且仅有一个)数据项作为关键字或主键(primary key),其他数据项与关键字大概主键一一对应,即其他数据项完全依赖于关键字或主键。由此可知单主属性的关系均属于第二范式。
判断一个关系是否属于第二范式:
- 找出数据表中的所有码;
- 找出所有主属性和非主属性;
- 判断所有的非主属性对码的部分函数依赖。
以上面的学生表为例,表中的码为学号(码可以为学号大概姓名,此处假定码为学号),非主属性为性别、年龄(其余都为主属性),当学号确定时,性别、年龄也都惟一的被确定为,故学生表的设计满足第二范式(学生表为单主属性的关系)。
下面举一个不满足第二范式的关系。
有关系模式S-L-C(Sno, Sdept, Sloc, Cno, Grade),此中Sno, Sdept, Sloc, Cno, Grade依次表示学生的学号、所在的系、住处、课程号、班级,并且每个系的学生住在同一个地方。可知S-L-C的码为(Sno, Cno),则存在以下函数依赖:
可以看到,非主属性Sloc、Sdept并不完全函数依赖于码,因此关系模式S-L-C(Sno, Sdept, Sloc, Cno, Grade)不符合第二范式。
3. 第三范式 3NF
定义: 非主属性既不传递依赖于码,也不部分依赖于码。
首先我们要明白传递函数依赖的概念。
明白: 第三范式要求在满足第二范式的底子上,任何非主属性不依赖于其他非主属性,即在第二范式的底子上,消除了传递依赖。
在下图S-L关系中,Sloc对Sno传递函数依赖,故该关系不属于第三范式。
4. BC范式 BCFN
定义: 关系模式R中,若每一个决定因素都包罗码,则R属于BCFN。
明白:
根据定义我们可以得到结论,一个满足BC范式的关系模式有:
- 所有非主属性对每一个码都是完全函数依赖;
- 所有主属性对每一个不包罗它的码也是完全函数依赖;
- 没有任何属性完全函数依赖于非码的任何一组属性。
比方有关系模式C(Cno, Cname, Pcno),Cno, Cname, Pcno依次表示课程号、课程名、先修课。可知关系C只有一个码Cno,且没有任何属性对Cno部分函数依赖或传递函数依赖,以是关系C属于第三范式,同时Cno是C中的唯一决定因素,以是C也属于BC范式。
5. 第四范式 4NF
定义: 限制关系模式的属性之间不允许有非平常且非函数依赖的多值依赖。
明白: 显然一个关系模式是4NF,则必为BCNF。也就是说,当一个表中的非主属性互相独立时(3NF),这些非主属性不应该有多值,若有多值就违反了4NF。
6. 第五范式 5NF
第五范式有以下要求:
(1)必须满足第四范式;
(2)表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表类似的主键。
第五范式是在第四范式的底子上做的进一步规范化。第四范式处理的是相互独立的多值环境,而第五范式则处理相互依赖的多值环境。 |