我有一个相当大的数据表,其结构如下:
StaffNo Grade Direct Boss2 Boss3 Boss4 Boss5 Boss6
------- ----- ----- ----- ----- ----- ----- -----
10001 1 10002 10002 10057 10094 10043 10099
10002 2 10057 NULL 10057 10094 10043 10099
10003 1 10004 10004 10057 10094 10043 10099
10004 2 10057 NULL 10057 10094 10043 10099
10057 3 10094 NULL NULL 10094 10043 10099
ETC....
即一个唯一的id,他们在层次结构中的级别(等级),他们的老板ID和上面的主管ID的记录。(2、3、4等是指那个特定等级的老板)。
该系统依赖于严格的等级制度——如果你是我的老板(/父母),那么你的老板必须是我的祖父母。
不幸的是,该规则并未在数据模型中强制执行,并且数据最终来自甚至不知道该规则的其他系统,更不用说观察它了。所以你和我可能是同一个boss,但我们的bossboss不会是同一个boss。
笔记:
- 我无法更改数据模型
- 我无法从源头修复数据。
所以(目前)我必须在数据到位后修复它。两周后有人会做一些破坏模型的事情,我需要稍微修改 procs 来解决。不理想,但我在接下来的六个月里一直坚持这个。
无论如何,特定的查询很容易产生,但我发现很难跟踪更大的图景。坐在上面的应用程序运行时没有任何抱怨,但在系统中导航变得非常混乱。所以我的问题是:
- 任何人都可以推荐一种工具(或技术)在这种情况下生成某种“断树”图吗?
我不想要可以为我解决问题的东西,或者尝试进行统计分析,但至少可以直观地表明它在任何时候的损坏程度。
注意:目前这是在 SQL Server 数据库中,但我对使用 C#、Perl 或 Python 的想法持开放态度。