我出现在一份新工作中,发现数据库急需帮助。它有很多问题,包括
- 没有外键……任何地方。它们是通过使用
int
并在代码中管理关系来伪造的。 - 实际上每个字段都可以是
NULL
,但事实并非如此 - 表和列的命名约定几乎不存在
Varchar
存储关系信息的串联字符串
人们可以争辩说,“它有效”,确实如此。但是向前看,用代码管理所有这些是一件很痛苦的事情,并且让我们容易受到 IMO 的 bug 的影响。基本上,数据库被用作平面文件,因为它没有做很多工作。
我想解决这个问题。我现在看到的问题是:
- 我们有很多数据(迁移,可能很棘手)
- 所有的数据库逻辑都在代码中(随着迁移而来的是大的代码变化)
我也很想做一些“激进”的事情,比如转向无模式的数据库。
面对基于设计不当的架构构建的现有数据库,有哪些好的策略?
最佳答案
强制外键:如果域中存在关系,则它应该有一个外键。
重命名现有的表/列充满了危险,尤其是在有许多系统直接访问数据库的情况下。陷阱包括仅定期运行的任务;这些经常被遗漏。
感兴趣:Scott Ambler 的文章:Introduction To Database Refactoring
关于sql - 糟糕的数据库模式设计的升级策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1973281/