gpt4 book ai didi

sql - 使用 char 作为主键/外键是否不行?

转载 作者:可可西里 更新时间:2023-11-01 06:27:50 28 4
gpt4 key购买 nike

假设有一堆链接到“国家”或“货币”表的表。

为了使数据更易于阅读,我希望将带有国家代码(例如美国、英国、澳大利亚)和货币代码(美元、澳元)的 CHAR 字段作为这两个表中每一个的主键,所有其他表都将使用此 CHAR 作为外键。

数据库是带有innodb引擎的mysql。

它会导致性能问题吗?这是我应该避免的事情吗?

最佳答案

性能并不是真正的主要问题,至少对我而言不是。问题更多是关于代理项与自然键。

国家代码不是一成不变的。他们可以而且确实在改变。国家更改名称(例如埃塞俄比亚更改为厄立特里亚)。它们产生(例如南斯拉夫或苏联解体)和不复存在(例如西德和东德)。发生这种情况时,ISO 标准代码会发生变化。

更多信息 Name Changes Since 1990: Countries, Cities, and More

代理键往往更好,因为当这些事件发生时,键不会改变,只有引用表中的列会改变。

出于这个原因,我更倾向于使用 int 主键创建国家和货币表。

话虽如此,varchar 键字段将使用更多空间并具有某些性能劣势,除非您执行大量查询,否则这可能不会成为问题。

为了完整性,您可能需要引用 Database Development Mistakes Made by AppDevelopers .

关于sql - 使用 char 作为主键/外键是否不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1419210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com