单选题
某供应商关系模式为:
Providers(PID,PName,Tel,GoodsID,GoodsClassID,GoodsName,GoodsPrice)
该关系模式满足如下函数依赖:
PID→Pname,PID→Tel,GoodsID→GoodsClassID,
GoodsID→GoodsName,GoodsName→GoodsPrice
则这个关系模式的主码为______。
A.(PID,GoodsName) B.(PID,GoodsClassID) C.(PID,GoodsID) D.(PID,GoodsPrice)
【正确答案】
C
【答案解析】[解析] 本题可以通过求关系Providers的属性集闭包的方式计算得出主码,但是也可以通过一种简单的方法来确定主码:将所有出现在函数依赖左边的属性集放在一起(如本题中的PID、PID、GoodsID、GoodsID、GoodsName),然后将函数依赖关系中每一个在右边属性集中出现的属性剔除(如果某个属性或属性集出现在一个函数依赖的左边,同时也出现在另一个函数依赖的右边,也将该属性剔除,如本题中的GoodsName),再合并左边属性集中的属性,将没有出现在任何函数依赖中的属性加入其中,即为关系的主码。本题中合并后剩余PID和GoodsID,因此关系Providers的主码为(HD,GoodsID)。
注意:本题所涉及的确定主码的简单方法不能用于所有关系主码的求解。例如,某关系中存在函数依赖集F={AB→C,AC→B,B→C},则该关系不能通过简单方法确定主码,需要通过计算属性集闭包的方法得到主码,其主码为AB或AC。