给予:
R={帐户、分析师、资产、经纪人、客户、佣金、公司、股息、交易所、投资、办公室、概况、回报、Risk_profile、股票、数量}
和一组功能依赖关系:
F{fd1,fd2,fd3,fd4,fd5,fd6,fd7,fd8,fd9,fd10,fd11}
其中:
fd1: Client -> Office
fd2:股票->交易所股利
fd3: Broker ->配置文件
fd4:->股票公司
fd5: Client -> Risk_profile,分析师
fd6:分析师-> Broker
fd7:股票,经纪人,->价格,成交量
fd8:股票->公司
fd9:投资,佣金->回报
fd10:股票,代理->客户端
fd11:帐户->资产
这些是候选密钥:
(账户、佣金、分析师、公司)
(账户、佣金、分析师、股票)
(帐目、佣金、经纪、公司)
(帐目、佣金、经纪、股票)
(帐户、佣金、客户、公司)
(账户、佣金、客户、股票)
(Q)选择一个主键并证明你的选择是合理的?
我被选中了
(帐户、佣金、经纪人、股票)作为主要密钥?
我之所以选择这样做,是因为它与其他依赖项相比具有最直接的依赖关系。例如,更多的属性在功能上依赖于这个主键。
,请检查我的回答是否属实?或不包括
我在等你尽快回答
谢谢
发布于 2010-05-28 02:19:47
我会创建一个虚拟的唯一id来标识行,并将其链接到其他表,因为我对复合键有着一贯的不良经验。一个id字段的工作效果要好得多。
我怀疑他们是邪恶的。
对于所有相关的可能键,我建议创建唯一的索引,这将提供优势(保证唯一性和快速检索),没有任何缺点(不要让我开始)。
我还怀疑,提出的关键领域可能会不时发生变化。您确实希望您的密钥是不可变的,因为它将用作引用。
发布于 2010-05-28 08:30:52
在逻辑数据库设计中,选择一个候选键成为“主”键,而牺牲所有其他键成为“次要”键,是一种完全武断和人为的选择。
这就是为什么Date在15年前就放弃了“主键”的概念。每个键都对应于某个唯一性规则,没有哪个键比其他任何一个键“更独特”。句号。
数据库系统不应该迫使数据库设计人员做出这种无关紧要的选择。它们确实迫使数据库设计者做出这样的选择,部分原因是历史原因(当时人们认为主/次区分有一定的相关性),部分原因是数据库管理系统中的大狗不愿意在任何相关程度上改进它们现有的现金流生成系统。
https://stackoverflow.com/questions/2926269
复制相似问题