选择主键

时间:2014-11-26 00:19:29

标签: mysql

我正在创建一个跟踪收入和结果的表格。我有以下几行

  • 类型[可以假设3个值]
  • 日期[交易日期]
  • incomeAmout
  • incomeDescription
  • outcomeAmount
  • outcomeDescription

如果我将日期作为主要日期,那么我将无法在同一日期进行多笔交易。我可以将所有行作为主键,但我不确定这是最好的方法。你建议我做什么?我读了一些关于创建自动增量索引的主题,但我想知道我是否可以在不添加其他属性的情况下完成它。 感谢

2 个答案:

答案 0 :(得分:0)

id列作为主键。这将是您的不可变记录标识符。

你可能也希望拥有某种随机化的事务标识符,例如UUID或从某事物的SHA256哈希派生的值。这样,您可以共享这些标识符,而不会过多地了解数据库结构或数据库中有多少记录。

然后,如果您需要另一个密钥,请将其添加为UNIQUE索引,或者定义要作为复合密钥强制执行的任何唯一约束。

答案 1 :(得分:0)

您的问题应该是:Surrogate Key vs. Natural Key

在您的情况下,您别无选择,只能使用Surrogate Key:创建一个名为“ID”的新字段,并将其设置为Integer,Autoincrement,Primary Key。

BTW,Microsoft建议使用Surrogate密钥作为一种良好做法。