【发布时间】:2026-01-03 02:25:01
【问题描述】:
猜想我们在企业中有一个索赔管理应用程序。 这个应用程序有不同的表格,例如:
- 索赔类型
- 索赔日志
- 索赔表
- 用户表
- 用户声明关系表
该应用程序允许用户创建新的声明类型 (1),然后管理员可以承认或删除此类型。此外,此应用程序允许创建声明 (3) 并记录它。这也记录了 ip 和其他参数 (2)。最后,我们有一个 user 表,因为只有一些用户可以创建声明 (4),还有一个存储每个用户创建的声明的表 (5)。
所有这些表都有外键和主键,为了应用程序的正确可用性,必须遵守这些外键和主键。
现在,我们要将其加载到 DWH 中。所有表必须每天截断和加载,因为所有表每天都可以有新行,甚至删除行。在这种情况下,我们有两种方法可以做到这一点:
- 加载没有 FK 和 PK 的每个表。然后 DWH 就像一个备份,因为在原始表中检查了数据完整性。
- 使用 PK 和 FK 加载表。 DWH 也检查数据完整性,但是 ETL 过程必须擦除 FK,然后可以截断表以最终重建 FK 并再次加载表。我不知道它是否会给数据库带来任何复杂性。
当源确保数据完整性时,DWH 的正确方法是什么? DWH 应该使用关系键检查数据完整性,还是只存储数据以创建报告和仪表板?
在报告和仪表板的情况下,第一个选项可能是有效的,但是如果这些数据是通过一个批量进程加载到另一个必须分解与原始应用程序相同的关系的应用程序,会发生什么?
【问题讨论】: