函数依赖
平凡函数依赖:就是关系中A->B,A包含B
非平凡函数依赖:就是关系中A->B,A不包含B
部分函数依赖:在关系A,B->C中,仅仅靠A->C
完全函数依赖:在关系A,B->C中,要靠A,B->C
数据库范式
就是对表的拆分,通过不断拆分消除字段中的函数依赖,因此1范式<2范式<3范式<BC范式<4范式<5范式
第一范式
理解:表中没有表,也就是说表中的属性不能存在嵌套关系。
第二范式
理解:就是在表中必须通过该表的主码,才能确定非主码属性。
起因:在Sno,Cno Sdept ,Cloc中。Sno->Sloc,Sno->Sdept,
避免方式:单主键
第三范式
理解:就是表中非主码属性,没有传递函数依赖,也就是说不能存在关系。
起因:Sno,Sdept,Sloc。
避免方式:表中非主码属性,不要存在依赖关系。
BC范式
理解:在第三范式的基础上,主码属性中没有部分函数依赖和传递依赖。
起因:(S,T)->J,T->J。
第四范式
理解:就是主码的非函数多值依赖不能超过1个。
用表来说明
对于name,hobby,class这个表来说同
一个hobby可能会被别的name所对应。
一个class会被别的name所对应。
这种多个name对应一个class或者hobby的关系即为主码的非函数多值依赖。
声明:本文主要基于中国人民大学王珊老师的数据库概论课总结