设关系模式R(A,B,C),F是R上成立的FD集,F={A→B,B→C)。(1)试说明为什么R不是3NF模式。(2)试分析模式R的数据冗余问题。(3)试把R分解成3NF、模式集。
设关系模式R(A,B,C),F是R上成立的FD集,F={A→B,B→C)。(1)试说明为什么R不是3NF模式。(2)试分析模式R的数据冗余问题。(3)试把R分解成3NF、模式集。
【正确答案】:(1)根据FD集F,可知模式R的关键码为A。这样就有A→B,B→C,可见非主属性C传递依赖于关键码A,因此R不是3NF模式。(2)由于A→B,B→C,即每个B值只有一个C值对应,但一个B值可以有10个A值对应,这样在关系中就要有10个元组,这10个元组的B值相等,而与B值对应的同一个C值就要重复10次,这就是数据冗余。(3)此时把传递依赖中每个依赖的属性单独构成模式。即把R分解成ϱ={AB,BC},传递依赖A→C就在模式AB和BC中不出现了(但A→C未丢失)。p是3NF模式集。
Top