我正在使用SQL Server 2011并需要创建一个可视化表示(图)。当前结构在表之间没有关系(外键),并且有没有任何主键的表。SQL数据库图提取
我已经尝试过使用SQL数据库图表,但不能在表格之间添加任何关系,而不会在数据库本身发生变化。
我想绘制关系,但不做任何更改。
有没有免费的数据图表软件,我可以用来实现这一目标?我曾尝试过DbVisualizer,但得到与SQL中的图相同的问题。
我正在使用SQL Server 2011并需要创建一个可视化表示(图)。当前结构在表之间没有关系(外键),并且有没有任何主键的表。SQL数据库图提取
我已经尝试过使用SQL数据库图表,但不能在表格之间添加任何关系,而不会在数据库本身发生变化。
我想绘制关系,但不做任何更改。
有没有免费的数据图表软件,我可以用来实现这一目标?我曾尝试过DbVisualizer,但得到与SQL中的图相同的问题。
在你的情况我会做到以下几点:为您的数据库
生成脚本(仅架构)(如@Serg建议的话)
可以使用SSMS
这样做:右击你的数据库 - Tasks - Generate Scripts
。选择所有表格,然后在Advanced
下,在Types of data to script
处选择Schema only
。保存脚本并在某些测试环境中运行它以生成数据库的副本。 (如果这样做,在同一台服务器上,您可能需要更改脚本一点,给新数据库的另一个名字)
动态尝试“猜测”外键关系
既然你有500 +表格,你可以尝试使this script工作于 你(当然,它需要一些测试和调整,以适应你的 的情况),但我在下面的场景中使用它,它工作。
希望你有一个命名约定。在这个脚本中,假定引用的键被命名为相同,但可以进行配置。
所以,我创建了下面的表格:
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的工作演示。
祝你好运!
优秀!谢谢!我一定会按照这些步骤! – PKirby
你可以下载它作为图像,并使用任何图像编辑器来“绘制”表之间的关系线。出于好奇,是否有任何理由为什么你会有一个没有定义外键的数据库? –
如果我能找到可以根据列名自动绘制关系的软件,那将会有很大的帮助,因为我目前在数据库中有500多个表。不知道为什么这个数据库是按照它的方式创建的(没有FK)。目前的DBA已经在垃圾数据上挣扎了很长一段时间。 – PKirby
如果你没有定义外键,你期望软件如何识别关系?通过猜测?通过掷骰子?这就是为什么需要外国约束的一个很好的例子:不仅要保持你的数据的完整性,还要*文件*你的模型 –