Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design SCD(缓慢改变维度)数据库模型示例。这一个有意义并且表现良好?_Database Design_Data Warehouse_Transactional_Audit Trail_Bi Temporal - Fatal编程技术网

Database design SCD(缓慢改变维度)数据库模型示例。这一个有意义并且表现良好?

Database design SCD(缓慢改变维度)数据库模型示例。这一个有意义并且表现良好?,database-design,data-warehouse,transactional,audit-trail,bi-temporal,Database Design,Data Warehouse,Transactional,Audit Trail,Bi Temporal,在customer loopback.io项目中,我需要跟踪/审核并提供撤消/重做功能,我发现最好的方法是SCD方法 我在这里发现了一些东西:然后我创建了这个模型: 有没有更好的正式模式 我对SCD真的很陌生,希望有更多经验的人能看到它。-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表样式被正确的ANSIJOIN语法所取代,它的使用是不鼓励的这。。。看起来或听起来都不像数据仓库。SCD是一种特定类型的表(维度/数据加载过程(ETL)),存在于特定类型的数据库(数据仓库)中。如

在customer loopback.io项目中,我需要跟踪/审核并提供撤消/重做功能,我发现最好的方法是SCD方法

我在这里发现了一些东西:然后我创建了这个模型:

有没有更好的正式模式


我对SCD真的很陌生,希望有更多经验的人能看到它。

-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表样式被正确的ANSI
JOIN
语法所取代,它的使用是不鼓励的这。。。看起来或听起来都不像数据仓库。SCD是一种特定类型的表(维度/数据加载过程(ETL)),存在于特定类型的数据库(数据仓库)中。如果您不使用数据仓库,您可能希望在实现上与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));
-------------------------------------------------