将整数作为字符串存储在数据库中的任何缺点?

ric*_*ick 16 python mysql database database-design

我有需要存储的产品的id值.现在它们都是整数,但我不确定将来的数据提供者是否会在该混合中引入字母或符号,所以我在讨论是否将它现在存储为整数或字符串.

将值保存为字符串是否存在性能或其他缺点?

Gre*_*ill 28

除非您确实需要整数的功能(即,执行算术的功能),否则将产品ID存储为字符串可能更好.您永远不需要执行任何操作,例如将两个产品ID一起添加,或计算一组产品ID的平均值,因此不需要实际的数字类型.

将产品ID存储为字符串不太可能导致性能上存在可测量的差异.虽然存储大小会略有增加,但产品ID字符串的大小可能远小于数据库行其余部分的数据.

如果数据提供者决定开始使用字母或符号字符,今天将产品ID存储为字符串将为您节省很多痛苦.没有真正的缺点.

  • +1 关键是,ID _概念上_不是数字,这可以通过将字母与数字混合使用的可能性来证明。 (2认同)

S.L*_*ott 16

不要考虑表现.考虑意义.

ID"数字"不是数字,除了它们是用所有数字的字母表写的.

如果我的零件号为12,零件号为14,那么这两者有什么区别?第2或第2部分是否有意义?没有.

部件号(以及没有度量单位的任何部件)不是"数字".它们只是数字串.

例如,美国的邮政编码.电话号码.社会安全号码.这些不是数字.在我的城镇,邮政编码12345和12309之间的差异不是从我家到市中心的距离.

不要将数字与单位混淆 - 其中总和和差异意味着具有数字串而没有总和或差异的东西.

部件ID号码 - 正确 - 字符串.不是整数.它们永远不会是整数,因为它们没有总和,差异或平均值.

  • 两个温度的总和意味着它们的平均温度的两倍;)如果你使用开尔文,总和意味着它们内部能量的总和. (2认同)