次のような構造のかなり大きなデータテーブルがあります。
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
等....
つまり、一意の ID、階層内のレベル (グレード)、上司 ID の記録、および上位の監督者の ID です。(2、3、4 などは、その特定のグレードのボスを指します)。
このシステムは厳密な階層構造に依存しています。あなたが私の上司 (/parent) である場合、あなたの上司は私の祖父母でなければなりません。
残念ながら、このルールはデータ モデル内では適用されず、データは最終的に、ルールを知らない、ましてやルールを守らない他のシステムから取得されます。だからあなたと私は同じ上司を共有するかもしれませんが、私たちの上司の上司は同じではありません.
ノート:
- データモデルを変更できません
- ソースでデータを修正できません。
そのため(当面は)データが整ったら修正する必要があります。2 週間に 1 回、誰かがモデルを壊すようなことをするので、解決するにはプロシージャを少し変更する必要があります。理想的ではありませんが、私は今後 6 か月間これに固執しています。
とにかく、特定のクエリを作成するのは簡単ですが、全体像を追跡するのは難しいと思います. この上にあるアプリケーションは問題なく動作しますが、システム内を移動すると非常に混乱します。だから私の質問は:
- この種の状況である種の「壊れたツリー」ダイアグラムを生成するためのツール (または手法) を推奨できる人はいますか?
物事を修正したり、統計分析を試みたりするものは望んでいませんが、少なくとも、一度にどれだけ壊れているかを視覚的に示すものは必要です。
注: 現時点では、これは SQL Server データベースにありますが、C#、Perl、または Python を利用するアイデアを受け入れています。