2

只是好奇其他人如何处理枚举和 nosql?将属性存储为枚举值还是字符串更好?在某些情况下,这会影响数据库的大小或性能吗?例如,想想,比方说,一个职业运动员......他的运动类型可能是足球,曲棍球,棒球,篮球等......字符串与枚举,你们怎么看?

4

2 回答 2

1

String更好的便携性角度。并且不受流行的 DBMS 之类的和许多其他Enum的支持。MSSQL Server

您可以使用应用程序级逻辑来防止对数组进行有效输入,并将其存储为字符串。

编辑:

我的偏好更改StringCakePHP我在哪里做网络应用程序)不再支持Enum可移植性问题。

于 2011-02-16T19:18:45.713 回答
1

您应该在代码中使用枚举——强类型有助于避免很多错误——并将它们转换为字符串或数字进行存储。

字符串确实需要更多的存储空间——“篮球”是 10-20 字节,具体取决于编码,如果将其存储为 4,它只需要 1 个字节。但是,在极少数情况下这实际上很重要 - 如果您有一百万条记录,那么总数据库大小的差异仍然小于 20MB。如果枚举更改,字符串更容易使用并且不太可能静默失败,因此请使用字符串。

对于大多数操作,字符串也比数字慢,包括在加载时转换为枚举。但是,差异比从数据库中检索任何内容所花费的时间要少几个数量级,所以没关系。

于 2011-02-16T21:59:19.887 回答