编写用于部署的 SQL 脚本的最佳实践

Joa*_*les 3 sql database scripting database-design

我想知道编写 SQL 脚本以设置用于生产和/或开发的数据库的最佳实践是什么,例如:

  • 我应该包括 CREATE DATABASE 语句吗?
  • 我应该在同一个脚本中为数据库创建用户吗?
  • 在执行脚本主体之前禁用 FK 检查是否正确?
  • 我可以在交易中包含漏洞脚本吗?
  • 为每个数据库生成 1 个脚本比为所有数据库生成一个脚本更好吗?

谢谢!

Ton*_*ony 6

您的问题很难回答,因为这取决于脚本在您尝试实现的目标中的使用方式。您也不会说您使用的是哪个数据库服务器,因为提供的工具可以使某些任务变得更容易。

把你的观点按顺序排列,这里有一些建议,这些建议可能与其他人有很大不同:)

  • 我应该包括 CREATE DATABASE 语句吗?

您考虑使用什么替代方案?如果您的问题是您是否应该将CREATE DATABASE语句放在与它所依赖的表创建相同的脚本中。开发数据库时,我使用单独的创建数据库脚本,因为我有一个脚本来删除所有对象,因此我不需要再次创建数据库。

  • 我应该在同一个脚本中为数据库创建用户吗?

我不会,仅仅因为用户可能会改变,但您的架构没有。不妨在较小的脚本中管理这些更改。

  • 在执行脚本主体之前禁用 FK 检查是否正确?

如果您正在导入数据以尝试恢复数据库,那么如果您使用自动增量 ID 并希望保持相同的值,则可能必须这样做。此外,您最终可能会“乱序”导入表,而不希望执行检查。

  • 我可以在交易中包含整个脚本吗?

是的,您可以,但这同样取决于您正在运行的脚本类型。如果您在重建数据库后导入数据,那么整个导入应该会成功或失败。但是,您的交易文件在导入过程中会很大。

  • 为每个数据库生成 1 个脚本比为所有数据库生成一个脚本更好吗?

同样,出于维护目的,最好将它们分开。