数据库是否需要对相关字段进行反规范化?

时间:2018-06-01 20:26:00

标签: sql ruby-on-rails database database-design

我的数据库中有两个表:

  • 封装

    包含有关包裹的所有信息,例如跟踪,重量。

  • 装运

    包含正在运送的已到达仓库包的列表。使用状态属性:

    in_transit,延迟,海关,交付

问题是: 用户可以查看他们的软件包,我通过查询软件包所属的发货来显示它们当前的软件包状态。 我是否需要在Package表上创建 shipment_status 列,并在更新货件状态时,运行查询更新每个包的列?或者目前的解决方案是最好的?

1 个答案:

答案 0 :(得分:0)

不,你不需要。当您需要货件状态时,如果您真的想要查询包裹并包含货件状态,则可以进行加入。

例如,

Packages.joins(:shipment).where(user_id: current_user.id).select('packages.*, shipments.status as shipment_status')

这将取代

current_user.packages

使用联接,您将拥有Package对象shipment_status方法。