如果我有多个候选键,哪一个是主键并证明您的选择合理?

1 database

鉴于:

R = {账户,分析员,资产,经纪人,客户,佣金,公司,股息,交易所,投资,办公室,资料,回报,Risk_profile,股票,交易量}

和一组功能依赖:

F {fd1,fd2,fd3,fd4,fd5,fd6,fd7,fd8,fd9,fd10,fd11}

哪里:

fd1:客户 - >办公室
fd2:股票 - >交易所,股息
fd3:经纪人 - >简介
fd4:公司 - >股票
fd5:客户 - > Risk_profile,分析员
fd6:分析师 - >经纪人
fd7:股票,经纪人 - >投资,交易量
fd8:股票 - >公司
fd9:投资,佣金 - >返回
fd10:股票,经纪人 - >客户
fd11:账户 - >资产

这些是候选键:

(账户,佣金,分析员,公司)
(账户,佣金,分析师,股票)
(账户,佣金,经纪人,公司)
(账户,佣金,经纪人,股票)
(账户,佣金,客户,公司)
(账户,佣金,客户,股票)

(问)选择一个主键并证明你的选择是正确的吗?

我是选择
(账户,佣金,经纪人,股票)作为主键???

我之所以选择它,是因为与其他相比,它具有最直接的依赖性.例如,更多属性在功能上依赖于该主键.

请检查我的答案是否属实?或不

我尽快等你的回答

谢谢

Pet*_*ans 8

我会创建一个虚拟唯一ID来标识行并将其链接到其他表,因为我对复合键有一致的不良体验.单个id字段可以更好地工作.

我怀疑他们只是邪恶的.

对于所有相关的可能键,我建议创建唯一索引,这将提供优势(保证唯一性和快速检索)并没有任何缺点(不要让我开始).

我还怀疑所提出的关键领域可能会不时发生变化.你真的希望你的密钥是不可变的,因为它将被用作参考.

  • 不能同意更多.只需添加唯一ID即可快速(只要编入索引),有效(保证唯一性)和自动生成(如果向字段添加auto_increment). (4认同)