【发布时间】:2017-09-04 11:10:09
【问题描述】:
对数据建模相当陌生,有以下场景,不确定如何进行设计
我有一个源表,其中包含自然键和称为 MED_key 的代理键的组合,下面是一个简单的示例:
--Table_Medications
MED_Key | Medication Name | Medication Desc | Class Lvl One | Class Lvl Two
-----------------------------------------------------------------------------
759456123 | Med_ABC1 | Medication for ABC 1 - Long Descriptive Text Here | Calcium | Calcium Type A
781456113 | Med_ABC1 | Medication for ABC 1 - Long Descriptive Text Here | Calcium | Calcium Type B
689476143 | Med_ABC1 | Medication for ABC 1 - Long Descriptive Text Here| Calcium Extra | Calcium Type C
709456129 | Med_ABC1 | Medication for ABC 1 - Long Descriptive Text Here| Calcium Extra | Calcium Type D
989476125 | Med_ABC2 | Medication for ABC 2 - Long Descriptive Text Here| Vit A | Vit A
009456199 | Med_ABC3 | Medication for ABC 3 - Long Descriptive Text Here| Aspirin | Aspirin
--Table_Medication_Prescribed
Trx No | Qty | Amt | MED_Key
-----------------------------
1 | 5 | 23.45 | 781456113
2 | 3 | 5.10 | 989476125
3 | 9 | 87.12 | 759456123
Table_Medication_Prescribed 将是 FACT 表。
Table_Medications 将是 DIM 表。在使用 Dimension Key 填充 FACT 表时,我觉得当我使用四个 VARCHAR 字段(名称、描述类 Lvl 1/2)进行连接时,处理时间可能会很慢。我不确定将 MED_Key 用作 DIM 表中的“自然键”,是否有任何不这样做的规则? 任何人都可以提供最好的解决方法吗?
【问题讨论】:
-
在典型的 kimball 星型模式数据仓库中,您永远不会为了报告目的加入多个键。您只加入内部数据仓库代理键。从源系统的内部角度来看,您的源系统代理键是代理键,但从数据仓库的外部(全局)角度来看,它只是另一个源系统键。你总是需要生成你的数据仓库内部代理键,因为源系统键(无论你想怎么称呼它)不能保证全局唯一,它不会跟踪 SCD 的
标签: data-modeling data-warehouse