Bonjour,

Je cherche les meilleurs pratiques pour utiliser les tables de jonctions lors de relations entre tables de type n:n, ainsi que créer un mapping pour coller le design pattern ActiveRecord de django, rails ou autre framework en lecture seule dessus.

Partie Jonction -------------------------------------------------
Pour l'instant, mes 2 tables (t_documents & t_auteurs) ont chacun un champ PK auto-incrémenté.
Elle sont en innoDB, choisi à priori pour l'intégrité des foreign key.

J'ai créé une table de jonction x_documents_auteurs avec 2colonnes de type INT not null.

Après, et c'est là dessus que je demande si ce que je fais est le plus optimisé, j'ai donc créé :
  • Un index unique sur (idDocument, idAuteur)
  • Foreign key (idDocument) references t_documents(id)
  • Foreign key (idAuteur) references t_auteurs(id)


Je me pose la question si c'est bien la bonne méthode, ou si je dois en plus ajouter des foreign key sur mes tables t_documents et t_auteurs. Ou même si c'est l'inverse. Car je ne trouve que des références à des tables 1:n, où la relation entre enfants et parent est triviale.

Partie Vue -------------------------------------------------
Ensuite, afin de mapper tout cela en un objet, le design pattern ActiveRecord est très conseillé dans le développement de sites web. Vu que mes tables sont atomiques, créer un objets référencant tous ses "fils" me parait simple (en terme de qualité, mais je ne sais pas évaluer ce genre de performances, innoDB semble plus lent que Myisam selon google) avec des vues!

Ma question sur ce point est quel est la bonne pratique?
* Utiliser une vue avec les seules infos qui m'intéressent (ex : l'id pour faire un url vers mon objet, et le nom pour le label). Mais j'ai un peu peur de créer des explosions combinatoires dûes à la multiplication des lignes.
L'idée est que à l'affichage de la page web, tous les liens apparraitront forcément.
(De plus, j'imagine que pour gérer des Tags, ca doit fonctionner comme ca?)
* Faire confiance à l'ORM et le laisser faire son travail? Quel est votre expérience là dessus? Gère t'il efficacement les jointures selon nos besoins les plus optimisés?

Conclusion -------------------------------------------------
Je cherche donc encore ma voie là dessus, et j'ai besoin de vos avis et conseils afin de réaliser un site propre.

J'espère avoir été clair et concis, et vous remercie par avance pour votre aide!

Paul