
数据依赖是关系内部属性之间相关联系的表达,是语义的体现,是构成数据的约束,大多数数据依赖是函数依赖,它是关系中“键”概念的范化。
使用数据依赖这一概念来定义关系模式的规范形式,即规范化理论。
函数依赖FD
A1,A2,……,An——>B1,B2,……,Bm
(若两个元组A1到An上相同则B1到Bm也相同,A1到An函数决定B1到Bm)
从已知FD推断其它FD
FD的集合T,S
T与S等价:关系实例集合满足S与其满足T的情况完全一样
(S是从T中推断而来,T也是从S中推断而来)
S从T中推断而来:满足T的关系实例也满足S(S蕴涵于T)
分解/结合规则:
平凡函数依赖
一个约束对所有关系实例都成立,且与其它约束无关
平凡FD的右边是左边的子集
平凡依赖规则:
(注:
非平凡函数依赖:仅当其右边属性集中至少有一个属性不属于左边的集合。例如: title year →year length
完全非平凡函数依赖:仅当其右边集合中的属性均不在左边集合中。例如: title year →length)
属性的闭包
S下{A1,A2,……An}的闭包{A1,……An}上标+
就是A中可以从S推断出来的右边变成一个集合
从一个给定集合A出发,不断扩展这个集合,对于S中的FD分解使右边只有一个属性,然后对于FD,只要左边都在集合中就把右边也加到集合中。p42
传递规则
函数依赖的闭包集合
求函数依赖集F的闭包F+:求所有属性子集的闭包(不考虑空集),然后利用每个闭包来写FD(A->空集也要写)
S的基本集:任何和S等价的FD集合
最小化基本集:右边均是单一属性;删除任何一个FD后不再是基本集;
对于任何一个FD,若删除其左边一个或多个属性,不再是基本集
投影函数依赖
R投影到R1
函数依赖集S的投影为满足以下条件的FD的集合:1从S推断而来2只包含R1中的属性
对R1的所有子集求闭包,得到FD的基本集,简化为最小基本集
“求属性子集闭包”的几个主要应用
1求所有候选键
2求所有非平凡FD
3求所有违反BCNF的非平凡FD(投影函数依赖应用1)
4求非平凡FD的最小基本集(投影函数依赖应用2)
简化规则:
1不必考虑空集(适用于1-4)
2不必考虑不能推出非平凡函数依赖的属性子集X(适用于1-4)
21属性子集X的任何一个子集都不是FD的左部,无法推出非平凡FD,无需求该属性子集X的闭包。如例1
22不必考虑属性全集U的闭包。
23 属性子集X+的闭包依然是X+本身,无法推出非平凡FD,不需要再求X+的闭包
3如果已知属性子集X, X+是属性全集,那么就无需考虑任何X超集的闭包。(注意:!!!!!!不适用于2!!!!!!)
异常:冗余;更新异常;删除异常
分解关系
将一个关系用多个不存在异常的关系替换
Boyce-Codd范式BCNF
每个非平凡FD的左边都必须是超键
任何一个二元关系属于BCNF
(BCNF范式在3NF的基础上,消除主属性对键的部分函数依赖与传递函数依赖)
分解为BCNF
输入:关系R0其上的函数依赖集S0
输出:由R0分解出的关系集合,每个关系都属于BCNF
方法:R=R0 S=S0
1检验R是否属于BCNF若是则返回{R}
2有BCNF违例X->Y,计算X的闭包,令R1为X的闭包,R2为X与不在X的闭包中的属性
3计算R1,R2的投影函数依赖S1,S2
4递归检验R1,R2
分解的优势
1消除异常
2信息的可恢复
3依赖的保持
BCNF可保持1,2
3NF可保持2,3
无损连接的分解
子关系经连接(这里指自然连接)运算可恢复原关系
保持依赖的分解
子关系的函数依赖集可蕴涵原函数依赖集
从分解中恢复信息
无损连接:可通过连接分解的各个关系重构原关系
若Y->Z在关系R上成立,且R的属性集为X∪Y∪Z,则R=π{下标X∪Y}(R)⋈π{下标Y∪Z}(R)
chase算法:检验一个分解是否含有无损连接,即判断是否可以根据F中的FD来证明所有属于π{下标s1}(R)⋈π{下标s2}(R)⋈……⋈π{下标sk}(R)的元组t也属于R
依赖的保持
BCNF无法保持 p57例325
第三范式3NF
拥有无损连接和依赖保持性质
条件:对于每个非平凡FD,或者其左边是超键,或者其右边仅由主属性构成
数据库约束是实现数据库完整性的方式,数据库完整性分为4种:主体完整性,域完整性,参照完整性,用户自定义完整性。
其中主体完整性对应了主键约束,域完整性对应了表各个字段到约束,如字段必须是字符类型,必须是非空的等,参照完整性对应了外键约束,用户自定义完整性由check约束来实现。
具体到约束的定义方法参照书籍吧,纯手打,望采纳
数据库有五种类型约束,分别为:主键约束、唯一约束、检查约束、默认约束、外键约束。
主键约束:要求主键列数据唯一,并且不允许为空。
唯一约束:要求该列唯一,允许为空,但只能出现一个空值。
检查约束:某列取值范围限制、格式限制等。
默认约束:某列的默认值。
外键约束:用于在两表之间建立关系,需要指定引用主表的哪一列。
从最终用户来看,数据库系统的外部体系结构可分为五种类型:单用户结构、主从结构、分布式结构、客户/服务器结构、浏览器/服务器结构。
根据数据模型来分类,数据库可分为关系数据库(主流)、层次数据库、网状数据库、面向对象的数据库。其中不是关系数据库的数据库又统称为非关系数据库。
为了对数据进行存储,需要对现实世界进行抽象。现实世界称的“事物的特征”,在第一级抽象——信息世界中被映射为“属性”,在第二级抽象——计算机世界中被映射为“字段"。而对于使用关系模型的数据库(属于第二级世界)中,对应的又重新称为是“属性”。
在使用关系模型的数据库,一个关系就是一张规范化的二维表,它由表名、表头、标体组成。相容性是针对两个关系来说的,如果两个关系的属性数相同(即同度),且列上的属性类型是一一对应的(即列同质),则这两个关系是相容的。相容性概念是为传统集合运算服务的,只有两个关系是相容的,那这两个关系才能进行集合运算(广义笛卡尔积运算除外)。
最后,关于题目中“数据库约束”笔者没有找到直接的概念,但有“数据完整性约束”的概念。数据模式是由数据 *** 作(为动态特性)、数据结构(为静态特性)、数据完整性约束组成。完整性约束的分类笔者就不展开了,就举个例子,比如年龄必须是正整数或零,这就是一个约束。
1连接依赖和第五范式
2连接依赖的定义
3设关系模式R、Ri的属性集是U、Ui,UiU(1≤i≤n)
若R每个容许的实例r均满足r=∏U1(r)∞∞∏Un(r)
则称R满足连接依赖,记作∞(R1,,Rn)
若其中某个Ui=U,则称连接依赖是平凡连接依赖。
多值依赖也是连接依赖。
4第五范式的定义
设关系模式R 、Ri的属性集是U、Ui, UiU(1≤i≤n)
若每个连接依赖∞(R1,,Rn)或是平凡连接依赖,或每个Ui均含候选键,则称R满足第五范式,简记为5NF或PJNF
例1:设关系模式R={A,B,C}仅满足连接依赖∞(AB,BC)
因为ABC是唯一的候选键,故R不满足5NF但R满足4NF
例2:设关系模式S={ABC}所满足的依赖约束集是
J={∞(AB,BC,AC),∞(AB,BC),B→C,C→BA}
因为B和C都是S的候选键,故S满足5NF。
4数据库性能:
性能调节的目的是通过将网络流通、磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。为达到此目的,需要了解应用程序的需求和数据的逻辑和物理结构,并在相互冲突的数据库使用之间(如联机事务处理 (OLTP) 与决策支持)权衡。
Mysql是目前互联网使用最广的关系数据库,关系数据库的本质是将问题分解为多个分类然后通过关系来查询。 一个经典的问题是用户借书,三张表,一个用户,一个书,一个借书的关系表。当需要查询某个用户借书情况或者是书被那些人借了,就用关系查询来实现。
关系数据库范式
来自英文Normal form,简称NF。要想设计—个好的关系,必须使关系满足一定的约束条件,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update) *** 作异常。总共有六种范式:第一范式(1NF)、第二范式(2NF)、 第三范式 (3NF)、巴斯-科德范式(BCNF)、 第四范式 (4NF)和 第五范式 (5NF,又称完美范式)。
1NF是指数据库表的每一列都是不可分割的原子数据项。2NF必须满足1NF,要求数据库表中的每行记录必须可以被唯一地区分。3NF在2NF基础上,任何非主 属性 不依赖于其它非主属性(在2NF基础上消除传递依赖)。BCNF是在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖), 满足BCNF不再会有任何由于函数依赖导致的异常,但是我们还可能会遇到由于多值依赖导致的异常。4NF的定义很简单:已经是BC范式,并且不包含多值依赖关系。5NF处理的是无损连接问题,这个范式基本没有实际意义,因为无损连接很少出现,而且难以察觉。而域键范式试图定义一个终极范式,该范式考虑所有的依赖和约束类型,但是实用价值也是最小的,只存在理论研究中。
Catalog和Schema
是数据库对象命名空间中的层次,主要用来解决命名冲突的问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等)。但是Mysql的数据库名就是Schema,不支持Catalog。
Mysql的数据库引擎主要有两种MyISAM和InnoDB,MyISAM支持全文检索,InnoDB支持事务。
SQL中的通配符‘%’代表任意字符出现任意次数。‘_’代表任意字符出现一次。SQL与正则表达式结合查询一般用在WHERE table_name REGEXP '^1234'。子查询是从里到外执行。
数据库联结(join)涉及到外键,外键是指一个表的列是另一个表的主键,那么它就是外键。笛卡尔积联结(不指定联结条件时)生成的记录条目是单纯的第一个表的行乘以第二个表的列数。用得最多的是等值联结也叫内部联结。
高级联结还有自连接,是指查询中的两张表是同一张表,它通常作为外部语句用来代替从相同表中检索数据时使用的子查询。自然联结使每个列只返回一次。外部联结是指联结包含了那些在相关表中没有关联行的行。例如列出所有产品及其订购数量,包括没有人订购的产品。LEFT OUTER JOIN指选择左边表的所有行。
组合查询是指采用UNION等将两个查询结果取并集。
视图是查看存储在别处的数据的一种工具,它本身并不包含数据,因此表的数据修改了,视图返回的数据也将随之修改,因此如果使用了复杂或嵌套视图会对性能有较大的影响。视图的作用之一是隐藏复杂的SQL通常会涉及到联结查询。
存储过程类似于批处理,包含了一条或多条SQL语句。语法:
CREATE PROCEDURE name()
BEGIN
SQL
END
-------------------------
CALL name()//来调用存储过程
游标有DECLARE定义,游标与存储过程是绑定的,存储过程处理完成,游标就会消失。游标被打开后可以使用FETCH语句访问每一行。
触发器是在某个时间发生时自动执行某条SQL语句。语法:
CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW
事务处理可以维护数据库的完整性,保证批量的 *** 作要么完全执行,要么完全不执行。包括事务、回退、提交、保留点几个关键术语。ROLLBACK只能在一个事务处理内使用。他不能回退CREATE和DROP *** 作。使用COMMIT保证事务提交。复杂的事务处理需要部分提交或回退,因此我们需要使用保留点SAVEPOINT。可以使用ROLLBACK TO savepoint_name。保留点越多越好。保留点在事务执行完成后自动释放。
以上就是关于关系数据库设计理论全部的内容,包括:关系数据库设计理论、什么是数据库约束、数据库有哪几种类型约束等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)