par
zeus » 19 nov. 2012, 11:41
Si on prend ta description
stricto sensu, on a 3 tables :
- prof
- diplôme
- établissement
Comme tu as des relations n:m entre chaque associations (un profs peut enseigner dans plusieurs établissements, mais un établissement peut avoir plusieurs profs), il faut une table d'association entre chaque entité.
- prof_diplome
- diplôme_etablissement
- établissement_prof
Maintenant, et comme tu le soulève justement, ce ne sont pas 3 entités complètements distinctes : un prof enseigne un diplôme dans un établissement. Un prof sans diplôme dans un établissement à autant d'intérêt qu'un établissement enseignant un diplôme, mais sans prof, ou d'un prof enseignant un diplôme sans établissement.
Du coup, tu pourrais passer par une unique table d'association entre les 3 tables.
Avantage plusieurs tables d'associations :
Tu es plus souple, tu peux t'adapter à des cas tordus (tu veux modéliser qu'un prof enseigne un diplôme avant qu'il soit assigné à un établissement, ou qu'un établissement enseigne un diplôme avant d'avoir son prof)
Mais tu autorises que tes données ne soient pas carrées
Avantage unique table d'associations :
Tes données sont propres, auto-validées (tu ne peux pas insérer de données incomplètes