数据库一
函数依赖
如果关系模式R(A1,A2,...An),X,Y为关系模式的子集,对于任意X只有一个Y与之对应。则Y函数依赖于X
如:
关系模式Student(Sno,Sname,Sdept,Sage)中,有依赖关系:Sno->Sname,Sno->Sdept,Sno->Sage
关系模式:SC(Sno,Sname,Cno,Credit,Grade),主码是(Sno,Cno)学号和课程号。则:
Sno—f—>Sname姓名完全函数依赖于学号;(Sno,Cno)—p—>Sname姓名部分依赖于学号和课程号;(Sno,Cno)—f—>Grade成绩完全函数依赖于学号和课程号
传递关系:A—f—>B 且 B—f—>C 则:A—f—>C
候选码,主码,外码
主属性与非主属性:R(U,F)中,包含在任一候选码中的属性为主属性,否则为非主属性。
R(U,F) U表示关系模式R的属性全集,F表示R上的函数依赖集
范式:
第一范式:不包含重复组的关系,即不包含非原子项的属性。
第二范式:如果R(U,F)属于1NF,且每个非主属性完全依赖于主码,则R(U,F)属于2NF
第三范式:如果R(U,F)属于2NF,且所有的非主属性都不传递依赖于主码,则R(U,F)属于3NF
1NF->2NF:用组成主码的属性集合的每一个子集作主码构成若干关系模式,将依赖于这些主码的属性放到相应的关系模式中,去掉只有主码的关系模式。
2NF->3NF:对于不是候选码的决定因子,删除依赖于它的属性,新建一个关系模式,添加依赖于它的属性,该决定因子为新关系模式的主码。
推论:
<1>如果关系模式R属于1NF,且它的每一个候选码都是单码,则R属于2NF。
<2>如果关系模式R属于1NF,且它的每一个非主属性既不部分依赖,也不传递依赖于任何候选码,则R属于3NF。
<3>不存在非主属性的关系模式一定为3NF。
E-R模型向关系模型的转换
将E-R的模型的实体(矩形),实体的属性(椭圆,其中包括实体的码),和实体间的联系(菱形)转换为关系模式。
转换规则:实体的属性是关系的属性,实体的码是关系的主码,实体间的联系如下:
<1>1:1联系:a,转换为一个独立的关系模式,与该联系相连的实体的码以及联系本身的属性转换为关系模式的属性
b,与任意一端对应的关系模式合并,需在该关系模式的属性中加入另一个实体的码和联系本身的属性
<2>1:N联系:a,转换为一个独立的关系模式,与该联系相连的实体的码以及联系本身的属性转换为关系模式的属性
b,与N端所对应的关系模式合并,需加1端实体的码和联系本身的属性
<3>M:N联系:必须转换为独立的关系模式,属性是与该联系相连的实体的码以及联系本身的属性,主码由各实体的码组成。