Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如果我有多个候选密钥,哪一个是主键并证明您的选择正确?_Database - Fatal编程技术网

Database 如果我有多个候选密钥,哪一个是主键并证明您的选择正确?

Database 如果我有多个候选密钥,哪一个是主键并证明您的选择正确?,database,Database,鉴于: R={账户、分析师、资产、经纪人、客户、佣金、公司、股息、交易所、投资、办公室、概况、回报、风险概况、股票、交易量} 以及一组功能依赖项: F{fd1,fd2,fd3,fd4,fd5,fd6,fd7,fd8,fd9,fd10,fd11} 其中: fd1:客户->办公室 fd2:股票->交易所,股息 fd3:Broker->Profile fd4:公司->股票 fd5:客户->风险简介,分析师 fd6:分析师->经纪人 fd7:股票,经纪人->投资,交易量 fd8:股票->公司 fd9:投

鉴于:

R={账户、分析师、资产、经纪人、客户、佣金、公司、股息、交易所、投资、办公室、概况、回报、风险概况、股票、交易量}

以及一组功能依赖项:

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

其中:

fd1:客户->办公室
fd2:股票->交易所,股息
fd3:Broker->Profile
fd4:公司->股票
fd5:客户->风险简介,分析师
fd6:分析师->经纪人
fd7:股票,经纪人->投资,交易量
fd8:股票->公司
fd9:投资、佣金->回报
fd10:股票、经纪人->客户
fd11:帐户->资产

这些是候选密钥:

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

(Q) 选择主键并证明您的选择正确吗

我被选中了
(账户、佣金、经纪人、股票)作为主键

我之所以选择它,是因为与其他方法相比,它具有最直接的依赖性。e、 g.更多属性在功能上依赖于此主键

请检查我的答案是否正确?或者不是

我在等你尽快答复


谢谢

我会创建一个虚拟的唯一id来标识行,并将其链接到其他表,因为我一直对复合键有着不好的体验。单个id字段的效果要好得多

我怀疑他们是邪恶的

对于所有相关的可能键,我建议创建唯一索引,这将带来优点(保证唯一性和快速检索),而没有缺点(不要让我开始)


我还怀疑提议的关键领域可能会不时发生变化。您确实希望密钥是不可变的,因为它将用作引用

我会创建一个虚拟的唯一id来标识该行,并将其链接到其他表,因为我在使用复合键时一直有不好的经验。单个id字段的效果要好得多

我怀疑他们是邪恶的

对于所有相关的可能键,我建议创建唯一索引,这将带来优点(保证唯一性和快速检索),而没有缺点(不要让我开始)


我还怀疑提议的关键领域可能会不时发生变化。您确实希望密钥是不可变的,因为它将用作引用

在逻辑数据库设计中,选择一个候选密钥作为“主密钥”,而牺牲所有其他密钥成为“辅助密钥”,这完全是一种任意和人为的选择

这就是Date在15年前抛弃“主键”概念的原因。每个键都对应一个特定的唯一性规则,并且没有一个键比其他任何键“更独特”。句号


数据库系统不应该迫使数据库设计者做出如此微不足道的选择。它们确实迫使数据库设计者做出这样的选择,部分原因是历史原因(主要/次要区别被认为具有某种相关性的时代),部分原因是dbms领域的大公司很高兴没有在任何关系程度上改进他们现有的现金流生成系统。

在逻辑数据库设计中,选择一个候选键作为“主”键,而牺牲所有其他键成为“次”键是完全任意和人为的选择

这就是Date在15年前抛弃“主键”概念的原因。每个键都对应一个特定的唯一性规则,并且没有一个键比其他任何键“更独特”。句号


数据库系统不应该迫使数据库设计者做出如此微不足道的选择。它们确实迫使数据库设计者做出这样的选择,部分原因是历史原因(主要/次要区别被认为具有某种相关性的时代),部分原因是dbms领域的大公司很高兴没有在任何相关程度上改进现有的现金流生成系统。

完全同意。仅仅添加一个唯一的ID是快速的(只要已索引)、有效的(保证唯一性)和自动生成的(如果您将自动增量添加到字段中)。因为这显然是一个家庭作业问题,我认为应该是一个理论上的答案,而不是关于代理键的实用建议,无论这多么明智。非常同意。仅仅添加一个唯一的ID是快速的(只要已索引)、有效的(保证唯一性)和自动生成的(如果将自动增量添加到字段中)。由于这显然是一个家庭作业问题,我认为应该给出理论上的答案,而不是关于代理键的实用建议,无论这是多么明智。