以第一范式识别主键的具体步骤是什么

时间:2019-04-28 09:01:26

标签: database primary-key database-normalization functional-dependencies candidate-key

我对于如何以第一种普通形式识别主键感到非常困惑

在第一个示例中:我可以理解SR_ID和Cus_No是主键的原因。但是,为什么Mngr_ID不是主键?为什么Mngr_ID取决于SR_ID和Cus_No enter image description here

在另一个示例中:为什么staff_No不是主键? 因为在演讲中,我的教授研究的第一步是从发现PK开始的。但是我不确定该怎么做?在此示例中,所有其他属性都可以取决于property_no和IDate,因此它们是pk。但是我不明白为什么staff_no取决于property_no和IDate

enter image description here enter image description here

1 个答案:

答案 0 :(得分:-1)

主键是使表中的行唯一的列或列的组合。 在第一个示例中,mgr Id不是密钥的一部分,因为管理者是直接分配给用户的,因此每个用户只有一个管理者。因此,如果您认识用户,则经理是无关紧要的,因为它是从用户派生的。另一方面,如果用户可以拥有多个经理,则可以从该表中提取经理ID并创建一个经理销售代表表以保持这种关系。无论哪种方式,实际上都不需要经理来使销售代表-客户关系独特。

第二个示例更令人困惑,因为它取决于对问题描述(不是很好)的解释。如果每天只有一个人可以检查房屋,那么不需要工作人员作为主键的一部分。但是,由于问题表明可能有不止一个人共享汽车,因此有可能两个人可能在一天内一起检查房屋。这意味着在这种情况下,工作人员应成为关键的一部分。

最后,就像软件开发中的所有内容一样,这完全取决于您要使用应用程序完成的工作。