【发布时间】:2011-09-21 11:32:42
【问题描述】:
如果我有 table1、table2、table3..table50 存储有关产品的不同信息
什么是跟踪增量更改的有效方法,如果我想返回并提取特定产品在给定日期的外观,它将非常快速和准确。 我希望以一种可以快速检索并减少过多冗余的方式跟踪更改。
【问题讨论】:
标签: oracle database-design data-modeling ado.net-entity-data-model
如果我有 table1、table2、table3..table50 存储有关产品的不同信息
什么是跟踪增量更改的有效方法,如果我想返回并提取特定产品在给定日期的外观,它将非常快速和准确。 我希望以一种可以快速检索并减少过多冗余的方式跟踪更改。
【问题讨论】:
标签: oracle database-design data-modeling ado.net-entity-data-model
1.如果您使用的是 Oracle 11g,Oracle 闪回技术是可以让您执行此操作的功能。 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
【讨论】: