早教吧 育儿知识 作业答案 考试题库 百科 知识分享

已知R={A,B,C,D},F={AB→C,C→A,C→D},确定R的候选码和主码。下面是老师给出的算法:(1)将R的所有属性分为L、R、N和LR两类,令X代表L和N类,Y代表LR类(2)求X+。若X+包含了R的全部属性,则X为R

题目详情
已知R={A,B,C,D},F={AB→C,C→A,C→D},确定R的候选码和主码。
下面是老师给出的算法:
(1)将R的所有属性分为L、R、N和LR两类,令X代表L和N类,Y代表LR类
(2)求X+。若X +包含了R的全部属性,则X为R的惟一候选关键字,转5;否则转3
(3)在Y中取一属性A,求(XA) + 。若它包含R的全部属性,则转4;否则,调换属性反复进行这一过程,直到试完所有Y中的属性。
(4)如果已找出所有候选关键字,则转5;否则在Y中依次取两个、三个、……,求它们的属性闭包,直到其闭包包含R的全部属性
(5)停止,输出结果
按照以上算法,我怎么算出的好像是AB和ABC,但实际上AB和AC都是候选码呀。第四步中的“如果已找出所有候选关键字”怎么理解呀,既然还没有算完,那又如何知道是否已找出所有候选关键字呢?谁能告诉我这个算法到底怎么个用法?给个具体例子!还有这主码怎么确定呀,按照定义“如果有多个候选码,则选择其中一个做主码”,那此题求出两个候选码的话,应选哪一个呢?还是说应该这样回答:“主码是AB或AC”?
▼优质解答
答案和解析
候选码:AB且是唯一候选码
属于第二范式。因为AB→C,B→C。非主属性存在部分依赖于码
R1的码为AB。R2为B存在传递依赖