Vous avez écrit dans un commentaire ci-dessus:
le livre "Fundamentals of Database Systems" dit [...] qu'il est recommandé d'utiliser une table d'intersection s'il y a beaucoup de valeurs NULL dans la colonne de clé étrangère (par exemple: si 98% des employés ne gère pas de département)
Lorsqu'il y a beaucoup de valeurs NULL dans la colonne de clé étrangère, vos programmes devront traiter cette colonne, pour la plupart vide, pour chaque enregistrement qu'ils traitent. La colonne occupera probablement un peu d'espace disque même si dans 98% de tous les cas elle est vide, interroger la relation signifie interroger cette colonne qui vous donne plus de trafic réseau, et si vous utilisez un ORM qui vous génère des classes à partir de vos tables, de vos programmes aura également besoin de plus d'espace côté client que nécessaire. L'utilisation d'une table d'intersection évite cela, il n'y aura que des enregistrements de lien nécessaires où la clé étrangère équivalente ne serait pas NULL sinon.
En revanche, si vous n'avez pas seulement quelques valeurs NULL, disons que 50% ou plus de relations ne sont pas NULL, l'utilisation d'une table d'intersection vous donne l'effet inverse - plus d'espace disque, une complexité plus élevée entraînant plus de trafic réseau, etc.
Ainsi, l'utilisation d'une table d'intersection n'est qu'une forme d'optimisation, uniquement judicieuse pour un cas spécifique, et en particulier de nos jours, où l'espace disque et la mémoire sont devenus moins chers, et beaucoup moins souvent nécessaires. Notez que "Fundamentals of Database Systems" a été écrit à l'origine il y a plus de 20 ans (j'ai trouvé une référence à la deuxième édition de 1994), et je suppose que cette recommandation était déjà là à l'époque. Avant 1994, l'optimisation de l'espace était probablement beaucoup plus importante qu'aujourd'hui, car le stockage de masse était encore plus cher et les ordinateurs et les réseaux étaient beaucoup plus lents qu'aujourd'hui.
En guise de note complémentaire à un commentaire pointilleux: la déclaration ci-dessus tente simplement d'anticiper ce que l'auteur de "Fundamentals of Database Systems" avait à l'esprit avec sa recommandation, je suppose qu'il faisait une déclaration générale approximative, valable pour la plupart des systèmes. Dans certaines bases de données, il existe d'autres optimisations possibles, comme des "colonnes éparses", qui rendent l'utilisation d'une table d'intersection encore plus obsolète.
Alors, ne vous méprenez pas sur cette recommandation. Le livre ne vous dit pas de préférer les tables d'intersection pour les {0,1}:n
relations en général, ou - comme vous l'avez écrit - que c'est la "bonne façon". Utilisez des optimisations comme celle-ci qui ne compliqueront vos programmes que lorsque vous en aurez vraiment besoin.