在源关系数据库中,有一个名为CompanySurety的表,其中INT IDENTITY PK SuretyId具有指向父SuretyId行的自引用ExtendsSuretyId FK列。
将这些数据带入星型模式模型,我设计了CompanySurety事实表(到目前为止),如下所示:
CREATE TABLE fact_company_surety
(
SuretyCompanyDimId INT NOT NULL,
SuretyCoversCompanyAccountDimId INT NOT NULL,
SuretyReplenishPaymentCompanyAccountDimId INT NOT NULL,
-- ExtendsSuretyId -- TODO: ?????
SuretyAmountChangeDateDimId int NOT NULL,
SuretyEffectiveFromDateDimId int NOT NULL,
SuretyEffectiveThruDateDimId int NOT NULL,
SuretyExcludeCalcDateDimId int NOT NULL,
SuretyHoldingCompanyDimId INT NOT NULL,
SuretyLastRRQDateDimId int NOT NULL,
SuretyMethodDimId INT NOT NULL,
SuretyReplenishmentTypeDimId INT NOT NULL,
SuretyTypeDimId INT NOT NULL,
SuretyAccountNumberDD nvarchar(100) NOT NULL,
SuretyAmount money NULL,
SuretyBalance money NULL,
SuretyDeletedFlag bit NOT NULL,
SuretyOverrideThresholdPercent decimal(5, 2) NULL
);
问题是,如何以适当的维度方式建模这种父子关系(实际上,如何在维模型中建模任何父子层次结构)?
我考虑过复制所有维度和事实列来表示父事实(因为,目前,层次结构只有一层深度)。但这对我来说似乎不对。
答案 0 :(得分:0)
如果您知道表格上的级别数量有限制,那么您可以创建列Level1Surety,Level2Surety,Level3Surety,Level14Surety ......直到您需要的级别数。然后我总是创建一个名为LevelLeafSurety的列。这始终包含叶级别。
如果一个成员只有2个等级,你需要将等级“扩展”到叶子上。
如果没有意义,请回复,并给我一些关于水平数量是否有实际限制的指示(4,10,100?)