Пример модели базы данных SCD (медленно меняющееся измерение). Это имеет смысл и хорошо работает?

В клиентском проекте loopback.io мне нужно отслеживать / проверять и предоставлять возможность отмены / повторения, лучше всего я нашел метод SCD.

Я нашел кое-что здесь: https://en.wikipedia.org/wiki/Slowly_changing_dimension затем я создал эту модель:

Модель SCD

-------------------------------------------------
CREATE VIEW vw_trackedinvoice AS
    SELECT 
        ivp.id AS id,
        ivp.code AS code,
        ivp.idCustomer AS idCustomer,
        trk.id AS trkid,
        trk.idSession AS idSession,
        trk.isCurrent AS isCurrent,
        trk.tableName AS tableName,
        trk.tableCode AS tableCode,
        trk.tableId AS tableId,
        trk.dtIni AS dtIni,
        trk.dtEnd AS dtEnd,
        trk.dtDel AS dtDel
    FROM
        (invoiceversionprovider ivp
        JOIN scdtrack trk ON ((ivp.idscd = trk.id)))
    WHERE
        (trk.tableName = 'invoiceversionprovider');
-------------------------------------------------
CREATE VIEW vw_trackedinvoicedetail AS
    SELECT 
        idp.id AS id,
        idp.code AS code,
        idp.codeInvoice AS codeInvoice,
        idp.idProduct AS idProduct,
        idp.qtd AS qtd,
        trk.id AS trkid,
        trk.idSession AS idSession,
        trk.isCurrent AS isCurrent,
        trk.tableName AS tableName,
        trk.tableCode AS tableCode,
        trk.tableId AS tableId,
        trk.dtIni AS dtIni,
        trk.dtEnd AS dtEnd,
        trk.dtDel AS dtDel
    FROM
        (invoicedetailversionprovider idp
        JOIN scdtrack trk ON ((idp.idscd = trk.id)))
    WHERE
        (trk.tableName = 'invoicedetailversionprovider');
-------------------------------------------------
CREATE VIEW vw_currentinvoice AS
    SELECT 
        trki.id AS id,
        trki.code AS code,
        trki.idCustomer AS idCustomer,
        trki.trkid AS trkid
    FROM
        vw_trackedinvoice trki
    WHERE
        ((trki.isCurrent = 1)
            AND ISNULL(trki.dtDel));
-------------------------------------------------
CREATE VIEW vw_currentinvoicedetail AS
    SELECT 
        trkid.id AS id,
        trkid.code AS code,
        trkid.codeInvoice AS codeInvoice,
        trkid.idProduct AS idProduct,
        trkid.qtd AS qtd,
        trkid.trkid AS trkid
    FROM
        vw_trackedinvoicedetail trkid
    WHERE
        ((trkid.isCurrent = 1)
            AND ISNULL(trkid.dtDel));
-------------------------------------------------

Есть какой-то лучший формальный шаблон для этого?

Я действительно новичок в SCD, надеюсь, кто-то с большим опытом может увидеть это.

0 ответов

Другие вопросы по тегам