【发布时间】:2011-10-30 00:01:30
【问题描述】:
是否有工具可以与 SQL Server 一起使用,从分层数据模型生成树状图?
我正在处理大型地理层次结构,并希望将其可视化。
这是一个例子。
我有一个 NodeHierarchy 表,用于存储节点之间的层次关系。表中的每一行代表一个节点。除了一个节点之外,每个节点都有一个父节点。如果层次结构,则没有父节点的节点是根节点。
这是我创建表格的方式:
CREATE DATABASE HierarchyTest;
GO
USE HierarchyTest;
GO
CREATE TABLE NodeHierarchy (
PK_NodeID INT NOT NULL
CONSTRAINT PK_NodeHierarchy PRIMARY KEY,
FK_ParentNodeID INT NULL
CONSTRAINT FK_NodeHierarchy_NodeHierarchy FOREIGN KEY
REFERENCES NodeHierarchy(PK_NodeID),
Name NVARCHAR(255) NOT NULL
);
我有一个苏格兰城市和场所的层次结构示例。苏格兰是等级制度的根源。苏格兰的后裔是城市和场所。在这个层次结构中,父母“包含”一个孩子,所以我们说,例如“巴罗兰兹在格拉斯哥,而格拉斯哥在苏格兰”。
此语句使用示例数据填充 NodeHierachy 表:
INSERT INTO NodeHierarchy(PK_NodeID, FK_ParentNodeID, Name)
VALUES
(1, NULL, N'Scotland'),
(2, 1, N'Glasgow'),
(3, 1, N'Edinburgh'),
(4, 1, N'St Andrews'),
(5, 2, N'The Barrowlands'),
(6, 2, N'The Cathouse'),
(7, 2, N'Carling Academy'),
(8, 2, N'SECC'),
(9, 2, N'King Tut''s Wah-Wah Hut'),
(10, 3, N'Henry''s Cellar Bar'),
(11, 3, N'The Bongo Club'),
(12, 3, N'Sneaky Pete''s'),
(13, 3, N'The Picture House'),
(14, 3, N'Potterrow'),
(15, 4, N'Aikman''s'),
(16, 4, N'The Union'),
(17, 4, N'Castle Sands');
SELECT * FROM NodeHierarchy;的输出:
PK_NodeID FK_ParentNodeID Name
----------- --------------- ---------------------------------
1 NULL Scotland
2 1 Glasgow
3 1 Edinburgh
4 1 St Andrews
5 2 The Barrowlands
6 2 The Cathouse
7 2 Carling Academy
8 2 SECC
9 2 King Tut's Wah-Wah Hut
10 3 Henry's Cellar Bar
11 3 The Bongo Club
12 3 Sneaky Pete's
13 3 The Picture House
14 3 Potterrow
15 4 Aikman's
16 4 The Union
17 4 Castle Sands
(17 row(s) affected)
在Freemind 我画了这个等价图:
什么工具可以用最少的手动操作为我做到这一点?
编辑:最初我说我想可视化层次结构的“全部或部分”。此处发布的解决方案无条件地可视化整个层次结构。这对于较小的示例层次结构很好,但对于较大的示例层次结构,仅可视化其中的一部分可能更有用。
因为我没有具体说明“部分”的含义,所以我已将其从问题中删除。我在another question 中询问了关于部分可视化的问题。
【问题讨论】:
-
+1 这是一个很好的问题。我也想知道答案。
-
+1 我真的很喜欢你添加了
CREATE DATABASE和INSERT这样我就可以剪切和粘贴了! -
谢谢,柯克。它的精神是“简短、独立、正确、可编译的示例”:sscce.org。
标签: sql-server visualization hierarchical-data diagramming