在没有任何外键的情况下创建数据库的实体图

时间:2009-05-13 08:10:10

标签: sql reverse-engineering entity-relationship foreign-key-relationship

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

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

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

1 个答案:

答案 0 :(得分:2)

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

这将允许您使用您的工具而不会过多地破坏数据库。如果第一个脚本失败,那么你也会知道数据出了问题。

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

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

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

在我自己的系统中,我总是有脚本来快速创建当前开发和生产数据库的克隆。通常,我使用像Derby或HSQL这样的嵌入式数据库。但是,如果向进程添加过滤器,则可以在DDL文件中使用$(SCHEMA),并将同一数据库安装到同一服务器上的不同模式中。我们在数据迁移项目中取得了巨大成功,我们将每个迁移测试的结果保存在新模式中TABLE_DATE_XX其中XX是一个两位数的数字,因此您可以创建多个每天测试。)

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