代码之家  ›  专栏  ›  技术社区  ›  TFM

创建不带外键的数据库实体关系图

  •  3
  • TFM  · 技术社区  · 16 年前

    我需要创建一个mssql 2005数据库的实体图。

    关系是通过一致地使用主键来定义的,但是在任何地方都没有外键。我尝试了microsoft visio的“逆向工程”功能,当然由于缺少外键而失败了。

    因此,我需要一个在绘制关系时不完全依赖外键的图表工具。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Aaron Digulla    16 年前

    创建一个创建正确外键关系的脚本,运行图表工具,然后运行第二个删除外键的脚本。

    这将允许您使用您的工具,而不会对数据库造成太多干扰。如果第一个脚本失败,那么您将知道数据也有问题。

    [编辑]如果有一些规则如何命名外键列,您可以使用脚本语言为您生成SQL。

    如果这也失败了,任何设计工具都应该允许您创建缺少的关系。这意味着您可能会遇到数据不一致的情况。这里的解决方案是创建表定义的快照,并在专用数据库服务器上重新创建数据库(不包含数据)。在那里,你可以在不破坏原有系统的情况下尽可能多地扰乱设计。

    当您完成修复设计时,您可以提取命令来创建外键并将其应用到实际系统中——如果您愿意的话。这样,你就可以感觉到数据库中的混乱程度有多大。如果没有,那么您可以简单地保留新的副本,在那里进行任何设计更改,并且在检查完毕后,可以将更改迁移到生产数据库。

    在我自己的系统中,我总是有脚本来快速创建当前开发和生产数据库的克隆。通常,我使用嵌入式数据库,如derby或hsql。但是,如果向进程添加筛选器,则可以使用 $(SCHEMA) 在ddl文件中,将同一数据库安装到同一服务器上的不同架构中。我们在一个数据迁移项目中成功地使用了它,在这个项目中,我们将把每个迁移测试的结果保存在一个新的模式中( TABLE_DATE_XX 哪里 XX 是一个两位数的数字,所以你可以每天创建一个以上的测试。

    这使得我们能够验证各种修复,比较两个迁移等。因为整个过程是100%自动的,因此创建一个新的模式比修复一个现有的模式变得更加便宜。