【问题标题】:Normalization of an existing SQL database现有 SQL 数据库的规范化
【发布时间】:2011-04-05 07:34:51
【问题描述】:

我有一个单表数据库,我继承并迁移到 SQL Server,然后我通过创建、链接和填充一大堆表示主表中项目的查找类型表对其进行规范化。我现在想用它们的外键替换原始表中的那些项目。我是坚持编写一堆查询或 UDF,然后编写一个巨大的 INSERT 语句来完成此任务,还是有一个工具可以用来指向各个字段并让它为我处理繁重的工作?

【问题讨论】:

    标签: sql normalization


    【解决方案1】:

    我也有过类似的经历。我曾经继承了一个相当大的数据库,需要对架构进行彻底的检修,然后才能不屑一顾地查看它。

    因为升级非常重要,所以我设计了一个 SSIS 包来将数据从旧架构迁移到新架构。查找活动有助于将旧文本值映射到新键。我将旧架构和数据的脚本放在手边,并会在沙箱中反复恢复数据库并重新迁移,直到我能够满足迁移可靠的能力。

    我发现开始使用 SSIS 的学习曲线适中。如果您可以使用该工具,我建议您尝试一下。

    【讨论】:

    • 我以前用过SSIS和DTS,我觉得它是一个很棒的工具。希望做一些不需要繁重工作的事情,因为这种事情一定是很常见的情况。
    【解决方案2】:

    Redgate SQL Refactor 有 14 天的评估期,并进行了“拆分表”重构,听起来它可能满足您的需求?

    功能描述如下:

    Split Table 将一个表拆分为两个 表,并自动重写 引用存储过程、视图、 等等。 你也可以用这个 重构以引入引用 完整性表。你可以选择这个 上下文菜单中的功能 Management Studio 的对象资源管理器。

    【讨论】:

    • 我实际上拥有 SQL Refactor,但我只用它来重构我编写或继承的脚本(它做得很好)。哎呀,我得回去看看那个。感谢您的提醒。
    • 我继续玩它。它确实具有执行此类操作的功能,但它实际上只是使用 SELECT DISTINCT 关闭主表创建辅助表,然后将外键约束分配给主表的字段,指向新的辅助表。我想切换到整数键辅助表,将主表中的字段替换为新的整数 ID 字段并消除原始 varchar 字段。我看不出如何使用 SQL 重构来实现这一点。但我对自己拥有的产品学到了一些新东西,所以我感谢你!
    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2012-11-18
    • 1970-01-01
    • 2014-12-02
    • 2011-09-28
    • 2012-10-08
    相关资源
    最近更新 更多