RoR和关系数据库:处理数据库中的模型默认值

时间:2011-12-26 21:10:46

标签: ruby-on-rails database-design activerecord relational-database

我正在开发一个工作的RoR项目,我在决定关系数据库表的设计时遇到了麻烦。

请考虑以下事项:

我有一个型号产品,每个产品都有一个独特的名称。

我还有一个名为Shop的模型,每个商店都有很多产品。

最后,我有一个订单模型,订单显然与订单所在的商店以及订购的产品列表相关联。

我想保留每个产品的默认值(例如默认价格),并且我希望每个商店能够在需要时覆盖这些默认值,但无法真正决定这样做的策略。

我的想法如下:

  • 创建一个Product表,其中包含产品名称,以及保留产品默认值(例如价格)的列

  • 创建一个Shop表,其中包含与商店有关的所有内容。

  • 创建一个Product_To_Shop表,该表将保存该商店的产品数量,并将保留其他列,这些列与产品默认值列相匹配,这些列将允许商店覆盖与产品相关的默认值。

现在,当我想获得特定订单的价格时,我将首先查看Product_To_Shop表,查看相关的产品和商店,并查看匹配行的价格字段,如果不是设置为值(nil),前往Product表并获取相关产品的默认价格值。

对于一项似乎有点琐碎的任务来说,整个事情看起来有点复杂。

我想知道是否有人必须处理如此保持数据库中的默认值并且有一个更优雅的解决方案,因为这似乎是一种矫枉过正......

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作

  1. 创建一个Products表,其中包含产品数据(但没有价格)。
  2. 创建一个Shops表,其中包含商店数据。
  3. 创建一个价格表,其中包括Product_id,Shop_id,Price。
  4. Shop_id默认为null,表示您的默认价格

    当您需要价格时,获得一个匹配的shop_id或isnull