数据库范式2NF例题
作者: the5fire
发布: 2010-11-03
阅读: 15090
建立一个供应商、零件数据库。其中“供应商”表S(Sno,Sname,Zip,City)分别表示:供应商代码、供应商名、供应商邮编、供应商所在城市,其函数依赖为:Sno→(Sname,Zip,City ),Zip→City。“供应商”表S属于 (53) 。
(53)A. 1NF B. 2NF C. 3NF D. BCNF
对于范式要是不熟悉的话,看这个还真有点头大。这里肯定是满足第一范式的,根据第一范式每个字段都不可再分,很好理解,那么第二范式呢?
第二范式定义是:属性完全依赖于主键[消除非主属性对主码的部分函数依赖]。说实话这个不太好理解,不过对这到例题来说,其中sno是主键,属性是完全依赖于主键的,那后面的那个zip->city什么意思呢。其实这里应该看第三范式了,不说定义,先说第二范式中的问题。有一个就是无法消除数据冗余,而第三范式就是弥补了第二范式的这个缺点。因此再看这道题,zip->city其实就是数据冗余了。如果要改为第三范式的话需要再添加一个表(address:zip,city),原来的那个表只保留zip就可以了。
(53)A. 1NF B. 2NF C. 3NF D. BCNF
对于范式要是不熟悉的话,看这个还真有点头大。这里肯定是满足第一范式的,根据第一范式每个字段都不可再分,很好理解,那么第二范式呢?
第二范式定义是:属性完全依赖于主键[消除非主属性对主码的部分函数依赖]。说实话这个不太好理解,不过对这到例题来说,其中sno是主键,属性是完全依赖于主键的,那后面的那个zip->city什么意思呢。其实这里应该看第三范式了,不说定义,先说第二范式中的问题。有一个就是无法消除数据冗余,而第三范式就是弥补了第二范式的这个缺点。因此再看这道题,zip->city其实就是数据冗余了。如果要改为第三范式的话需要再添加一个表(address:zip,city),原来的那个表只保留zip就可以了。