只是好奇其他人如何处理enums& NoSQL的?将属性存储为枚举值还是字符串更好?在某些情况下,这是否会影响数据库的大小或性能?例如,想想,比如说,一个职业体育运动员......他的运动类型可能是足球,曲棍球,棒球,篮球等......字符串vs enum,你们都有什么想法?
答案 0 :(得分:1)
String
更便于携带。 Enum
受到MSSQL Server
以及其他许多人欢迎的DBMS支持 。
您可以使用应用程序级逻辑来阻止对数组的有效输入,并将其存储为String。
修改强>
我的偏好设置更改为String
为CakePHP
(我在哪里进行网络应用),不再支持Enum
,以提高可移植性问题。
答案 1 :(得分:1)
你应该在你的代码中使用枚举 - 强类型有助于避免很多错误 - 并将它们转换为字符串或数字进行存储。
字符串确实需要更多的存储空间 - “篮球”是10-20个字节,具体取决于编码,如果将其存储为4,则只需要1个字节。但是,实际上很少有这种情况 - 如果你有一百万条记录,那么它在数据库总大小上的差异仍然小于20MB。如果枚举更改,字符串更容易使用,并且不太可能无声地失败,因此请使用字符串。
对于大多数操作,字符串也比数字慢,包括在加载时转换为枚举。但是,差异比从数据库中检索任何东西所花费的时间要少几个数量级,所以没关系。