如何创建和更新SQL脚本?

时间:2011-07-04 09:59:03

标签: sql database database-design diagram sql-scripts

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

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

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

您如何看待,您采用什么方式进行?

1 个答案:

答案 0 :(得分:7)

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

  1. 我已经填充了一个测试数据库,并通过编写和执行我无法跟踪的即席SQL非查询以有机方式构建了模式;和
  2. 如果数据库相当简单且标准化程度较低
  3. 另一种罕见的情况可能是,如果您有一个庞大的数据集列表,需要以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.')