【问题标题】:General Question about Data Duplication / Normalization (Modelling)关于数据复制/规范化(建模)的一般问题
【发布时间】:2011-08-17 00:27:01
【问题描述】:

我有以下关系:

  • Foohas_one酒吧
  • 酒吧has_many巴兹
  • Foo has_many Baz through Bar

现在我的问题是:我需要使用Foo.Baz,但信息应该是冻结/静态的。

我的意思是,每当Bar.Baz 更改时,我不希望Foo.Baz 更改。

本质上,Foo.Baz 是在创建Foo 时描述Baz 的某种日志记录。

如何最好地处理这种情况?

我的第一个倾向是在FooBaz 之间创建另一个关系,但这会增加很多冗余数据,因为Bar.Baz 只会偶尔更改。

有没有更好的办法?

【问题讨论】:

  • Bas has_many Baz
  • 所有这些 Foo 都让我发痒,我更喜欢像 Cat/Nose/Whiskers 这样易于掌握的示例 :)
  • 您是说“我的第一个倾向是在 Foo 和 Baz 之间建立另一种关系”,这是否意味着即使 Bar.bazs 发生变化,原始 Baz 也不会受到影响?
  • 如果删除或修改 Baz 会发生什么?额外的关系在那里无济于事。一开始您的架构设计可能有问题。

标签: ruby-on-rails database model-view-controller


【解决方案1】:

您能否保持原样,然后创建一些范围以根据时间戳获取 Foo.Baz 并且不允许更新 Bar.Baz,只是创建。所以要获取 Foo.Baz,你会得到最新的

Bar.Baz when Bar.Foo == foo and Bar.baz.created_at < Foo.created_at.

我意识到这不是一个很好的解决方案,但它可能是一个起点......

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 2012-07-30
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2011-11-04
    相关资源
    最近更新 更多