2010-06-18 139 views
3

现在,我的代码在我的主数据库访问类中创建了数据库(只是SQLite数据库上的一些CREATE查询)。这似乎是不必要的,因为我无意使用代码。如果出现问题,我只需要它,我需要重新创建数据库。我应该...YAGNI和数据库创建脚本

  1. 尽管数据库创建代码大约是我的文件大小的四分之一,但事实保持不变。
  2. 将数据库创建代码移至单独的脚本。如果我仍然需要再次运行它,那么很可能我会手动运行它,并且在处理主代码时会让它看起来不知所措。
  3. 删除数据库创建代码并依赖版本控制,如果我发现自己再次需要它。
+0

我认为在这种情况下YAGNI =你*是*会需要它! – Benjol 2010-06-18 13:50:16

回答

3

我认为最好保持代码。更重要的是,每当数据库模式发生变化时,您应该维护此代码(或生成它)。

由于以下原因,这很重要。

  1. 您可能会惊讶多少次你需要它。如果您需要迁移服务器或设置其他环境(例如TEST或DEMO)等。
  2. 我也发现,在编码时我经常提到DDL SQL,特别是如果我一段时间没有触及系统。
  3. 你必须为你所做的决定,比如你创建的索引,唯一键,等等等等的参考

如果没有一个严格的方法来这个,我发现数据库模式随着时间的推移可能会随着临时变化而发生漂移,并且这可能会导致在您点击数据库之前找不到的晦涩问题。更糟糕的是,如果没有遵守规范的方法(即模式的参考定义),您可能会发现不同的数据库具有细微差别的模式。

3

我只需要它,一旦发生 错了,我需要重新创建 数据库。

重新创建数据库绝对不是特例。该代码是您在新/不同系统上的部署过程的一部分,它代表您的代码期望使用的数据库结构。实际上你应该有集成测试来证实这一点。在开发过程中通过手动调度的SQL语句逐步创建架构的单个数据库服务器无限期地工作是而不是您应该依赖的东西。

但是,它应该与访问代码分开;所以选项2是正确的。单独的脚本可以被测试以及部署使用。