制作程序的最佳方法是什么?我通过JDBC将程序连接到数据库。我有2个整数类型的列。
在我的程序中,我将GUI放在表number1,number2和number1 + number2中。最好的方法是:如果我将number1 + number2作为第三列存储在数据库中,而我从数据库中读取的所有内容都放在gui上,或者读取第一列,第二列,将它们加起来然后放在GUI上?
答案 0 :(得分:4)
您基本上是在询问将计算结果存储在数据库中还是在每次需要时进行计算是否更有效。
答案是:这取决于计算的成本和存储结果的成本。
在您的示例中,将两个数字相加的开销很小,但是存储结果的开销可能并不小;例如如果您有数十亿个数字对。对于其他示例,答案将相反。
但是,这不仅仅是效率。冗余可能不好的其他原因包括:
您正在浪费数据库空间;例如sum
列可能意味着表中的实际数据最多增加50%。
冗余副本必须保持最新;例如当您更新行的number1
或number2
字段时,还必须更新sum
字段。
冗余使架构迁移更加复杂。 (很难用您的例子来说明……)
阅读“数据库规范化”;看到@Basil Bourque的答案!
答案 1 :(得分:3)
了解有关database normalization的信息。
关系数据库设计的主要目标是避免和消除冗余/重复的数据。
因此,理想情况下,您将存储两个数字,并根据需要动态计算第三个数字。您可以选择让应用程序进行该计算,也可以通过报告第三虚拟列作为查询的一部分来让数据库运行该计算。使用Postgres这样的重要数据库,您可以即时生成值,并将其与检索到的值一起返回。
但是,有时候我们会选择打破规则并对表设计的某些方面进行非规范化。几乎总是这种动机是一些可衡量的,已证明的性能问题。但是,作为初学者,请努力使您的设计规范化。