sql - Web App 建议的 MYSQL 汇总表

标签 sql mysql database-design web-applications

我有一个数据库,其中有许多具有关系的表中的数据

TABLE Cars (stock)
---------------------    
Model   colourid  Doors
----------------------
xyz       0       2
xyz       1       4

TABLE Colour

Colourid  Name
---------------------
0         Red
1         Green

我需要生成几个常规摘要,例如格式的摘要。

         | colour               |  Num Doors
Model    | red   green   blue   |  2   4   5   6
---------|----------------------|------------------
XYZ      |  1     2      3      |  4   5   3   5    <<< Numbers in stock

更新 - “汽车可以有门的排列,例如 2 门汽车或 4 门汽车。在摘要中,它显示了特定型号的每种门配置的库存汽车数量,例如有 4 辆汽车xyz 有 2 个门。请记住,这只是一个例子,汽车可能不是最好的例子,这是我当时所能想到的”

不幸的是,重新排列表格可能会使它们更适合汇总,但不适合日常操作。

我可以想出几种方法来生成这些摘要的例如/多个 SQL 查询并将表放在表示级别,SQL 级别 UNION 与多个查询,VIEWS 与多个嵌套查询或最后的 cron 作业或触发器代码以生成数据数据排列适合汇总查询和报告的汇总表。

我想知道是否有人可以给我一些指导,考虑到这些方法不是很有效,在多用户环境中变得更糟,并且可能需要定期汇总。

最佳答案

我认为您需要一个数据仓库解决方案 - 基本上只是为了报告目的构建一个新模式并定期填充这些表。

汇总表可以有多种更新机制-

  1. 计划定期执行此操作的后台作业。如果不需要最新信息,这是最好的。

  2. 使用主事务表上的触发器更新汇总表。这可能会变得有些复杂,但如果您需要最新信息,它可能是有保证的。

  3. 只要在显示报告之前绘制报告,就更新报告表格。您可以使用一些 anchor 值来确保您不会过于频繁地重新计算整个报表,只需考虑上次绘制报表后的新行或新更新的行。

唯一的问题是,每当在透视列中添加新值时,您都需要多次更改表格。

关于sql - Web App 建议的 MYSQL 汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4285651/

相关文章:

mysql - 查找表中的不一致

mysql - 为每个不同的名称显示表中最近添加的行

java - 如何使用 JOOQ store() 方法?

mysql - 我们可以使用 INTO 从头开始​​在 MySQL 中创建一个表,而不需要之前使用 CREATE 进行定义吗?

c# - 当我在c#中处理连接时,Mysql是否在6.3.6中关闭连接(Mysqlconnection)

mysql - 对现有复杂 MySQL 模式进行建模的最佳软件(或其他)解决方案

mysql - SQL Select符号||是什么意思意思是?

php - 如何在 codeigniter 中执行登录代码...?

database - 数据库实体关系表的名称,这是个好主意吗?

performance - 设计大规模的关系系统