将表父级连接到另一个连接表

时间:2015-12-31 00:54:47

标签: ruby-on-rails ruby database database-design data-structures

我正在计划下表:

enter image description here

虽然我知道这在技术上是可行的(我只是尝试过),但我想看看它是否看起来不必要复杂......基本上我是在追踪收入与成本。

Tab1包含Tab2和{}的收入数据Tab3Tab2包含自己的费用数据,因此很容易。但复杂的是,Tab3单位的费用进一步分配Tab2。这就是为什么那里有一个辅助joinsB表。

我意识到这不是一个具体的问题,但我知道有更多经验丰富的人,根据这些经验,会有一个直觉“哇这太复杂”的意义或不关于我在做什么。在我构建之前,这就是我想要作为肠道检查输入/反馈的内容。

编辑以获得更清晰

  • Tab1 =费用
  • Tab2 =预订
  • Tab3 =后勤
  • joinsA = TypeCharges
  • joinsB = TypeLogistics

用户需要支付reservation的某些内容,但也可能需要付费才能将该内容发送到logistically。这两笔付款包含在一个charge中。复杂的是,一个logistics货件在不同的用户下可能包含多于1个reservation(即单独的charges)。

这个数据结构旨在帮助我做两件事:

  • 可以轻松跟踪哪个charge与给定的reservationlogistics相关联,以便我可以发出退款,但是针对特定金额(例如,用户可能会)保留reservation但希望取消logistics货件并使用其他供应商自行付款)
  • 通过logistics
  • 轻松了解reservation的费用如何分解为可分配的费用

后者是Tab3和Tab2连接的原因,直通表包含有关物流类型性质的更多信息。直通表还包含用户为charge发货reservation付款的logistically金额。 Tab3包含logistics的费用,然后根据reservations的数量charge分配费用。然后,您可以将该分配的成本与联接表中特定预留的gem install eventmachine -v '1.0.3' -- --with-cppflags=-I/usr/local/opt/openssl/include 进行比较。

1 个答案:

答案 0 :(得分:1)

您似乎需要在预订+物流级别跟踪您的费用。如果我要对此进行建模,我会按照下图所示进行操作,其中预订是实体/表格,物流也是如此。它们之间具有多对多的关系,这是使用Charges实体/表实现的多对多关系。因此,如果您需要预订费用,则需要将预订的所有费用加起来,如果您需要收取物流费用,则需要将物流/货件的所有费用加起来。 “费用”表中的基本数据将包含最低级别的费用,可以通过预订和/或后勤/装运汇总。

enter image description here

希望这有帮助