gpt4 book ai didi

database-design - 数据仓库设计问题

转载 作者:行者123 更新时间:2023-12-04 07:14:33 25 4
gpt4 key购买 nike

我正在开发一个数据仓库,遇到了一个我不确定如何解决的问题。当前架构定义如下:

DimInstructor <- 教师维度表DimStudent <- 学生维度表

我想实现一个场景,如果我的 OLTP 数据库中讲师的详细信息发生变化,我想在 DimInstructor 表中添加一条新记录以用于历史报告。

现在,我想创建一个名为 DimLesson 的类(class)维度表。在 DimLesson 中,我想创建对讲师的引用。

DimInstructor 表包含:

InstructorDWID <- 输入 DW 时的身份字段InstructorID <- 来自 OLTP 数据库的讲师 ID

现在,我不能将 InstructorID 设为主键,因为它不能保证是唯一的(如果讲师更改了他们的名字,DW 中将有 2 条具有相同 InstructorID 值的记录)。

所以我的问题是,如何引用 DimLesson 中的讲师?我是否使用 InstructorDWID?如果是这样,如果我在 DimInstructor 中有 2 个讲师条目,当我想查看特定讲师的所有类(class)时,查询会变得更加复杂。

如有任何帮助,我们将不胜感激!

最佳答案

您在这里描述的通常称为类型 2 维度。 Kimball 数据仓库书籍包含有关类型 2 维度和 ETL 的整个部分——请阅读。

首先要明白主键和业务键的区别。主键唯一标识表中的一行,而业务键唯一标识表描述的实体,如讲师。例如,如果讲师改名,dimInstructor 表可能类似于:

InstructorKey  InstructorBusinessKey  FirstName LastName  row_ValidFrom row_ValidTo   row_Status
1234 jane_doe_7211 Jane Doe 2000-03-11 2010-08-12 expired
7268 jane_doe_7211 Jane Smith 2010-08-12 3000-01-01 current

现在,假定 dimLesson 是适合您的业务模型的设计(而不是拥有某种事实),dimLesson 将有一个名为 InstructorKey 的列。在 ETL 过程中,将新行 (7258) 传送到 dimInstructor 表时,将 dimLesson 中对第 1234 行的所有引用替换为 7268。

关于database-design - 数据仓库设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com