我们有一种情况,我们需要将 2 个表之间的关系从m:1更改为m:n。
因此,我们需要在这两个表之间创建一个交叉引用表。
将所有现有数据从“子”表迁移到交叉引用表后,删除子表中的原始外键列会不会是一个坏主意?
如果我们把它留在那里,我们基本上有技术债务。但我不是 dba,也不太了解从表中删除列的含义。(我知道这是可能的,但这是个坏主意吗?我的数据库会因此恨我吗?)
谢谢
我们有一种情况,我们需要将 2 个表之间的关系从m:1更改为m:n。
因此,我们需要在这两个表之间创建一个交叉引用表。
将所有现有数据从“子”表迁移到交叉引用表后,删除子表中的原始外键列会不会是一个坏主意?
如果我们把它留在那里,我们基本上有技术债务。但我不是 dba,也不太了解从表中删除列的含义。(我知道这是可能的,但这是个坏主意吗?我的数据库会因此恨我吗?)
谢谢
在不了解您的表格的所有结构的情况下,我的建议有限。但是,不,如果您在以下情况下删除列(绝不是详尽无遗的),您的数据库不会绘制您的死亡:
您的新设计具有二维表和事实表
设计实际实现了标准化来实现这一点
我的建议是设计团队应该知道在数据库中执行规则是最好的,除非它会损害性能。不过,我不知道您的 DDL 语句的大小或量化来完全回答这个问题。
但请放心,这对您的系统来说应该是一个积极的改变,因为现在 SQL Server 将不必通过所有额外的数据来检索真正重要的内容。
我不能代表你的数据库,但我会恨你:-)
旧列将包含更改后的冗余数据。如果旧列和新外部参照表的维护不一致,这可能会导致数据冲突。考虑不熟悉技术债务的开发人员可能会在逻辑上破坏数据库。
我很难想出一个不应该删除遗留列和关系的原因。这也将确保所有相关代码都已正确更改。