1

ソース リレーショナル データベースには、親 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 レベルのみであるため)。しかし、これは私には間違っているようです。

4

1 に答える 1

0

テーブルのレベル数に制限があることがわかっている場合は、Level1Surety、Level2Surety、Level3Surety、Level14Surety... 必要なレベル数まで列を作成します。次に、LevelLeafSurety という列を常に作成します。これには常にリーフ レベルが含まれます。

たとえば、1 つのメンバーに 2 つのレベルしかない場合は、レベルをリーフまで「拡張」する必要があります。

それが意味をなさない場合は返信してください。また、レベル数に実際的な制限があるかどうか (4、10、100?) を教えてください。

于 2013-11-21T01:03:02.767 に答える