数据库中 data/application "version" table 的目的(或用处)是什么?

What is the purpose (or usefulness) of a data/application "version" table in the database?

这是一道设计题。

在数据库中存储新鲜日期的 "Version" table 和连接到的数据库 and/or 应用程序的版本的目的或用处是什么它。

例如下面的DDL...

CREATE TABLE
  [dbo].[Version]
  (
    FreshnessDate DATETIME,
    DatabaseVersion VARCHAR(10),
    ApplicationVersion VARCHAR(10)
  )

...创建一个 table 来存储一些基本的版本控制信息。在我的团队中,争论是我们不需要这个,因为每个人都从网络上的同一个共享数据库开发(甚至数据库开发)(我们不允许在我们的开发盒上拥有单独的数据库 - 甚至是空数据库) .

反对使用这种类型的版本控制的另一个论点 table 是它对我们的过程没有好处:我们在开发数据库上进行开发,然后使用该数据库生成一个巨大的脚本,从中确定差异并生成更新脚本(手动完成迁移)。此更新脚本随后在 QA 共享数据库上 运行,在通过 QA 后,同一脚本随后在生产数据库上 运行。每季度一次,将生产数据库拉取到 QA 和开发数据库服务器以同步数据以帮助调试。

请注意,我们的部门 运行 由指定流程要求的 CFO 负责。这个问题具体是关于其他人是否看到 Version table 的优势,或者是否真的没有必要。由于我们团队中有人建议因为我们的流程是不必要的,所以我在这个post.

中添加了我们的流程

我个人对此持反对意见,但希望就添加这样的 table 是否属于过度工程问题征求意见和反馈。

谢谢!

在我们这边,我们得到了这样的 table 并且我们有基于它的自动迁移 table - 模式更新,模式迁移。我们得到了额外的字段参考文件。因此,在我们的工作流程中,没有这样的 table 是不可能存在的。 Table数据也会自动维护。

在您的情况下,这种 table 的优点是您可以获取历史存储的应用程序版本和数据库版本,因此理论上可以在调试问题时获得一些额外信息。

我宁愿根据您的工作流程删除它。

  • cons 在部署期间自动维护 table
  • 在数据库服务器上添加新的 table
  • pros 哪个应用程序版本哪个数据库版本正在使用的历史记录