设有关系模式R(A1,A2,A3,A4,A5,A6),函数依赖集F={A1→A3,A1 A2→A4,A5 A6→A1,A3 A5→A6,A2 A5→A6}

关系模式R的一个主键是(), 从函数依赖集F可以推出关系模式R()

问题1

A.A1A4

B.A2A5

C.A3A4

D.A4A5

问题2

A.不存在传递依赖,故R为1NF

B.不存在传递依赖,故R为2NF

C.存在传递依赖,故R为3NF

D.每个非主属性完全函数依赖于主键,故R为2NF


请先 登录 后评论

1 个回答

亚里士德
擅长:互联网

书中章节9.5.2规范化

问题1就不说了,选B(可看旁边的相关问题)。问题2中,里面的1NF和2NF时什么意思和如何区分。

根据书上的例题可以知道,第一和第二范式和传递依赖好像没有关系。第三范式才有关系。

先说2NF,方便理解。2NF就是第二范式。简单理解,就是在多个属性组成的主属性中,任何一个非主属性的确定都(直接或间接的)依赖于一个完整的候选码(由一个属性组成或者多个属性组成的),不依赖于一个候选码拆开后的单独的属性。比如本题,如果A2能单独确定A4,那么就表示A4是部分依赖于码,就不属于第二范式,属于第一范式1NF。本题很明显,所有的属性的确定都不单独依赖于候选码中的拆开后的码A2或者A5,比如A1的确定虽然依赖了A6,但是A6是由A2A5确定的。都依赖于A2A5,所以问题2选D。

第一范式就很简单,就是每一个属性都不可再拆分成多个属性,也就是说一个属性就存一个字段。比如一个学生字段,里面还包含学号和姓名两个小字段,这就不符合第一范式。书上474页原文:“在关系数据模型中,通常对域加了一个限制,所有的域都应是原子数据(Atomic Data)。例如,整数、字符串是原子数据, 而集合、记录、数组是非原子数据。关系数据模型的这种限制称为第一范式(,1NF)条件。”

第三范式:比如本题中,因为A1的确定存在A6的传递,所以不满足第三范式。也就是说,第三范式3NF,非主属性不能存在对于候选码的传递。A1要依赖于A6,那么就把A1拆出去新建一个关系模式(就是平时的拆表),A2A6在新关系模式中是主码,A2和A6也存在原关系模式中,但【没有了传递关系】。这样拆完所有的传递依赖之后,所有的关系模式都符合3NF。简单说就是一张表的字段之间没有了传递依赖,都只依赖主键,我们平时开发时设计的一般都是属于第三范式的,没有那么复杂的不好维护的依赖关系。


再说一下这几个名词的定义,因为它们在476页和509页两个章节里有定义重复的:

本题中主属性和题干的主键相等,但定义有一点区别:

635页说,主键又叫主码,

476页说,主码是多个候选码中的一个,

476页说,候选码是一个或者一组属性它们可以确定一整行的数据。

476页说,主属性就是所有的候选码组合去重(20年或者19年的一个考题就靠这个)。但是509页说,任何一个包含在所有候选码中的单独的属性都叫主属性,不是的就叫非主属性。

所以记忆他们的顺序可以是:最少一个或者一组属性可以确定一行→把这一个或者一组属性放到候选码的集合(比如数组)里当做一个候选码。如果又有一个或者一组可以确定整行数据的属性,那么就再放到候选码的集合里,现在就有两个候选码了。以此类推。

候选码中→随便选一个当主码/主键,比如本题是A2A5。

候选码中→所有的候选码的属性组合在一起去重,得出主属性

请先 登录 后评论