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.