我正在使用SQL Server 2011并需要创建可视化表示(图表)。当前结构在表之间没有关系(外键),并且存在没有任何主键的表。
我尝试过使用SQL数据库图但不能在表之间添加任何关系,而不会在数据库本身发生更改。
我想在不做任何改变的情况下绘制关系。
我是否可以使用任何免费的DB Diagram软件来实现这一目标?我尝试过DbVisualizer但遇到的问题与SQL中的图表相同。
答案 0 :(得分:2)
在你的情况下,我会做以下事情:
为您的数据库生成脚本(仅限架构)(如@Serg建议的那样)
您可以使用SSMS
执行此操作:右键单击您的数据库 - Tasks - Generate Scripts
。选择所有表格,然后在Advanced
下,在Schema only
选择Types of data to script
。保存脚本并在某个测试环境中运行它以生成数据库的schema only
副本。 (如果在同一台服务器上执行此操作,则可能需要稍微更改脚本,以便为新数据库指定其他名称)
动态尝试“猜测”外键关系
由于您有500多个表,因此您可以尝试使this script工作 你(当然它需要一些测试和调整来适应你的 case)但我在下面的场景中使用它并且它有效。
希望你有一个命名约定。在此脚本中,假定引用的键名称相同,但可以对其进行配置。
所以,我创建了以下表格:
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文章中运行了该脚本,并设法得到以下结果:
执行从此脚本生成的所有ALTER
语句,您可以在新数据库中创建关系 - 从此数据库生成图表,您就完成了! :)
PS。我建议你一步一步地测试它,例如首先用一个表然后添加其他表并检查结果。 您可以尝试我的小测试here的工作演示。
祝你好运!