猜猜我们在企业中有一个索赔管理应用程序。 这个应用程序有不同的表,如:
该应用允许用户创建新的声明类型(1),然后管理员可以接受此类型或删除它。此外,此应用程序允许声明创建(3),并记录它。这也记录了ip和其他参数(2)。最后,我们有一个用户表,因为只有一些用户可以创建声明(4),还有一个表存储每个用户创建的声明(5)。
所有这些表都有外键和主键,必须遵守这些键以确保应用程序的正确可用性。
现在,我们想将其加载到DWH中。必须每天截断并加载所有表,因为所有表都可以有新行,甚至每天都有已删除的行。在这种情况下,我们有两种方法可以做到这一点:
当源确保数据完整性时,DWH的正确方法是什么? DWH应该使用关系密钥检查数据完整性,还是仅存储数据以创建报告和仪表板?
如果报告和仪表板可能第一个选项有效,但如果此数据是通过加载到另一个必须与原始应用程序爆炸相同关系的应用程序的批量进程会发生什么?
答案 0 :(得分:0)
答案可能取决于您正在实施数据仓库的数据库。所以我会给你一个Oracle特定的答案。 一般来说,建议是创建PK / FK,但使用{{1}}。这具有创建定义关系的元数据的效果,但没有DW中可能不需要的索引。 PK / FK关系允许Oracle执行许多其他方式无法实现的优化。