SQL Refactor:提升数据库开发效率的利器

在数据库开发和管理的领域中,随着数据量的不断增长和业务需求的日益复杂,如何高效地管理数据库、优化查询性能以及确保代码的可维护性,成为了开发者们面临的重大挑战。本文将介绍一款名为SQL Refactor的工具,它能够帮助开发者在多种场景下提升工作效率,包括但不限于新员工培训、老旧数据库的维护以及企业合并后的数据库整合。

案例分析

案例一:新员工的挑战

假设所在的团队新加入了一名数据库开发人员。他在大学期间以及在叔叔的五金店实习时都接触过SQL编程,但对编码标准和查询格式化以提高可读性却知之甚少。

案例二:老旧数据库的维护

刚刚获得了梦寐以求的工作——跨国公司首席数据库管理员。然而,很快发现,并没有像预期的那样有一个交接期。前任——设计了大部分数据库的那个人——已经搬到了夏威夷。很快就能理解他为什么选择离开。

案例三:企业合并后的数据库整合

经过6个月的准备工作,公司刚刚与一个重要的竞争对手合并,而则是负责在新的公司结构中整合数据库的团队成员之一。一方面,需要结构上的简化——不希望客户分散在不同的数据库中;另一方面,刚刚接手了更细粒度的客户信息。

在所有这些情况中——以及许多其他情况——首要任务是将混乱变为有序。建立一个复杂数据库安装的健壮可管理性,以及一个多样化的SQL人才团队,是一项艰巨的任务。目标是简单性、可读性、可重用性、效率和最重要的安全性。

SQL Refactor的愿景

想象一下,如果SQL Server Management Studio内置了确保以下所有事项的工具:

  • 团队中的所有成员无论何时加入,都能自动按照相同的标准编码。
  • 自动、智能的对象重命名,以及所有依赖引用的更新。
  • 长而复杂的脚本或查询的即时摘要。
  • 将脚本部分封装为单独的存储过程。
  • 一键大写关键词。
  • 完全可定制的SQL布局设置。
  • 将一个表分割成两个表,并保持完整的引用完整性。

想象一下,这个未来的版本Management Studio(它与SQL Server 2000和SQL Server 2005同样表现良好)现在就可以使用。

Red Gate Software刚刚发布了一个全新的生产力工具,SQL Refactor,它直接安装在Management Studio的工具栏上。它使能够对T-SQL代码执行十几种强大的转换,而不影响性能。在本文中,将简要地看一下其中的一些。

“认为这是一个不可或缺的工具,真希望几个月前在完全重写一百个存储过程时就有它。”

——Andrew J Kelly, MVP, SolidQualityLearning.com.

自定义SQL布局

可能是因为团队中新增加了成员,也可能是因为遗留数据库,但无论如何,面临的是一个难以解读或不符合公司编码实践的脚本。也许不像下面这个例子那么疯狂,但都能认出鸟巢汤:

SELECT * FROM Orders WHERE CustomerID = 123;

幸运的是,如果安装了SQL Refactor,可以简单地打开菜单并应用‘SQL Layout’来格式化脚本,使其立即可读。

进一步的重构‘Uppercase Keywords’将完全按照它所说的去做,无论是对整个脚本还是对脚本的选定部分。

在工具栏菜单项列表中向下移动,如果正在分析一个遗留数据库中的大而复杂的SQL脚本,通常很难快速弄清楚脚本的详细操作是什么。‘Summarize Script’重构将提供一个易于阅读的任何脚本的摘要,无论它多么复杂(见左侧图表)。点击摘要脚本中的关键词将直接突出显示并移动光标到查询窗口中打开的完整脚本中对应的关键词。

智能重命名

还有两个非常强大的重构,它们不是关于脚本的,而是关于合理化数据库结构的。因此,它们是上下文敏感的,即它们在对象资源管理器中的适当位置和时间变得可用。例如,右键单击对象资源管理器中的表名将带来通常的脚本菜单项,但会列出两个额外的项目,智能重命名和表分割(见左侧图表)。

Management Studio中的原生‘Rename’菜单项与任何Microsoft应用程序中的‘Rename’相同。它只允许重命名选定的对象,而不问任何问题。但是,如果正在处理一个即使是中等复杂性的数据库,这显然是有限度的。

但是,SQL Refactor的‘Smart Rename’重构,识别并更新想要重命名的对象的所有依赖引用。

它生成一个脚本,将更新所有这些引用,而不需要手动查找并更新它们。智能重命名向导还提供了一个行动计划(列出创建SQL脚本中的所有步骤)、一个警告标签和一个将通过执行重命名操作而更新的所有引用对象的列表。

这是另一个极其强大的、上下文敏感的结构重构。虽然不是每天都会进行,甚至不是每周都会进行的事情,但当它变得紧急时,拥有一个四步操作的方法可以节省几天的工作。在大多数公司中,随着业务量的增长,它所持有的客户信息的数量和类型也会相应增长。在具有刚性和不灵活的模式的数据库中保留越来越多的客户数据会导致瓶颈、效率低下和安全问题。

所以想象一下,公司决定允许客户通过定期的月度借记计划支付。除了信用卡信息,现在可能需要存储更复杂的个人详细信息。一个以前只包含姓名、地址和一张指定信用卡的客户表已经不够了。通过使用表分割重构,可以高效地将卡号分割成单独的表,然后可以添加更多的银行详细信息。在为新表选择了一个名字之后,对话框会列出原始表中的所有列,并要求选择想要复制或移动到新表的列。

至少必须在两个表中包含一个共享列:

ALTER TABLE Customer ADD CONSTRAINT FK_Customer_CreditCard FOREIGN KEY (CreditCardID) REFERENCES CreditCard(CreditCardID);

在选择想要在第二个表中的列之后,可以指定在哪个表上创建外键。

SQL Refactor然后生成执行表分割所需的创建SQL。这个脚本可以在执行前查看和编辑。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485