sql表设计

时间:2012-03-20 12:09:14

标签: mysql sql oracle

昨天我面临一个关于sql表设计的面试问题。   问题是,如果表包含firstName,lastName,Gender等字段(只有这些字段不再存在),我们可以选择哪一个作为主键?

任何提示都会非常感激 谢谢

5 个答案:

答案 0 :(得分:3)

它们中没有一个在表中是唯一的,因此您需要创建一个自动递增的额外主键字段,以便保证两行不会相同。听起来他们给你一个技巧问题:)

答案 1 :(得分:1)

PRIMARY KEY必须是唯一的。因此,您必须根据不会重复的数据构建它。

答案 2 :(得分:0)

所以主键是一个独特的&不是空值。

如果表包含firstName,lastName,Gender等字段(只有这些字段不再存在),我们可以选择哪一个作为主键。

您不能将上面的列用作主键。

答案 3 :(得分:0)

这是我的2美分(这些规则适用于每个新表,适用于初学者模式设计者)

  • 主键不应该是复合键(也就是说,它应该只包含1列)
  • 主键列不应包含任何有意义的数据(它应该是生成并自动分配给新记录的数字)
  • 主键的值永远不应更改,且不应为null
  • 除了主键之外,您还应该使用其他唯一键(可能是复合键),使用有意义的数据字段,以确保您没有重复记录(例如firstName,lastName,dateOfBirth)

答案 4 :(得分:0)

您可以将一个字段与另一个字段组合,该字段将为您提供主键(不是非常值得推荐,但您可以将此字段加上时间戳字段作为组合主键).....