我正在开发银行应用程序,在数据库设计过程中我听说主键应该是自动递增,但是很容易使用帐号作为表帐户的主键,即混合字符串和数字。所以请注意使用account_number作为主键有任何问题。
答案 0 :(得分:4)
主键绝不需要使用auto_increment
属性 - 它只需要是唯一的非空标识符,因此帐号可以正常使用。
然而,值得记住的另外两个考虑因素是:
数字通常占用的空间少于字符串,这通常会使索引更小,因此速度更快。如果您的查询具有复杂的架构并在主键上使用大量连接,则这种差异可能会很明显。
有些DBA主张使用与您的数据分开的主键(和其他键)。这样,如果您有一天更改了帐户标识符(例如,银行收购了另一家银行并且必须将其客户合并到其系统中),您只需更新一些数据,而不是所有密钥。
答案 1 :(得分:1)
它没有问题,你不需要auto_increment(但它很方便)。主键只需要是一个唯一值,用于标识其他条目的条目,而不是null。
答案 2 :(得分:1)
主键应该是唯一的,但不一定需要auto_increment。只要account_number是唯一的,就不会有任何问题。
答案 3 :(得分:1)
嗯,如果我们知道主键始终是唯一的,则不需要将主键设置为自动增量。我们将主键设置为自动递增,因为它易于处理。在制作银行软件时,银行帐号始终对每个用户都是唯一的。因此,您可以将该帐号用作主键。这不是问题。
答案 4 :(得分:0)
只要帐号是唯一的,不可变的且永远不是NULL,将它用作主键就不是问题。
如果您不确定不可变性,那可能不是一个好主意,事情会发生变化,更新主键通常不是最好的主意,因为您还需要更新所有内容外键引用它。
如果您不确定,surrogate primary key以及帐号上的唯一索引可能会更好。