ソース リレーショナル データベースには、親 SuretyId 行を指す自己参照 ExtendsSuretyId FK 列を持つ INT IDENTITY PK SuretyId を持つ CompanySurety というテーブルがあります。
このデータをスター スキーマ モデルに取り込んで、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
);
問題は、この親子関係を適切な次元の方法でモデル化するにはどうすればよいか (実際には、次元モデルで親子階層をモデル化する方法) です。
親ファクトを表すために、すべてのディメンションとファクト列を複製することを検討しました (現時点では、階層の深さは 1 レベルのみであるため)。しかし、これは私には間違っているようです。