Bonjour Steph0,
Envoyé par
Steph0
Je me demandais si les associations réflexives étaient une mauvaise pratique en général.
==> non. Mais cela dépend du contexte : des règles de gestion.
De ce point de vue, ton exemple est significatif. Les données que tu présentes reflète ces règles de gestion :
- 1 salarié reporte à 0 (NULL) ou 1 seul supérieur hiérarchique ;
- 1 supérieur hiérarchique a, sous sa responsabilité, 1 ou n salariés.
donc :
1 2 3 4 5
| Salarie -0,1--+
| |
| [Reporter à]
| |
+---- 1,n--+ |
donnant :
Salarie(id, nom, ...)
Salarie_Superieur(idSalarie, #IdSalarieSuperieur, ...)
une table associative, à cause du fait qu'un salarié peut ne pas avoir de supérieur hiérarchique. En effet, la possibilité qu'une clé étrangère soit nulle est dangereuse performance, quota, etc...).
A contrario, si tes règles de gestion avaient été :
- 1 salarié reporte, obligatoirement, à 1 et 1 seul supérieur hiérarchique ;
- 1 supérieur hiérarchique a, sous sa responsabilité, 1 ou n salariés.
donc :
1 2 3 4 5
| Salarie -1,1--+
| |
| [Reporter à]
| |
+---- 1,n--+ |
donnant :
Salarie(id, nom, #IdSalarieSuperieur,...)
N.B : la solution de la table associative peut s'avérer payante, même dans le second cas : par exemple, si ton association (réflexive) doit posséder des attributs propres (date de collaboration entre idSalarie et IdSalarieSuperieur, ...).
Partager