我正在开发一个带有 Oracle 后端的企业应用程序。我现在正在设计数据库架构的核心部分,我对此有一些疑问。
- 首先也是最重要的是,我的大多数表都需要保留旧数据。例如
考虑一个包含字段的表
合同编号、合同名称、合同人员、合同邮箱
我有类似的记录
12, xxx, yyy, xxx@zzz.ccc
有人将其修改为
12, xxx, zzz, xxx@zzz.ccc
在任何时候,我都需要显示新记录,同时仍然拥有旧记录的副本。
所以我想的是放置旧数据的重复记录并更新已更改的字段并有一个标志来跟踪活动记录,例如“活动”为 1。
缺点是这会在表中产生冗余,并且看起来是一个糟糕的设计。但是任何其他模型似乎都不必要地复杂,这对我来说似乎更干净。此外,我也没有看到任何具有重复记录的性能问题。所以请让我知道这是否可以,或者我在这里遗漏了什么。
有时存在一对多关系,我的假设是有一个映射表,我通过在每个记录中重复主 ID 和更改子 ID 来映射单个记录中的多个实体。这是正确的方法还是有更好的方法。
有没有关于数据库最佳实践的书。
谢谢。
我处理的数据库是两节点 RAC 集群上的 Oracle 11g