Chargement de données hiérarchiques
Les hiérarchies déséquilibrées de niveau n sont souvent utilisées pour représenter, entre autres, des dimensions organisationnelles ou géographiques des données.
Les hiérarchies de ce type sont souvent stockées dans une table de nœuds adjacents, au sein d'une table où chaque enregistrement correspond à un nœud et comporte un champ contenant une référence au nœud parent.
NodeID | ParentNodeID | Titre |
---|---|---|
1 | - | General manager |
2 | 1 | Region manager |
3 | 2 | Branch manager |
4 | 3 | Department manager |
Dans une table de ce type, le nœud est stocké dans un seul enregistrement bien qu'il puisse comprendre plusieurs enfants. La table peut bien sûr comporter des champs supplémentaires décrivant les attributs des nœuds.
Les tables de nœuds adjacents sont idéales en matière de maintenance mais sont difficiles à utiliser au quotidien. Pour les requêtes et les analyses, d'autres représentations sont donc utilisées. La table de nœuds étendus est une représentation classique dans laquelle chaque niveau de la hiérarchie est stocké dans un champ distinct. Les niveaux d'une table de nœuds étendus peuvent facilement être utilisés, par exemple dans une structure arborescente. Le mot-clé hierarchy peut être utilisé dans le script de chargement de données pour transformer une table de nœuds adjacents en table de nœuds étendus.
NodeID | ParentNodeID | Titre | Title1 | Title2 | Title4 | Title4 |
---|---|---|---|---|---|---|
1 | - | General manager | General manager | - | - | - |
2 | 1 | Region manager | General manager | Region manager | - | - |
3 | 2 | Branch manager | General manager | Region manager | Branch manager | - |
4 | 3 | Department manager | General manager | Region manager | Branch manager | Department manager |
Dans une table de nœuds étendus, il est cependant difficile d'utiliser les champs de niveau pour les recherches ou les sélections, car vous devez connaître le niveau à parcourir ou à sélectionner. Une table des ancêtres est une représentation différente qui permet de résoudre ce problème. Cette représentation est également appelée table de correspondance.
Une table des ancêtres contient un enregistrement pour chaque relation enfant-ancêtre identifiée dans les données. Elle contient des clés et les noms des enfants, ainsi que ceux des ancêtres. En d'autres termes, chaque enregistrement décrit le nœud auquel appartient un nœud spécifique. Il est possible d'utiliser le mot-clé hierarchybelongsto dans le script de chargement de données pour transformer une table de nœuds adjacents en table des ancêtres.