Chapitre 10Projet DevBlog

Relations et jointures — Catégories et commentaires

JOIN SQL, relations 1-N, sidebar catégories et commentaires

Concepts Théoriques

Les bases de données relationnelles tirent leur puissance des relations entre les tables. Au lieu de stocker le nom de la catégorie dans chaque article (redondance), on stocke un category_id qui pointe vers la table categories.

Types de relations

Un-à-plusieurs (1-N) : Une catégorie a PLUSIEURS articles. Un article appartient à UNE catégorie. La clé étrangère (category_id) est dans la table "plusieurs" (articles).

Plusieurs-à-plusieurs (N-N) : Un article peut avoir PLUSIEURS tags, et un tag peut être sur PLUSIEURS articles. Nécessite une table intermédiaire (article_tag avec article_id et tag_id).

Les jointures SQL

Les jointures combinent les données de plusieurs tables en une seule requête :

INNER JOIN — retourne seulement les lignes qui ont une correspondance dans les DEUX tables. Si un article n'a pas de catégorie, il n'apparaît pas.

LEFT JOIN — retourne TOUTES les lignes de la table de gauche, même sans correspondance. Si une catégorie n'a aucun article, elle apparaît quand même avec des valeurs NULL pour les colonnes de la table articles.

Aliases

Pour éviter les ambiguïtés quand deux tables ont des colonnes du même nom (comme "id") :

SELECT a.id, a.title, c.name AS category_name FROM articles a INNER JOIN categories c ON a.category_id = c.id

"a" est l'alias de articles, "c" de categories. AS renomme une colonne dans le résultat.