创建基于 YAML 的列表与 Rails 中的模型

Creating a YAML based list vs. a model in Rails

我有一个主要由餐厅模型实例组成的应用程序。这些餐厅的基本属性之一是标记其所属的 菜系。我目前在设计这个方面与自己意见相左。一方面,我想创建一个 Cuisine 模型并在 RestaurantsCuisines 之间创建一个 HMTHABTM 关联。

最近我看到了这个 post,它展示了如何创建一组预定义的属性。为了进一步回答问题,我假设(在我的例子中)我会在我的餐厅模型中添加一个基于字符串的 cuisine 列,并在我的餐厅表单中设置一个 select 框,这样可以节省selected 值。

我想知道最有效的方法是什么?目标是最终能够根据餐厅所属的菜系查询餐厅。我不确定模型是否是最佳选择,因为它在某种意义上仅用作 join tablename 属性。不确定为如此微小的事情添加额外的 table 是否是最佳选择。

另一方面,我不知道为此使用 YAML 是否有帮助,因为这些值本质上是虚拟字符串,没有像模型实例那样的有形记录。有人可以帮我解决这个困惑吗?

规范化数据库中的多对多关系有很多好处。 Here are some:

  • 搜索、排序和创建索引更快,因为 table 更窄,数据页上可以容纳更多行。
  • 您可以拥有更多聚簇索引(每个 table 一个),这样您就可以更灵活地调整查询。
  • 索引搜索通常更快,因为索引往往更窄更短。
  • 更多 table 允许更好地使用段来控制数据的物理位置。
  • 通常每个 table 的索引较少,因此数据修改命令更快。
  • 更少的空值和更少的冗余数据,使您的数据库更加紧凑。
  • 如果您不维护冗余数据,触发器的执行速度会更快。
  • 数据修改异常减少。
  • 规范化在概念上更清晰,更易于维护和随需求变化而变化。

此外,通过规范化,您可以从 ActiveRecord 获得更清晰的语法和其他基础架构优势,例如

cuisine.restaurants.where(city: 'Toledo')