我必须维护一个未正确规范化的旧数据库。例如,有一个项目表已经增长(或者可能像蘑菇一样)有 5 个或更多不同的日期列,用于项目从订购到交付日期的不同里程碑。还有几个表格,每个表格都有街道地址、邮件地址或网络链接的列。
我想规范化结构,为地址、预定日期等创建表格,以及允许 1:N 关系的必要表格(每个客户的地址、每个项目的截止日期等)。
现在我完全不确定如何处理对明细表中数据的更改。例如,考虑更改客户送货地址。更改地址表中的数据是不可能的,因为有多个记录(可能在多个表中)可以引用该记录。如果没有其他行与旧记录有外键关系,则添加新地址记录可能会使旧记录成为孤立记录。
我考虑过以下方法来处理这个问题:
添加新的明细记录,并在主表的更新触发器中检查是否必须删除旧的明细记录。这将需要所有与详细表有关系的表的知识,在所有表中或在存储过程中。我不喜欢这种失去分离的感觉。它还将在活动事务中涉及更多表。
让触发器尝试删除旧的详细记录,并捕获任何错误。这只是感觉不对。
与孤立记录一起生活,并定期进行维护任务以清理所有详细信息表。
在链接到多个主表的明细表中处理数据更改的首选方法是什么?阅读此内容的任何提示?