我在 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?