【发布时间】:2010-11-14 18:48:24
【问题描述】:
我在OLTP中有如下表查找表
CREATE TABLE TransactionState
(
TransactionStateId INT IDENTITY (1, 1) NOT NULL,
TransactionStateName VarChar (100)
)
当这进入我的 OLAP 时,我将结构更改如下:
CREATE TABLE TransactionState
(
TransactionStateId INT NOT NULL, /* not an IDENTITY column in OLAP */
TransactionStateName VarChar (100) NOT NULL,
StartDateTime DateTime NOT NULL,
EndDateTime NULL
)
我的问题是关于 TransactionStateId 列。随着时间的推移,我的 OLAP 中可能有重复的 TransactionStateId 值,但结合 StartDateTime 和 EndDateTime,它们将是唯一的。
我看到了 Type-2 维度的示例,其中添加了 OriginalTransactionStateId 并将传入的 TransactionStateId 映射到它,加上一个新的 TransactionStateId IDENTITY 字段成为 PK 并用于连接。
CREATE TABLE TransactionState
(
TransactionStateId INT IDENTITY (1, 1) NOT NULL,
OriginalTransactionStateId INT NOT NULL, /* not an IDENTITY column in OLAP */
TransactionStateName VarChar (100) NOT NULL,
StartDateTime DateTime NOT NULL,
EndDateTime NULL
)
我应该选择 bachellorete #2 还是 bachellorete #3?
【问题讨论】:
标签: sql sql-server data-warehouse dimensions type-2-dimension