3

I need to create an entity diagram of a MSSQL 2005 database.

Relationships are defined by using primary keys consistently, but there are no foreign keys anywhere. I tried Microsoft Visio's "Reverse Engineer" function, which of course failed due to the lack of foreign keys.

Therefore, I need a diagram tool which doesn't solely rely on foreign keys when drawing relationships.

4

1 回答 1

2

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

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

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

如果这也失败了,任何设计工具都应该允许您创建缺失的关系。这意味着您可能会遇到数据不一致的情况。这里的解决方案是制作表定义的快照并在私有数据库服务器上重新创建数据库(没有数据)。在那里,您可以在不破坏原始系统的情况下随心所欲地弄乱设计。

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

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

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

于 2009-05-13T08:18:42.080 回答