Postgresql 发票系统规范化\非规范化

Postgresql 发票系统规范化\非规范化,postgresql,Postgresql,我们有两张桌子: 发票 和发票项目 每张发票有多个项目 所以我的问题是: 如果我们将发票小计(每个项目的价格)和总计(小计+税费)存储在发票表中,并通过简单选择获取该字段,性能、存储空间和内存使用将如何变化,或者将每个项目的价格s相加,得到小计,与税相加,通过连接两个表得到总额? 就性能而言,在读取时将这些字段存储为发票表中的字段要好得多。但是,每次发生更改这些值的事件时,都需要更新这些值,这会降低写入速度 存储使用 当然,为每行存储两个值要比不存储它们占用更多的空间 内存使用 如果您存储了

我们有两张桌子:

发票

和发票项目

每张发票有多个项目

所以我的问题是: 如果我们将发票小计(每个项目的价格)总计(小计+税费)存储在发票表中,并通过简单选择获取该字段,性能、存储空间和内存使用将如何变化,或者将每个项目的价格s相加,得到小计,与相加,通过连接两个表得到总额

就性能而言,在读取时将这些字段存储为发票表中的字段要好得多。但是,每次发生更改这些值的事件时,都需要更新这些值,这会降低写入速度

存储使用 当然,为每行存储两个值要比不存储它们占用更多的空间

内存使用 如果您存储了这些值,内存使用情况会更好,因为这样您就不必同时计算多个总计并在后台加载需要求和的值

总体上
这要看情况而定。有关详细信息,请参见此处原因:鉴于发票有多个项目,您计划如何将每个项目的小计存储在
invoice
表中?