0

我有三个模型:

  • 国名:字符串
  • 州名:字符串,国家:参考
  • 城市名称:字符串,州:参考

我有模型:

  • 用户名:字符串,姓:字符串,城市:参考,...

我应该在这个模型中保留对州和国家的引用,还是只保留对城市模型的引用?

什么解决方案更好?现场的流量不是那么高。

问候

4

1 回答 1

0

这个答案完全取决于您的用例。如果您需要将邮件发送到相关地址,那么您很可能需要一个非常一致的地址。或者也许它只是其他用户知道的信息。

我住在一个叫“牛顿”的城市,但我的实际邮寄地址叫它“牛顿中心”,但我们大多数人都会写成“牛顿中心”。根据这些数据在我的应用程序中的使用方式,我可能会选择让用户输入他们的城市,也许使用您现有的列表作为帮助自动完成或其他方式的一种方式。如果您的数据库中没有用户可能居住的所有城市,或者如果存在错误,那么用户处理起来会很痛苦。有很多方法可以解决这个问题,但它们都以可用性换取数据的一致性。

如果您已经拥有这三个模型并且它们已被填充,那么也许这就是要走的路,并且拥有正确规范化的数据模型(像这样)始终是我的第一直觉。然而,这是一种特殊情况。特别是对于州(可能还有省)和国家/地区,您可以将已建立的 ISO 标准代码存储在代码中的散列中,并将 ISO 代码存储在数据库中。有许多 gem 提供这些参考。

我几乎总是会说“规范化你的数据库”,但这可能是一种情况,对于城市、州/省、国家(甚至邮政编码),您可能决定不使用数据库支持的模型。我认为这就是大多数“典型”应用程序处理地址的方式。

于 2012-11-21T14:20:53.953 回答