lxh9322:
关键字是可以函数决定关系中的所有属性的,因此可以推:
c->{c,p}
(s,c)->{s,c,G}
(t,r)->{t,r,c,p}
(t,p)->{t,p,r,c,p}
(t,s)->{t,s,r,c,p,g}
所以,只有(t,s)是关键字。
其规范化程度可以按照范式的定义来看。
hhxxttxs:
我可以给大家说说数据库的规范化
一、函数依赖:
a、所谓的函数依赖,可以这样来理解。关系模式数据库U中,比如有N列,如果某几列在列X中数值相同的,那么它们在列Y数值上一定相同,这样叫做Y依赖于x,如果存在一个关系r,r中有两行,如果它们在X列数值相同,而在Y数值上不同,那么称Y不依赖于X。
b、所谓的函数传递依赖。如果Z依赖与Y,Y依赖与X,并且Y不是X的一部分&&X不依赖与Y(如果Y是X的一部分的话,那么是直接依赖了,如果X和Y互相依赖的话,那么也是直接依赖了),那么称Z对X传递依赖。
二、码
码就是一个可以决定所有属性的一个属性,例如在学生一个数据库中,如果知道一个人的学号了,也就相当于知道了该人的姓名、成绩等,那么学号就是一个码,如果有很多码的话,那么选一个码为主码,其他的为候选码。包含码的属性为主属性。
三、范式
范式从底到高有1NF、2NF、3NF、BCNF、4NF、5NF
判断一个关系属于哪个范式的方法如下:
1、从底到高判断
2、* 如果没有表中表,那么该表符合1NF
* 如果没有部分函数依赖,那么符合2NF
* 如果表中任何属性不传递依赖,那么符合3NF
* 如果每一个决定因素均含有码,那么符合BCNF
* 如果表中没有多值依赖,那么符合4NF
* 如果表中没有连接依赖,那么符合5NF