Bonjour à tous,
Je m'interroge sur la viabilité d'un modèle de données. C'est un cas très classique (je pense) et je me demande si ma conception est optimum.
Il s'agit de publications qui contiennent des articles. Nous avons donc :
Si je veux tous les articles d'une publication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CREATE TABLE publications (id INT, ...) CREATE TABLE articles (id INT, publication INT, titre TEXT, ...)
Jusqu'ici, rien que de très normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM article WHERE publication=???
Mon soucis intervient lorsque je veux afficher n publications avec leurs articles. Cela implique n*2 requêtes : n pour récupérer les données de publications, et n pour celles des articles. Evidemment, on peut condenser cela en une seule requête du type :
Toutefois, deux soucis à cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT * FROM articles INNER JOIN publications ON (publications.id=articles.publication) WHERE publications.id=??? OR publications.id=???, etc.
- si x est le nombre d'articles, on a x fois la même information à propos de la publication. Dépense de mémoire inutile.
- il peut arriver que dans un contexte donné, dont je vous épargne les détails, il ne soit pas possible de faire ce type de requête.
D'où ma question : mon schéma est il le seul valable ? Y a t'il quelque chose de plus adapté ?
Merci
Antoine
Partager