多行或多列

时间:2012-01-18 18:15:08

标签: sql database-design

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

所以,我会:

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

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

设计一些这样的表是否更好(发票和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)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我投票支持规范数据库!您最终会使自己以及将来可能与您的系统交互的任何未来开发人员变得更容易。