【问题标题】:Multiple rows or multiple columns多行或多列
【发布时间】:2012-01-18 18:15:08
【问题描述】:

对于发票,我需要存储多个金额。为了简化维护,我决定设计一张表来存储金额类型,第二张表中存储金额和金额类型。收据和发出的发票有不同的金额类型,法律禁止。国外发票也有不同的金额。

所以,我会:

table invoice_amount_types(id, type_desc)
table invoice_amounts(id, invoice_id, amount_types_id, amount)

但是,在这种情况下,我会有 aprox。每张发票 10 条记录。我不确定数据透视函数对查询性能的影响。

最好设计几个这样的表(invoice 和 invoice_amounts_... 表将是一对一的关系)

table invoice_amounts_incoming(invoice_id, amount_full, amount_0, amount_10, amount_22, amount_23, pre_vat10, pre_vat22, pre_vat23)
table invoice_amounts_outgoing(invoice_id, amount_full, no_vat, no_vat_export, no_vat_transport, no_vat_other, amount_10, amount_22, amount_23, vat10, vat22, vat23)

【问题讨论】:

    标签: sql database-design


    【解决方案1】:

    第一种方式(多表)最初需要更多的工作来正确设置,但这是一个更好的解决方案。从长远来看,它会为您节省时间和痛苦。

    【讨论】:

    • 今天,我可以确认第一种方式要好得多(我很高兴我在 6 年前就以这种方式做出了决定)
    【解决方案2】:

    我会保持它的规范化,否则你最终会越来越多地添加多个列,这简直就是一场灾难!想象一下,今天您有一个包含 5 列的表,并且您有几十个引用所有五列的过程。您决定需要再添加 5 列,这在设计方面很简单,但您的所有过程和函数都存在问题,因为您从未引用这 5 列新列。

    我投票支持标准化数据库!你最终会让你自己和任何未来可能与你的系统交互的开发者变得更容易。

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多