|
|
1
6
这取决于数据库的使用方式。 理想的解决方案是在工作项行中保留单独的项。这样可以避免重复数据。例如,在添加或更新工作项时,必须同时更新工作项和总计。 使用适当的索引,这样的查询通常会执行:
如果 |
|
|
2
3
如果您遵循标准化规则,您将忽略计算值,例如总计,并动态生成它们。
就存储空间而言,现在在大多数平台上通常都不是问题,因此存储额外的数据也不是问题。有时,当以这种方式进行反规范化时,您可以提高性能或简化代码。同样,您的决策也会影响可维护性,或者增加复杂性。 在您的示例中,如果根据订单存储总计,则每次修改项目时,都会命中workitem表,然后还必须更新订单表。这似乎没有什么好处,所以我不会走这条路。。。但正如我所说,在某些情况下,您可能会明智地选择存储数据,而不是动态派生数据。 |
|
|
3
2
正如您所说,性能和用法是正确描述的关键。现在正确的定义可能不是将来。 一个要求可能是列出所有订单只是显示总价值。如果不存储该值,则必须为每个订单聚合订单项才能获得合计。如果将此值与order表一起存储,则不需要在表中包含order项。
|
|
|
4
2
除非性能有问题,否则我不会将总数存储在您的数据库中。 而是根据报告或显示的需要动态计算。 |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |