给定两个表books
和authors
,其中每个表都有一个varchar
类型的唯一键,用于在整个生态系统中识别它们。 在Many-To-Many-Table中将这些键用作Foreignkeys是否有意义,或者我应该在authors
和books
类{{1}中创建主键避免开销?已存在的那些密钥的长度不超过255。
答案 0 :(得分:1)
我总是喜欢代理键。它可以保护您免受未来未知的更改,因为它与应用程序数据分离。
答案 1 :(得分:0)
我认为更好的方法是使用int key作为主键。首先 - 你将避免开销,其次 - 你将获得一些表现。
答案 2 :(得分:0)
int将是更好的方式。但是,您可能需要花费大量精力来重做现有数据 - 这可能会影响您不做出更改......
我建议从长远来看,早点而不是晚点进行此更改会更容易。
答案 3 :(得分:0)
创建一个新的主键是个好主意, 作为主键也强制执行非空约束。
答案 4 :(得分:0)
虽然我也认为int键更好,但我认为您不应该对主键进行任何更改,因为它已经有效。例如,如果是书籍的ISBN代码,则varchar键可能有意义。 如果没有损坏,请不要修理。