【问题标题】:Does a column still called primary key if it is currently didn't contain duplicate data BUT it could contain duplicate data?如果列当前不包含重复数据但它可能包含重复数据,它是否仍称为主键?
【发布时间】:2021-08-31 21:32:19
【问题描述】:

如果一张表只有1列当前不包含重复数据,但将来可能包含重复数据,是否仍称为主键?

例子

Name Flight Destination Flight date
Abrams USA 20 October 2021
Jack England 20 October 2021
Lily USA 1 December 2021

唯一没有重复数据的列是名称列。因为它不包含重复数据,所以它是当前唯一标识表中的每一行记录(因为没有重复数据)。

但是将来有可能该列可能包含重复数据(因为人们可能具有相同的名称),所以它仍然称为主键还是没有?

编辑:澄清

【问题讨论】:

  • 配置为一个就是一个
  • 它可能包含重复项,它不是主键(甚至不是唯一键)
  • @Nico Haase 不不不,这不是为了实际目的,只是理论上的,所以我在以后的考试中不会弄错
  • @a_horse_with_no_name 所以答案是否定的,因为它可能包含重复数据,即使它当前不包含重复数据?
  • 如果这是理论上的:你为什么在乎?数据要么可以用于非重复数据,要么不能。这一切都取决于您的用例。

标签: database


【解决方案1】:

只有当字段是每个个人记录的唯一标识符时,主键才应应用于列。

例如:员工 ID 可能是主键,但可能看起来唯一但并非不一定唯一的东西,例如生日或姓名,则不是。即使目前没有两条记录具有相同的生日或名称,也不意味着它们不能。

主键字段中的每个字段对于与其关联的记录必须是唯一的。

编辑:澄清

【讨论】:

  • 是的,您发布的表格没有合适的主键字段。例如,如果有一个带有护照号码的字段,那可能是一个主键。
  • name字段目前不包含重复数据,所以只要没有说它不能包含重复数据,它不叫唯一标识符吗?因此,它不是主键吗?拜托,这是回答我作业中的问题
  • 名称字段当前不包含重复数据,但这并不意味着它不能。如果您将 name 标记为主键并尝试添加名称为“Lily”的记录,那么您将遇到麻烦。主键字段是可用于唯一标识数据库中任何记录的字段(通常ID 号、订单 ID 等)。如果您理解,请标记为答案,
  • 如果你将name标记为主键并尝试添加名为'Lily'的记录,你会遇到麻烦。这只是理论上不实际。是的,我知道如果我使用名称作为主键并尝试添加重复数据,实际上我会遇到 trouble,但由于这是理论上的目的,我并不关心。
  • 如果你的问题是你能用主键标记一个没有重复数据的字段,答案是肯定的。如果问题是你应该标记一个可能有重复数据但当前没有主键重复数据的字段,那么答案是否定的,原因我已经解释过了。
猜你喜欢
  • 2016-06-08
  • 2022-11-07
  • 2023-03-29
  • 2019-02-26
  • 1970-01-01
  • 2015-11-15
  • 2018-02-18
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多