我有三个模型:
- 国名:字符串
- 州名:字符串,国家:参考
- 城市名称:字符串,州:参考
我有模型:
- 用户名:字符串,姓:字符串,城市:参考,...
我应该在这个模型中保留对州和国家的引用,还是只保留对城市模型的引用?
什么解决方案更好?现场的流量不是那么高。
问候
我有三个模型:
我有模型:
我应该在这个模型中保留对州和国家的引用,还是只保留对城市模型的引用?
什么解决方案更好?现场的流量不是那么高。
问候
这个答案完全取决于您的用例。如果您需要将邮件发送到相关地址,那么您很可能需要一个非常一致的地址。或者也许它只是其他用户知道的信息。
我住在一个叫“牛顿”的城市,但我的实际邮寄地址叫它“牛顿中心”,但我们大多数人都会写成“牛顿中心”。根据这些数据在我的应用程序中的使用方式,我可能会选择让用户输入他们的城市,也许使用您现有的列表作为帮助自动完成或其他方式的一种方式。如果您的数据库中没有用户可能居住的所有城市,或者如果存在错误,那么用户处理起来会很痛苦。有很多方法可以解决这个问题,但它们都以可用性换取数据的一致性。
如果您已经拥有这三个模型并且它们已被填充,那么也许这就是要走的路,并且拥有正确规范化的数据模型(像这样)始终是我的第一直觉。然而,这是一种特殊情况。特别是对于州(可能还有省)和国家/地区,您可以将已建立的 ISO 标准代码存储在代码中的散列中,并将 ISO 代码存储在数据库中。有许多 gem 提供这些参考。
我几乎总是会说“规范化你的数据库”,但这可能是一种情况,对于城市、州/省、国家(甚至邮政编码),您可能决定不使用数据库支持的模型。我认为这就是大多数“典型”应用程序处理地址的方式。