数据仓库设计问题

     2023-03-25     149

关键词:

【中文标题】数据仓库设计问题【英文标题】:Data Warehousing Design Question 【发布时间】:2010-08-12 13:06:05 【问题描述】:

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

DimInstructor

我想实现一个场景,如果教师的详细信息在我的 OLTP 数据库中发生更改,我想出于历史报告的原因在 DimInstructor 表中添加一条新记录。

现在,我想创建一个名为 DimLesson 的课程维度表。在 DimLesson 中,我想创建对讲师的引用。

DimInstructor 表包含:

InstructorDWID

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

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

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

您在这里描述的通常称为类型 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。

【讨论】:

谢谢达米尔。 dimLesson 表的设计类似于 dimInstructor 表。示例报告可能基于课程更改名称后课程预订增加还是减少?我认为您解释的方法似乎最有意义。【参考方案2】:

保罗,

您可以通过多种方式处理此问题。您可以使用生效日期/非活动日期、序列号或版本号来区分具有相同 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) 会增加查询的便利性.. 这是 Datawarehousing 的目标之一。

有用的链接:

http://en.wikipedia.org/wiki/Surrogate_key http://en.wikipedia.org/wiki/Slowly_changing_dimension#Type_2

【讨论】:

谢谢。我将如何从另一个维度表中引用键?因此 DimLessons 表包含特定讲师的所有课程。课程表的功能相同,使用类型 2。 维度表(通常)不应该相互引用。它们都是独立的实体,引用这些表的是事实表。据我了解,您的方案将在事实级别进行课程注册。每个班级注册都将是事实表中的一条记录。 Students_dim、instructors_dim、classes_dim 将包含相应的属性。注册事实将包含来自这些表中的每一个的键以及所有其他详细信息,例如注册日期等。 我想我明白了。因此,如果我想基于讲师、学生、课程和课程预订创建架构,每个暗表(讲师、学生、课程)将相互独立并通过事实表链接?这是有道理的,但是如果生成的报告显示了一个没有人参加过的讲师的课程怎么办?如果事实表中没有记录,因为没有人参加,我如何将讲师链接到课程?【参考方案3】:

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

【讨论】:

您的意思是 InstructorDWID?该值将是唯一的,因为它是一个标识列。但是,如果讲师详细信息发生更改,该讲师将拥有多个 InstructorDWID。示例 - InstructorDWID 当前为 1,然后讲师将她的头衔从 Miss 更改为 Mrs。我们现在的 InstructorDWID 为 1 和 2。1 现在已过时,2 是当前的。现在引用 InstructorDWID 1 的课程已经过时,会发生什么情况?

数据仓库设计

】数据仓库设计【英文标题】:Datawarehousedesign【发布时间】:2021-12-0810:30:23【问题描述】:我将设计一个数据仓库(虽然这不是一个简单的过程)。我想知道整个ETL过程,数据仓库中的数据将如何提取/转换到数据集市?Datawareho... 查看详情

设计用于库存管理的数据仓库

】设计用于库存管理的数据仓库【英文标题】:Designingadatawarehouseforinventorymanagement【发布时间】:2017-04-1821:33:13【问题描述】:我有一个大学作业要求为产品库存管理建立一个数据仓库,它可以帮助库存管理了解现有价值并使用... 查看详情

BI:事实表设计/数据仓库建模

】BI:事实表设计/数据仓库建模【英文标题】:BI:FactTableDesign/Datawarehousemodelling【发布时间】:2014-08-1307:48:31【问题描述】:由于事实表,我在设计数据仓库和ETL流程时遇到了一些问题。它包含超过1亿行的2年会计数据。维度通... 查看详情

数据仓库设计:如何设计交货日期变化的事实和维度表

】数据仓库设计:如何设计交货日期变化的事实和维度表【英文标题】:Datawarehousedesign:howtodesignfactanddimensiontablewithchangeddeliverydate【发布时间】:2016-10-1421:05:58【问题描述】:我正在尝试创建一个采购订单信息数据仓库,但我面... 查看详情

数据库和数据仓库的区别

简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗... 查看详情

用户数据的数据仓库 - 设计 Q

】用户数据的数据仓库-设计Q【英文标题】:Datawarehouseforuserdata-designQ【发布时间】:2011-02-0917:33:23【问题描述】:如何最好地存储用户数据与日期/时间维度?用例是我试图每天每小时存储用户操作。例如分享数、点赞数、好友... 查看详情

数据仓库设计中星型模式的衡量标准是啥?

】数据仓库设计中星型模式的衡量标准是啥?【英文标题】:Whatisexactlyameasureinstarschemaindatawarehousedesign?数据仓库设计中星型模式的衡量标准是什么?【发布时间】:2011-09-3021:47:07【问题描述】:星型架构由维度表和事实表组成... 查看详情

数据仓库设计,多维还是一维带属性?

】数据仓库设计,多维还是一维带属性?【英文标题】:Datawarehousedesign,multipledimensionsoronedimensionwithattributes?【发布时间】:2013-05-2114:49:24【问题描述】:在数据仓库上工作,正在寻找有关具有多个维度与具有属性的大维度的建... 查看详情

OLTP 应用读取 数据仓库 数据设计

】OLTP应用读取数据仓库数据设计【英文标题】:OLTPApplicationReadingDataWarehouseDataDesign【发布时间】:2012-02-0618:43:41【问题描述】:我们刚刚开始组建一个数据仓库,它将对我们的报告要求有用,将不同的数据源整合在一起。回顾... 查看详情

识别数据仓库设计中的事实表

】识别数据仓库设计中的事实表【英文标题】:Identifyingthefacttableindatawarehousedesign【发布时间】:2015-07-1421:21:10【问题描述】:我正在尝试使用包含有关帮助台服务调用信息的Excel表中的星型模式设计我的第一个数据集市,该表... 查看详情

BigQuery 数据仓库设计?

】BigQuery数据仓库设计?【英文标题】:BigQueryDatawarehousedesign?【发布时间】:2019-01-2111:45:03【问题描述】:在Datawarehouse的典型HDFS环境中,我看到了一些不同的阶段,在这些阶段中,数据被分阶段和转换,如下所示。我正在尝试... 查看详情

事实表的数据仓库设计

】事实表的数据仓库设计【英文标题】:DataWarehouseDesignofFactTables【发布时间】:2016-08-0522:27:00【问题描述】:我对数据仓库设计还很陌生,并且正在努力研究如何设计给定非常相似但又有些不同的指标的事实表。假设您正在评... 查看详情

设计数据仓库/星型模式 - 选择事实

】设计数据仓库/星型模式-选择事实【英文标题】:DesigningaDataWarehouse/StarSchema-Choosingfacts【发布时间】:2015-03-0415:35:20【问题描述】:考虑一个众筹系统,世界上任何人都可以投资一个项目。我已经有了规范化的数据库设计,现... 查看详情

为数据仓库设计一个关系船

】为数据仓库设计一个关系船【英文标题】:DesignaRelationShipsForDataWarehouse【发布时间】:2019-10-2619:42:33【问题描述】:我打算为Northwind数据库设计一个DataWarehouse,但我的客户、产品和员工表有两个公共字段,称为国家和城市。... 查看详情

数仓设计

数据仓库设计方案一.概述 数据仓库的特征在于面向主题、集成性、稳定性和时变性,用于支持管理决策。数据仓库的存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供统一的、规范的数据出口。数据仓库在... 查看详情

无事实事实表的数据仓库维度设计

】无事实事实表的数据仓库维度设计【英文标题】:DataWarehouseDimensionDesignforFactlessFactTable【发布时间】:2013-06-2512:16:20【问题描述】:我有一个关于我要开始的新Cube的问题。多维数据集与风险管理流程相关。事实表不会包含任... 查看详情

数据仓库事实表的设计

】数据仓库事实表的设计【英文标题】:designoffacttable(s)fordatawarehouse【发布时间】:2009-11-1921:04:01【问题描述】:您将如何在数据仓库中对此进行建模:有些自治市是地理区域,存在于地理层次结构中,例如省(即州,例如明尼... 查看详情

用于报告和分析工具的数据库仓库设计

】用于报告和分析工具的数据库仓库设计【英文标题】:Databasewarehousedesignforreportingandanalyticaltools【发布时间】:2017-08-2115:01:42【问题描述】:我是OLAP数据库设计的新手,我有一个带有以下表格的mysql数据库:-countries(id,name);occup... 查看详情