Bonjour à tous,
J'hésite très souvent entre deux architectures Mysql sans réellement me décider entre l'une ou l'autre.
Le problème consiste à créer des liens entre deux tables : imaginons que j'ai un table pages et une table documents.
La première solution, la plus simple consiste a ajouter un index id_page à ma table document pour pouvoir récupérer les document qui correspondent à une page.
Imaginons maintenant que j'ai également des tables users, activities, events et products sur ma base, et que je veux également associer des documents à chacune de ses tables. Il va falloir rajouter à ma table document des champs id_users, id_activity etc...
Compliquons encore un peux et imaginons que je veuillent aussi pouvoir associer un document à plusieurs pages ou utilisateurs, le champ id_page pourra ressembler à 6|12|18, ce qui complique un peu les requêtes et les insertions.
L'autre solution consiste à utiliser des jointures ou des unions, c'est à dire que je n'ai pas d'id_page a ma table document, mais une table page_document qui fais le lien entre les deux tables, j'utilise ensuite les requêtes imbriquées pour récupérer les données.
Les deux solutions ont leur avantages et leurs inconvénients, mais je n'arrive à définir des critères clairs pour me décider entre l'une et l'autre, je décide un peu au feeling et des fois je m'aperçois au centième enregistrement que j'aurais peut-être du faire autrement... Auriez vous des articles sur le sujets ou bien des exemples de cas précis dans lequel il faut absolument utiliser une jointure et d'autre dans lequel c'est complètement inutile?
Modifié par matmat (03 Jun 2008 - 17:55)
J'hésite très souvent entre deux architectures Mysql sans réellement me décider entre l'une ou l'autre.
Le problème consiste à créer des liens entre deux tables : imaginons que j'ai un table pages et une table documents.
La première solution, la plus simple consiste a ajouter un index id_page à ma table document pour pouvoir récupérer les document qui correspondent à une page.
Imaginons maintenant que j'ai également des tables users, activities, events et products sur ma base, et que je veux également associer des documents à chacune de ses tables. Il va falloir rajouter à ma table document des champs id_users, id_activity etc...
Compliquons encore un peux et imaginons que je veuillent aussi pouvoir associer un document à plusieurs pages ou utilisateurs, le champ id_page pourra ressembler à 6|12|18, ce qui complique un peu les requêtes et les insertions.
L'autre solution consiste à utiliser des jointures ou des unions, c'est à dire que je n'ai pas d'id_page a ma table document, mais une table page_document qui fais le lien entre les deux tables, j'utilise ensuite les requêtes imbriquées pour récupérer les données.
Les deux solutions ont leur avantages et leurs inconvénients, mais je n'arrive à définir des critères clairs pour me décider entre l'une et l'autre, je décide un peu au feeling et des fois je m'aperçois au centième enregistrement que j'aurais peut-être du faire autrement... Auriez vous des articles sur le sujets ou bien des exemples de cas précis dans lequel il faut absolument utiliser une jointure et d'autre dans lequel c'est complètement inutile?
Modifié par matmat (03 Jun 2008 - 17:55)