У меня достаточно большая структура данных, похожая на эту:
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
и т.д ....
т.е. уникальный идентификатор, их уровень (класс) в иерархии, запись идентификатора их боссов и идентификаторы супервизоров выше . (2,3,4 и т. Д. Относится к боссу именно этого класса).
Система опирается на строгую иерархию - если вы мой босс (/ родитель), то ваш босс должен быть моим прародителем.
К сожалению, это правило не применяется в модели данных, и в конечном итоге данные поступают из других систем, которые даже не знают о правиле, не говоря уже о его соблюдении. Так что у нас с вами может быть один и тот же босс, но наш босс не будет таким же.
Примечание:
- Я не могу изменить модель данных
- Я не могу исправить данные в источнике.
Так (на данный момент) я должен исправить данные, как только они будут на месте. Раз в две недели кто-то сделает что-то, что сломает модель, и мне нужно будет немного изменить процедуры, чтобы решить. Не идеально, но я застрял с этим в течение следующих шести месяцев.
В любом случае, конкретные запросы легко создавать, но мне трудно отслеживать общую картину. Приложение, которое работает на этом, работает без жалоб, но навигация по системе становится чрезвычайно запутанной. Итак, мой вопрос:
- Может ли кто-нибудь порекомендовать инструмент (или методику) для генерации какой-либо диаграммы "сломанного дерева" в подобных обстоятельствах?
Я не хочу что-то, что исправит вещи для меня или попытается провести статистический анализ, но, по крайней мере, что-то, что даст визуальное представление о том, насколько оно сломано в любой момент времени.
Примечание : В данный момент это находится в базе данных SQL Server, но я открыт для идей, использующих C #, Perl или Python.