我在一份新工作中出现并发现了急需帮助的数据库。它有很多问题,包括
int
并在代码中管理关系来伪造的。 NULL
,这不是真的 Varchar
s,它存储连接的关系信息字符串 人们可能会争辩说,“它有效”,确实如此。但是继续前进,用代码管理所有这些是一件非常痛苦的事情,并且让我们面临 IMO 的错误。基本上,数据库被用作平面文件,因为它没有做很多工作。
我想解决这个问题。我现在看到的问题是:
我也很想做一些“激进”的事情,比如迁移到无模式数据库。
面对建立在设计不佳的模式上的现有数据库时,有哪些好的策略?
最佳答案
强制外键:如果域中存在关系,那么它应该有一个外键。
重命名现有的表/列充满危险,特别是如果有许多系统直接访问数据库。陷阱包括仅定期运行的任务;这些经常被遗漏。
感兴趣:Scott Ambler 的文章:Introduction To Database Refactoring
和 Catalog of Database Refactorings