SQL Refactor——化混乱为秩序





0/5 (0投票)
2006年11月1日
6分钟阅读

28776
本文介绍了如何使用 SQL Refactor 来优化您的 T-SQL 代码。
这是为 CodeProject 的赞助商提供的产品展示评论。这些评论旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。
引言
本文介绍了如何使用 SQL Refactor 来优化您的 T-SQL 代码。 点击此处获取免费试用。
案例 1:新人报道 - 您的办公室新来了一位数据库开发人员。他在大学时写过一些 SQL 代码,并在他叔叔的五金店实习期间也写过。问题是他对编码标准一窍不通,也不知道如何格式化查询才能一目了然。
案例 2:遗留数据库 - 您刚刚得到了一份梦寐以求的工作,成为您家附近那家跨国公司的高级 DBA。现在您得知,没有约定中的交接期。您的前任——那个设计了大部分数据库的人——已经搬到了夏威夷。您完全能理解他为何逃离。
案例 3:合并 - 经过 6 个月的准备工作,您的公司刚刚与一个重要的竞争对手合并,您是负责整合新公司结构中数据库的团队成员。一方面,您需要结构上的简洁——您不希望客户分散在不同的数据库中;另一方面,您刚刚接收了更高粒度的客户信息。
在所有这些情况——以及许多其他情况——中,最重要的任务是**整理混乱**。建立对复杂数据库安装的强大可管理性,以及拥有一支 SQL 技术团队,这是一项艰巨的任务。您的目标是简洁、易读、可重用、高效,以及最重要的——安全。
想象一下,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 布局 - 可能是因为团队新成员的加入,也可能是因为遗留数据库,无论如何,您面对一个难以理解或不符合公司编码实践的脚本。可能不是下面这种疯狂的例子,但我们都能认出“一团乱麻”的代码。
幸运的是,如果您安装了 SQL Refactor,您只需打开菜单并应用“SQL 布局”,即可格式化脚本,使其立即易于阅读。
进一步的重构“大写关键字”将按字面意思执行,无论是对整个脚本还是脚本的选定部分。
在工具栏菜单项列表中向下看,如果您正在分析一个来自遗留数据库的庞大而复杂的 SQL 脚本,要快速理解脚本的具体操作通常并不简单。“摘要脚本”重构将为任何脚本提供一个易于阅读的摘要,无论其多么复杂(参见左侧图)。点击摘要脚本中的关键字将直接高亮显示并移动光标到查询窗口中打开的完整脚本中对应的关键字。
智能重命名
|
还有两个非常强大的重构,它们不涉及脚本编写,而是涉及数据库结构的合理化。因此,这两个重构是上下文敏感的,即它们会在对象浏览器中的适当位置和时间可用。例如,右键单击对象浏览器中的表名将弹出通常的脚本菜单项,但会列出两个额外的项:智能重命名和表拆分(参见左侧图)。 Management Studio 中原生的“重命名”菜单项与任何 Microsoft 应用程序中的“重命名”相同。它只是允许您重命名选定的对象,不问任何问题。但如果您处理的是一个中等复杂度的数据库,那么它的效用显然有限。 然而,SQL Refactor 的“智能重命名”重构可以识别并更新您需要重命名的对象的所有依赖引用。 |
它会生成一个脚本,用于更新所有这些引用,而无需您手动查找和更新它们。智能重命名向导还提供一个操作计划(列出创建 SQL 脚本中的所有步骤)、一个警告选项卡以及一个将被执行重命名更新的所有引用对象的列表。
表拆分
这是另一个非常强大的、上下文敏感的结构重构。虽然这不是日常甚至每周都会进行的操作,但当它变得紧急时,拥有一个 4 步操作方法可以节省数天的工作。在大多数公司中,交易量增长的一个常见副作用是客户信息的数量和类型会相应增长。在具有僵化且不灵活模式的数据库中保留不断增长的客户数据会导致瓶颈、效率低下和安全问题。
因此,假设您的公司已决定允许其客户通过定期的月度借记计划进行支付。除了信用卡详细信息,您可能还需要存储一套更复杂的个人详细信息。一个以前只包含姓名、地址和单个指定信用卡的客户表已不再足够。通过使用表拆分重构,可以高效地将卡号拆分到一个单独的表中,然后您可以在该表中添加更多银行详细信息。选择新表的名称后,对话框会列出原始表中的所有列,并要求您选择要复制或移动到新表的列。
两个表必须至少包含一个共享列。
选择要包含在第二个表中的列后,您可以指定要在哪个表上创建外键。
SQL Refactor 将生成执行表拆分所需的创建 SQL。可以在执行前查看和编辑此脚本。
随着数据库安装的复杂性日益增加;随着 SOX 和其他合规性问题要求提高交易透明度;随着数据库行业从业人员年复一年地增长,**SQL Refactor** 是一个及时的工具,可以极大地简化以前艰巨而耗时的任务。
整理混乱是实现数据库安装和维护巨大效率提升的第一步。