使用varchar列作为外键引用是否有意义?

时间:2011-08-11 12:14:53

标签: mysql foreign-keys many-to-many varchar

给定两个表booksauthors,其中每个表都有一个varchar类型的唯一键,用于在整个生态系统中识别它们。 在Many-To-Many-Table中将这些键用作Foreignkeys是否有意义,或者我应该在authorsbooks类{{1}中创建主键避免开销?已存在的那些密钥的长度不超过255。

5 个答案:

答案 0 :(得分:1)

我总是喜欢代理键。它可以保护您免受未来未知的更改,因为它与应用程序数据分离。

答案 1 :(得分:0)

我认为更好的方法是使用int key作为主键。首先 - 你将避免开销,其次 - 你将获得一些表现。

答案 2 :(得分:0)

int将是更好的方式。但是,您可能需要花费大量精力来重做现有数据 - 这可能会影响您不做出更改......

我建议从长远来看,早点而不是晚点进行此更改会更容易。

答案 3 :(得分:0)

创建一个新的主键是个好主意, 作为主键也强制执行非空约束。

答案 4 :(得分:0)

虽然我也认为int键更好,但我认为您不应该对主键进行任何更改,因为它已经有效。例如,如果是书籍的ISBN代码,则varchar键可能有意义。 如果没有损坏,请不要修理