如何创建和更新SQL脚本?

Oti*_*iel 5 sql database diagram database-design sql-scripts

我想知道创建和维护数据库映射和SQL脚本的最佳方法是什么.我知道我更喜欢在文本编辑器上手工编写SQL脚本(以及在一张纸上设计我旁边的地图),而其他人则更喜欢使用数据库地图软件(MySQL Workbench,Visual Studio) ...... 本帖中列出的一些内容)自动生成脚本.

两种解决方案都有优点和缺点.我看到了这些优点:

  • 手工编写SQL脚本:
    1. 确切地知道你写的什么.
    2. 您可以保持干净且易于阅读的SQL代码.
    3. 编写代码,可以更好地查看数据库细节.
    4. 编写代码使您能够掌握SQL知识.
  • 从设计地图自动生成的脚本:
    1. 节省一些时间.
    2. 即使不了解SQL语言,您也可以生成一个脚本(即使我将此脚本列为SQL脚本的相反优势).
    3. 打破拼写错误.

你怎么看,你走哪条路?

Lis*_*isa 7

如果自动化某些东西可以节省时间和人为错误,为什么不这样做呢?我会尝试自动生成SQL,如果:

  1. 我已经填充了一个测试数据库,并通过编写和执行我没有记录的临时SQL非查询以有机的方式构建了模式; 和
  2. 如果数据库相当简单并且标准化程度较低

另一种罕见的情况可能是,如果您有一个庞大的数据集列表,需要以SQL的形式提取架构.

手工编写的好处是,您了解设计的每个部分,并且能够更好地实施数据完整性(例如,通过使用外键或限制数据类型).简而言之,我同意你的专业人士名单.

对于升级脚本,我更喜欢手工编写这些脚本,因为它们通常很短,并且对于最终运行它们的人来说,它们更易于阅读.

我对升级脚本的一个提示是确保每个脚本在表中添加一行说明升级版本号,该表专门用于确保数据库的版本正确.就像是:

INSERT INTO DB_VERSION (upgrade_time, version_from, version_to, comment)
    VALUES ('2011-07-04T120320', '2.2.4', '2.3', 'add column x to table y.')
Run Code Online (Sandbox Code Playgroud)

  • db_version(我也使用)有另一个更重要的用法.需要保证db的简单升级路径.我通常有升级脚本,只执行从版本X到版本Y的升级,并通过检查当前版本来执行此操作.如果我需要从以前的版本升级,那么我需要执行正确的升级脚本序列. (2认同)