gpt4 book ai didi

数据库结构和源代码控制 - 最佳实践

转载 作者:太空狗 更新时间:2023-10-30 01:38:06 28 4
gpt4 key购买 nike

背景

我在一家公司工作了几年,所有数据库对象都存储在源代码管理中,每个对象一个文件。我们有一个在添加新项目时维护的所有对象的列表(以允许我们让脚本按顺序运行并处理依赖项)和一个 VB 脚本,该脚本运行以创建一个针对数据库运行的大脚本。

所有表都是“如果不存在则创建”并且所有 SP 等都被删除并重新创建。

到目前为止,我现在在一个数据库为主的地方工作,没有 DB 对象的源代码控制,但我们确实使用 redgate 的工具来更新我们的生产数据库(SQL 比较),这非常方便,并且需要很少的工作。

问题

您如何处理您的数据库对象?我喜欢将它们置于源代码控制之下(而且,因为我们使用的是 GIT,所以我希望能够处理脚本中的合并冲突,而不是数据库中的冲突),但我将被迫过去比较使用 SQL 更新数据库的简便性。

我真的不想让我们在 GIT 中更新脚本,然后使用 SQL 比较从我们的 DEV DB 更新生产数据库,因为我宁愿有“一个真实的版本”,但我没有真的很想重新编写一个自定义的软件来将所有脚本捆绑在一起。

我认为 visual studio 数据库版本可能会做类似的事情,但我不确定我们是否有预算。

我敢肯定,这已经被要求死了,但我找不到任何似乎完全符合我正在寻找的答案的东西。与此类似,但不完全相同:

What are the best practices for database scripts under code control


开始赏金,因为我有兴趣征求更多意见 - 这里的答案很合理,但我觉得应该有更简单的方法。

感谢所有出色的答案 - 每个答案都有其优点,所以我将投最高票,但为所有的输入欢呼。

最佳答案

看看这个关于数据库版本控制的原则和实践的五部分系列(由 K. Scott Allen 撰写):

  1. Three rules for database work
  2. The Baseline
  3. Change Scripts
  4. Views, Stored Procedures and the Like
  5. Branching and Merging

这五个部分很重要,但基本上的想法是有一个基线,然后更改脚本(使用版本表)。更新数据库意味着在当前版本“之上”应用更改脚本。而且这个策略对 VCS 非常友好(没有冲突)。

关于数据库结构和源代码控制 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401229/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com