数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关练习。它是显示世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
数据依赖中最重要的是函数依赖和多值依赖。
函数依赖简单点说就是:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。
函数依赖是由数学派生的术语,它表征一个属性或属性集合的值对另一个属性或属性集合的值的依赖性。需要强调的是,函数依赖是关系所表述信息本身具有的语义特性,而不能由属性构成关系的方式来决定,也不能由关系的当前内容所决定。
设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
例如:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
例如:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB.
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
例如:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A
大神写的
码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。例如:学生是一个实体,则学生的集合是一个实体集。假设学生(实体)具有多个属性:学号,身份证号,姓名,性别。候选码,简称为码。假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。
一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一的标识一个实体。直观地讲就是用这个超码的属性,我可以唯一确定这个实体,进而推出这个实体的多种属性。
因为通过学号可以找到唯一一个学生,所以{学号}是一个超码,同理{学号,身份证号}、{学号,身份证号,姓名}、{学号,身份证号,姓名,性别}、{身份证号}、{身份证号,姓名}、{身份证号,姓名、性别}也是超码。
因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以候选码是最小超码,它们的任意真子集都不能成为超码。也就是我用最少的属性可以确定这个实体。
例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“年龄”的属性组合足以区分学生实体,那么{学号}和{姓名,年龄}都是候选码,超码包含候选码。
纵使候选码已经比超码少了一些,但还是多,于是就从众多候选码挑一个出来,当作主码。被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码;此外,应该选择哪些从不或极少变化的属性;
包含在任一候选码中的属性称主属性。
非主属性是相对与主属性来定义的。
例如:在关系——学生{学号,姓名,年龄,性别,班级}中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。
大神写的
1、第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。
2、第二范式(2NF):满足第一范式,然后消除部分依赖。
3、第三范式(3NF):满足第二范式,消除传递依赖。
4、扩存的第三范式(BCNF):满足3NF,消除每一属性对候选码的传递依赖。
当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
也就是定义实体属性的时候,尽量不能再往下分,确保属性的原子性,两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。
如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。
设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。
数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。
对于一个关系表(模式)R属于第一范式,若X→Y且X不包含Y时X必含有键,则R属于BC范式。
所有非主属性对每一个码都是完全函数依赖;
所有的主属性对每一个不包含它的码,也是完全函数依赖;
没有任何属性完全函数依赖于非码的任何一组属性。
大神写的
设R(U)是一个属性集U上的一个关系模式, X、 Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关,若X→→Y,而Z为空集,则称X→→Y为平凡的多值依赖;若Z不为空,则称其为非平凡的多值依赖
大神写的
如果函数依赖集F满足以下条件,则称F为一个极小函数依赖集。也称为最小依赖集或最小覆盖。
(1)F中任一函数依赖的右部仅含有一个属性。
(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
(3)F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}U{Z→A}与F等价。
模式分解三定义:
一:分解具有无损连接性
二:分解要保持函数依赖
三:分解既要保持函数依赖,又要具有无损连接性