Rails数据库设计:使用字符串还是整数?

3
假设我有一个包含从一组选项中选择的信息的rails表格。例如,名为sex的字段可以是男性女性。名为Bodytype的字段将是苗条丰满等等。
我的问题是,将这些值存储为整数还是字符串更好?
在第一种情况下,当然,整数将被转换为文本(在控制器中?)。
感谢您的所有帮助。

4
如今的性别问题不是非黑即白的。请使用0到1之间的浮点数值。 :D - Wug
哈哈,我会考虑的。 - TimmyOnRails
这篇文章有点偏见,但信息很好:http://www.codinghorror.com/blog/2008/07/maybe-normalizing-isnt-normal.html 至少可以看到双方提出的问题和关注点。 - iouri
2个回答

3

如果你没有存储数百万条记录,将它们作为字符串存储是可以的。但是,你会失去快速更新这些类别的能力,但如果它们基本上是静态的且不会随时间而改变,则这并不重要。性别应该被称为gender,体型应该被称为body_type。


一个规范化良好的数据库应该使用最小可能的数据类型来唯一表示所需的所有可能性,并且应该使用另一个表来查找这些值的可读名称。 - Wug
适当规范化的数据库并不总是最佳解决方案。在 Rails 开发中,尤其需要考虑许多其他因素。 - iouri
1
哪个规范建议使用最小的数据类型? - Neil McGuigan
似乎存在不同的观点。我怎么知道哪个是正确的? - TimmyOnRails
这是一个哲学上的辩论。你总是可以稍后对表进行规范化/反规范化处理。你想要处理连接、额外的模型和额外的代码吗?你的数据库会有多大,你更频繁地读取数据还是写入数据?对于像地址这样的复杂概念,将其存储在不同的表中完全没有问题,但对于像性别和体型这样简单的概念,这根本没有意义。 - iouri
谢谢,我会阅读所有的回复。至少现在我明白我可以选择任何一种方式。我更经常地读取数据而不是写入数据,但我仍然经常写入数据。 - TimmyOnRails

1

您应该始终使用索引来识别表中的属性。例如,您的表将如下所示:

Gender Table
  id | sex     
  1  | Female
  2  | Male

Figure Table
  id | body_type
  1  | slim
  2  | curvy

然后,您可以根据ID引用这些值。

http://use-the-index-luke.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接