我在一份新工作中出现并发现了急需帮助的数据库。它有很多问题,包括

  • 没有外键...任何地方。它们是通过使用 int 并在代码中管理关系来伪造的。
  • 实际上每个字段都可以是 NULL ,这不是真的
  • 表和列的命名约定实际上不存在
  • Varchar s,它存储连接的关系信息字符串

  • 人们可能会争辩说,“它有效”,确实如此。但是继续前进,用代码管理所有这些是一件非常痛苦的事情,并且让我们面临 IMO 的错误。基本上,数据库被用作平面文件,因为它没有做很多工作。

    我想解决这个问题。我现在看到的问题是:
  • 我们有很多数据(迁移,可能很棘手)
  • 所有的数据库逻辑都在代码中(迁移带来了大的代码更改)

  • 我也很想做一些“激进”的事情,比如迁移到无模式数据库。

    面对建立在设计不佳的模式上的现有数据库时,有哪些好的策略?

    最佳答案

    强制外键:如果域中存在关系,那么它应该有一个外键。

    重命名现有的表/列充满危险,特别是如果有许多系统直接访问数据库。陷阱包括仅定期运行的任务;这些经常被遗漏。

    感兴趣:Scott Ambler 的文章:Introduction To Database Refactoring

    Catalog of Database Refactorings

    10-07 13:12
    查看更多