数据库设计 – 数据库设计:如何处理“归档”问题?
我很确定很多应用程序,关键应用程序,银行等每天都会这样做.
所有这一切背后的想法是: >所有行都必须有历史记录 等等. 这就是我想要做的,我将解释我面临的问题. 我的所有表都有这些列: > id 以下是CRUD操作的想法: > create =插入id_origin = id的新行,创建日期=现在,有效期的开始日期=现在,有效期的结束日期= null(=表示它是当前的活动记录) > read =读取结束日期有效的所有记录== null > delete =更新“当前”记录的有效期结束日期= null,结束日期为有效期=现在 所以这是我的问题:与多对多关联.让我们举个值的例子: >表A(id = 1,id_origin = 1,start = now,end = null) 现在我想更新表A,记录id = 1 >我用end = now标记记录id = 1 并且…我有另一个问题:关系A_B:我应该将(id_A = 1,id_B = 48)标记为过时或不过(A – id = 1已过时,但不是B – 48)? 怎么处理这个? 我必须大规模地设计它:产品,合作伙伴等. 你对此有什么经历?你会怎么做(你过得怎么样)? – 我找到了this very interesting article,但它没有正确处理“cascasding obsolescence”(=我实际上问的是什么) 解决方法我不清楚这些要求是用于审计目的还是仅仅是简单的历史参考,例如CRM和购物车.无论哪种方式,考虑为每个需要的主要区域都有一个main和main_archive表. “Main”将只有当前/活动条目,而“main_archive”将包含所有进入main的所有内容的副本.插入/更新到main_archive可以是插入/更新到main的触发器.然后,针对main_archive的删除可以在更长的时间段内运行. 对于诸如Cust X购买产品Y之类的参考问题,解决您对cust_archive的参考问题的最简单方法 – > product_archive永远不会从product_archive中删除条目.一般来说,该表中的流失率应该低得多,所以尺寸不应该太大. HTH. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |