数据库建模:查找给定日期和时间中的数据外观



如果我有表1、表2、表3.表50,它存储了关于产品的不同信息

追踪增量变化的有效方法是什么?如果我想追溯特定产品在给定日期的外观,它会非常快速和准确。我希望以一种可以快速检索的方式跟踪更改,同时减少过多的冗余。

1.如果您使用的是Oracle 11g,Oracle Flashback技术就是实现这一点的功能。http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#BJFGJHCJ.

2.在较旧的版本中,可以使用DBMS_WM包并为所需的表启用版本控制。但是,对可以启用版本控制的表的类型有一些限制。http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96628/long_ref.htm#80312

3.到目前为止,我看到的其他实现都有自己版本的DBMS_WM的一些过程。基本上,有一个像…这样的结构。。

SQL> desc scott_emp;
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                     NOT NULL VARCHAR2(10)
 JOB                                       NOT NULL VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                  NOT NULL DATE
 SAL                                       NOT NULL NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                    NOT NULL NUMBER(2)
 EFF_DATE                                           DATE
 END_DATE                                           DATE

最后两列用于查看记录在数据库中"逻辑活动"的时间段。在

  • 每次插入/更新都转换为"使当前行过期(更新)+插入新行"
  • 每次删除都是转换为"过期当前行"

如果你只想跟踪某些列的更改,最后一种方法可能会解决你的目的(例如,假设你只关心部门和工资的更改)。

不要选择这样的型号。(Do not将每列更改存储为单独的行)http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1769392200346820632

最新更新