【问题标题】:RoR and Relational databases: handling Model default values in databaseRoR 和关系数据库:处理数据库中的模型默认值
【发布时间】:2012-01-28 04:12:46
【问题描述】:

我正在处理一个 RoR 项目,但在决定我的关系数据库表的设计时遇到了麻烦。

考虑以下几点:

我有一个模型产品,每个产品都有一个唯一的名称。

我还有一个模型叫做 Shop,每个商店都有很多产品。

最后,我有一个 Order 模型,Order 显然与发出订单的商店以及订购的产品列表有关。

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

我的想法如下:

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

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

  • 创建一个 Product_To_Shop 表,该表将保存该商店的产品数量,并将保存与产品默认值列相匹配的附加列,这将使商店覆盖默认的产品相关值。

现在,当我想获取特定订单的价格时,我将首先查看 Product_To_Shop 表,以获取相关的 Product 和 Shop,并检查匹配行的 Price 字段,以防它不是设置为一个值 (nil),转到 Product 表并获取相关产品的默认价格值。

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

我想知道是否有人不得不像这样处理在数据库中保留默认值并有一个更优雅的解决方案,因为这似乎有点矫枉过正......

【问题讨论】:

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


    【解决方案1】:

    你可以这样做

    1. 创建一个 Products 表,其中将包含产品数据(但不包含价格)。
    2. 创建一个 Shops 表,其中将包含商店数据。
    3. 创建一个价格表,其中将包括 Product_id、Shop_id、Price。

    Shop_id 默认为 null,表示您的默认价格

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

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      相关资源
      最近更新 更多