【问题标题】:Difference between Primary key and Candidate key主键和候选键之间的区别
【发布时间】:2013-05-11 20:46:11
【问题描述】:

我已阅读 RDBMS 中的密钥。 https://stackoverflow.com/a/6951124/1647112 但是,我无法理解使用候选键的必要性。如果只需要一个主键来唯一标识表中的一行,为什么需要候选键? 请举一个很好的例子来说明各种键的区别和重要性。 提前致谢。

【问题讨论】:

  • 我认为 OP 想要这个:假设你有三个表。您的主表将最重要的(对数据设计)键定义为主键。但。其他 2 个表具有不同的主键。为了在表 1 和 2 或表 1 和 3 之间进行有效连接,您可能需要将外部表中的公共列(外键)添加到表 1。这是查看您正在尝试的内容的另一种方式理解。外键唯一标识 rable 1 中的行

标签: sql key rdbms


【解决方案1】:

一个表可以有一个或多个候选键 - 这些是唯一标识表中一行的键。

但是,只能选择这些候选键中的一个作为主键。

【讨论】:

  • @ShashankRaghunath - 是的。您选择的那个。
  • 请好心告诉我,为什么要使用超级键?
  • @ShashankRaghunath - 你看到它们在哪里使用?据我所知,这只是一个术语,没有太多实际用途。
  • 在任何地方都没有见过它们。我必须为考试而学习它们。我简直无法理解这些键。
  • 你可以有多个列作为一个PK?不能吗?
【解决方案2】:

从上面的回答我得出了这个结论

超级键(用于选择一行或多行的一个或多个属性)

                        ||
                        \/

候选键(super 中的一个或多个属性用于选择单行)

                        ||  
                        \/

主键(用于选择单行的候选键中的一个属性)

我说的对吗?

【讨论】:

  • 主键候选键之一,由您作为数据库设计者选择。它不是候选键的部分 - 它是现有的、已识别 候选键之一(整个 候选键)。
猜你喜欢
  • 2011-04-06
  • 2012-09-30
  • 2011-10-20
  • 2011-08-02
  • 2012-05-21
  • 1970-01-01
  • 2012-03-22
  • 2011-09-16
  • 2014-09-16
相关资源
最近更新 更多