如果我有表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