SQL DB Diagram Extract

时间:2017-09-05 08:51:38

标签: sql-server entity-relationship

我正在使用SQL Server 2011并需要创建可视化表示(图表)。当前结构在表之间没有关系(外键),并且存在没有任何主键的表。

我尝试过使用SQL数据库图但不能在表之间添加任何关系,而不会在数据库本身发生更改。

我想在不做任何改变的情况下绘制关系。

我是否可以使用任何免费的DB Diagram软件来实现这一目标?我尝试过DbVisualizer但遇到的问题与SQL中的图表相同。

1 个答案:

答案 0 :(得分:2)

在你的情况下,我会做以下事情:

  1. 为您的数据库生成脚本(仅限架构)(如@Serg建议的那样)

    您可以使用SSMS执行此操作:右键单击您的数据库 - Tasks - Generate Scripts。选择所有表格,然后在Advanced下,在Schema only选择Types of data to script。保存脚本并在某个测试环境中运行它以生成数据库的schema only副本。 (如果在同一台服务器上执行此操作,则可能需要稍微更改脚本,以便为新数据库指定其他名称)

  2. 动态尝试“猜测”外键关系

    由于您有500多个表,因此您可以尝试使this script工作 你(当然它需要一些测试和调整来适应你的 case)但我在下面的场景中使用它并且它有效。

  3. 希望你有一个命名约定。在此脚本中,假定引用的键名称相同,但可以对其进行配置。

    所以,我创建了以下表格:

    CREATE TABLE test (testid int identity(1,1) UNIQUE, description varchar(10))
    CREATE TABLE test_item (id int identity(1,1) UNIQUE, testid int)
    

    以下主键上的索引(通常也应该有它们)

    CREATE CLUSTERED INDEX [ix_testid] ON [dbo].[test]([testid] ASC) 
    CREATE CLUSTERED INDEX [ix_testitemid] ON [dbo].[test_item]([id] ASC) 
    

    我没有创建外键关系。

    接下来,我从Automatically guessing foreign key constraints文章中运行了该脚本,并设法得到以下结果:

    enter image description here

    执行从此脚本生成的所有ALTER语句,您可以在新数据库中创建关系 - 从此数据库生成图表,您就完成了! :)

    PS。我建议你一步一步地测试它,例如首先用一个表然后添加其他表并检查结果。 您可以尝试我的小测试here的工作演示。

    祝你好运!