主键需要始终自动增量吗?

时间:2014-04-13 08:29:11

标签: mysql database primary-key

我正在开发银行应用程序,在数据库设计过程中我听说主键应该是自动递增,但是很容易使用帐号作为表帐户的主键,即混合字符串和数字。所以请注意使用account_number作为主键有任何问题。

5 个答案:

答案 0 :(得分:4)

主键绝不需要使用auto_increment属性 - 它只需要是唯一的非空标识符,因此帐号可以正常使用。

然而,值得记住的另外两个考虑因素是:

  1. 数字通常占用的空间少于字符串,这通常会使索引更小,因此速度更快。如果您的查询具有复杂的架构并在主键上使用大量连接,则这种差异可能会很明显。

  2. 有些DBA主张使用与您的数据分开的主键(和其他键)。这样,如果您有一天更改了帐户标识符(例如,银行收购了另一家银行并且必须将其客户合并到其系统中),您只需更新一些数据,而不是所有密钥。

答案 1 :(得分:1)

它没有问题,你不需要auto_increment(但它很方便)。主键只需要是一个唯一值,用于标识其他条目的条目,而不是null。

答案 2 :(得分:1)

主键应该是唯一的,但不一定需要auto_increment。只要account_number是唯一的,就不会有任何问题。

答案 3 :(得分:1)

嗯,如果我们知道主键始终是唯一的,则不需要将主键设置为自动增量。我们将主键设置为自动递增,因为它易于处理。在制作银行软件时,银行帐号始终对每个用户都是唯一的。因此,您可以将该帐号用作主键。这不是问题。

答案 4 :(得分:0)

只要帐号是唯一的,不可变的且永远不是NULL,将它用作主键就不是问题。

如果您不确定不可变性,那可能不是一个好主意,事情会发生变化,更新主键通常是最好的主意,因为您还需要更新所有内容外键引用它。

如果您不确定,surrogate primary key以及帐号上的唯一索引可能会更好。