1. 概念:
关系模式R<U,F>:U表示属性集合,F表示依赖集合,F主要有两种依赖:函数依赖和多值依赖MVD,【关系模式】理解为数据表,而【关系】可以理解为表中一条记录。
函数依赖:X,Y是是属性集合U的子集,关系模式R中的任意关系r1,r2,都不存在r1,r2中X相同,而Y不同的情况则认为“Y函数依赖于X”或者说“X确定Y”,,符号说明:X->Y。
非平凡函数依赖:X->Y且Y不是X子集。
平凡函数依赖:X->Y且Y是X子集。平凡函数依赖必然成立,因此一般考虑的都是非平凡函数依赖。
若X->Y,Y->X,则符号表示为:X <- -> Y。
完全函数依赖:z是符号说明:X -f-> Y。
部分函数依赖:符号说明:X -p-> Y。
候选码:K是U的一个子集,如果K -f-> U ,则K为关系模式R的候选码。候选码可能有多个,从中选择一个作为主码。候选码中的属性称为主属性,其它为非主属性。
主码:某个候选码。
外码:K是U的一个子集,但是不是R的主码,却是另一个关系模式R'的主码,则K是关系模式R的外码。
2. 范式:
1NF:关系模式R<U,F>中的所有属性都不可再分割,则满足1NF。
2NF:R<U,F>属于1NF,且非主属性完全依赖于码,则满足2NF。
举例:Sno,学号;Sdept,部门;Sloc,宿舍;Grade,成绩。
如下图所示,图a满足第一范式,但是因为存在非主属性部分依赖于码,因此2NF,而将图a.进行拆分形成图b.图c.,则图b.图c.满足2NF。
3NF:R<U,F>属于2NF,且非主属性不存在传递依赖于码,则满足3NF。
如上图c.所示因为存在Sloc传递依赖于Sno,因此图c.不满足3NF,按照如下分解图c.则满足3NF。
S-D(Sno,Sdept)
D-L(Sdept,Sloc)