Database design 数据仓库设计问题

Database design 数据仓库设计问题,database-design,data-warehouse,olap,Database Design,Data Warehouse,Olap,我正在开发一个数据仓库,遇到了一个我不确定如何解决的问题。当前架构定义如下: DimInstructor使用guid/uuid作为主键或列的组合 有多种方法可以处理此问题。您可以使用生效日期/非活动日期、序列号或版本号来区分具有相同InstructorID的记录 捕获所有相关细节的DIM如下所示 create table DIM_INSTRUCTOR( instr_guid number, --populated through a sequence -----Composite p

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


DimInstructor使用guid/uuid作为主键或列的组合

有多种方法可以处理此问题。您可以使用生效日期/非活动日期、序列号或版本号来区分具有相同InstructorID的记录

捕获所有相关细节的DIM如下所示

create table DIM_INSTRUCTOR(
  instr_guid number, --populated through a sequence     -----Composite pk-Part1
  istr_oid   number, --direct id from the OLTP system   -----cmposite  pk-part2
  instr_name number,
  other_attr varchar2(25),
  eff_date   date,
  expiration_date date
);
instr_guid直接从序列生成,独立于OLTP系统

这将使您能够捕获给定讲师的所有详细信息。 您可以仅使用instr_guid作为事实表的外键,但同时包含这两个(instr_guid、instr_guid)将增加查询的难度。。这是数据仓库的目标之一

有用链接:


您在这里描述的通常称为类型2维度。Kimball数据仓库的书中有关于类型2维度的完整章节,以及类型--do read的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。

您是指Instructor还是Wid?此值将是唯一的,因为它是标识列。但是,如果讲师详细信息发生更改,则该讲师将拥有多个讲师或WID。示例-讲师ordwid当前为1,然后讲师将她的头衔从Miss更改为Mrs。我们现在的讲师ordwid为1和2。1现在已过时,2是当前版本。参考讲师OrdWid 1的课程现在过时了,这些课程会发生什么变化?谢谢。如何从另一个维度表中引用键?因此,DimLessons表包含特定讲师的所有课程。lessons表以相同的方式运行,使用类型2。维度表(通常)不应该相互引用。它们都是独立的实体,引用这些表的是事实表。据我所知,您的场景将有一个事实级别的班级注册。每个班级的注册都将成为事实表中的一条记录。学生、教师、班级将包含相应的属性。注册事实将包含这些表中的键以及所有其他细节,如注册日期等。我想我理解。因此,如果我想基于讲师、学生、课程和课程预订创建模式,每个dim表(讲师、学生、课程)将相互独立,并通过事实表链接?这是有道理的,但如果生成的报告显示了一个没有人参加的讲师的课程,该怎么办?如果事实表中没有记录,因为没有人参加,我如何将讲师链接到课程?谢谢Damir。DIMLESSION表格的设计类似于dimInstructor表格。示例报告可能基于课程名称更改后课程预订量是否增加或减少?我认为你解释的方法似乎很有道理。