关于1NF
怎么判断有没有重复组,或者说怎么判断多个字段是否同一性质?我有一个简单的方法,或许不完整,我是直接从集合的定义里推导出来的,大家不妨一听。
N个字段具备同一性质是指他们在应用领域中值域是一样的,在同一条记录中值永不相同,且没有顺序的区别。
也就是说如果你有两个字段,电话1和电话2,这两个字段的值域显然是一致的,如果对于任何一条记录而言它们的值又总是不相同,或者说如果相同可以只使用一个字段,且电话1和电话2的数据对调不会影响任何查询和逻辑,那么它们就是Repeate Group。
关于2NF
超键的定义是,可以唯一确定一条记录的字段集合。显然符合1NF的数据的所有字段集合自动是超键,超键可以有N个。
候选键的定义则是最简的超键,即不存在一个可以作为键字段集合,是一个候选键的子集,这里的最简不是最小。即一个表可以存在一个仨字段候选键还存在一个俩字段候选键,并不因为俩字段候选键的存在就否定那个仨字段候选键,只要俩字段的不是它的子集。候选键也可以有N个,这也是被称之为候选键的原因(同样对候选键这个翻译无限怨念)。
关于3NF
其实key就是键,键一般指超键。
可以简单的看出来,如果一个表拥有超键,则必然拥有候选键。如果一个东西依赖于所有的候选键,则这个东西必然依赖于所有的超键。
所以依赖于任何键,和依赖于任何候选键,是一个意思。:)
关于依赖
X依赖于Y(X和Y都是字段集合)或者说Y决定了X是指在关系(数据表)中,对于确定的Y,都有确定的X与之对应。或者通俗点说,X依赖于Y,是指存在X到Y的一对多或一对一的关系(不能是多对一或多对多)。
原文链接:http://www.cnblogs.com/KissKnife/archive/2009/10/26/1590029.html