INFORMIX-SE与ISQL 7.3:
我有贷款,购买和放大的单独表格销售交易。每个表行都是 通过以下方式加入各自的客户行:
customer.id [serial] = loan.foreign_id [integer]; = purchase.foreign_id [整数]; = sale.foreign_id [整数];
我想将这三个表合并到一个名为“transaction”的表中, 其中一列“transaction.trx_type”[char(1)] {L = Loan,P = Purchase,S = Sale}标识 交易类型。这是一个好主意还是将它们保存在单独的表中更好? 存储空间不是一个问题,我认为这将更容易编程&用户=明智的 将所有类型的交易都放在一个表格下。
答案 0 :(得分:2)
是的,根据我的经验,这是一个更好的解决方案。 大多数程序更注重报告而不是面向输入。在这种情况下,报告生成速度会急剧增加。
答案 1 :(得分:2)
这是一个很好的解决方案。 您还可以创建三个视图,以便基本访问不会发生变化。
顺便说一句:这是解决对象关系阻抗不匹配的典型方法。
您通常可以将贷款,购买和销售概括为:MoneyTransaction。 要获得所有信息,您可以像现在一样进行一些连接,或者像现在一样对整个系统进行简并化。
好方法。 我可以推荐阅读 http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
答案 2 :(得分:0)
出于某种原因,我无法对您的回复发表评论,因此我将在此答案空间发表评论。 @Patrick Sauerl>创建单独的视图不是必需的,甚至是不可取的。这是Pawnshop应用程序的情况,例如,商品可以最初典当,并且客户可以通过将其出售给典当行来选择转换典当,然后典当行可以将其出售给另一个顾客,因此类型开始为类型'L'(贷款),转换为'P'(购买),转换为'我'(库存),然后转换为'S'(销售),根据一定的规则,有许多不同的可能性。根据tran类型,我会尽可能重复使用相同的列,例如:对于贷款,transaction.main_amount用于Principal;对于购买,transaction.main_amount用于购买价格;出售,transaction.main_amount用于销售价格。我存储了同一商品的所有先前交易的历史记录,因为它通过不同的交易类型变形。