CodeGym /Cours /SQL SELF /Création de la table students et sa liaison...

Création de la table students et sa liaison avec la table courses

SQL SELF
Niveau 20 , Leçon 0
Disponible

On va prendre un peu de temps pour revoir ce qu'on a déjà vu. On va vraiment passer étape par étape sur tout ce qui se passe. La suite va reposer sur ce qu'on a déjà appris, donc c'est cool si tu piges parfaitement ce qui se passe à chaque commande.

Allez, on reprend notre exemple avec les étudiants et les cours. Depuis le tout début. De la création des tables jusqu'à l'explication de chaque étape. Prêt ?

On va maintenant créer la table students, qui va stocker les infos sur les étudiants, et on va la relier à la table courses grâce à une foreign key. Tu vas voir comment on utilise les foreign keys pour modéliser les relations entre les entités.

Création de la table students

La table students va contenir des infos sur les étudiants : leur identifiant unique, leur nom et leur date de naissance. On va la créer avec la commande CREATE TABLE.

CREATE TABLE students (
    student_id SERIAL PRIMARY KEY, -- Clé unique pour chaque enregistrement
    name TEXT NOT NULL,            -- Nom de l'étudiant (champ obligatoire)
    birth_date DATE                -- Date de naissance de l'étudiant
);

Qu'est-ce qui se passe ici ?

  1. student_id SERIAL PRIMARY KEY : C'est l'identifiant unique pour chaque étudiant. Le type SERIAL crée un champ auto-incrémenté, et PRIMARY KEY garantit que l'identifiant sera unique pour chaque ligne.
  2. name TEXT NOT NULL : Le champ pour le nom de l'étudiant. On a mis NOT NULL pour qu'aucun enregistrement ne puisse être inséré sans nom.
  3. birth_date DATE : Le champ pour stocker la date de naissance. Ici, le type DATE va nous aider à gérer les dates.

Si la table était une personne, student_id serait son passeport, name son prénom évident, et birth_date ce qu'on cache parfois, mais pour la base de données c'est important.

Création de la table courses

Maintenant, on va créer une table qui va contenir les infos sur les cours. Elle va inclure l'identifiant du cours, son titre et sa description.

CREATE TABLE courses (
    course_id SERIAL PRIMARY KEY,  -- Identifiant unique du cours
    title TEXT NOT NULL,           -- Titre du cours (champ obligatoire)
    description TEXT               -- Description du cours
);

Qu'est-ce qui se passe ici ?

  1. course_id SERIAL PRIMARY KEY : Pareil, c'est un champ auto-incrémenté qui crée un identifiant unique pour chaque cours.
  2. title TEXT NOT NULL : Le champ pour le titre du cours. On a mis NOT NULL parce que c'est logique qu'un cours ait un nom.
  3. description TEXT : Le champ pour une petite description du cours. C'est un champ en plus, il peut rester vide (pas de NOT NULL ici).

Un cours sans titre, c'est comme un livre sans couverture. Mais la base de données ne laissera pas passer ça !

Lier la table students à la table courses

Imaginons maintenant que chaque étudiant ne peut être inscrit qu'à un seul cours. Pour ça, on va ajouter une foreign key dans la table courses qui va pointer vers l'identifiant de l'étudiant dans la table students.

CREATE TABLE courses (
    course_id SERIAL PRIMARY KEY,  -- Identifiant unique du cours
    title TEXT NOT NULL,           -- Titre du cours (champ obligatoire)
    description TEXT,              -- Description du cours
    student_id INT REFERENCES students(student_id) -- Foreign key qui relie à la table students
);

Qu'est-ce que fait student_id INT REFERENCES students(student_id) ?

  1. On crée un champ student_id qui va pointer vers l'identifiant unique de l'étudiant (student_id) dans la table students.
  2. La liaison entre les tables se fait avec le mot-clé REFERENCES.
  3. Ça veut dire que chaque fois qu'on insère des données dans courses, la valeur de student_id doit exister dans la table students. Si, par exemple, tu essaies d'inscrire un étudiant à un cours avec un student_id qui n'existe pas, tu vas avoir une erreur.

Insérer des données dans les tables

Une fois les tables créées, on va ajouter quelques étudiants et cours. Parce que bon, une salle vide, c'est pas très fun, non ?

On ajoute des étudiants

INSERT INTO students (name, birth_date) VALUES
('Alex Lin', '2000-05-10'),
('Maria Chi', '1998-02-15'),
('Otto Song', '2001-09-25');

On ajoute des cours

INSERT INTO courses (title, description, student_id) VALUES
('Bases de SQL', 'Apprendre la syntaxe de base de SQL', 1),
('Bases de données relationnelles', 'Comprendre les modèles relationnels', 2),
('PostgreSQL pour les débutants', 'Installation et configuration de PostgreSQL', 3);

On a indiqué le student_id pour chaque cours, ce qui le relie à l'identifiant de l'étudiant dans la table students.

Vérifier la liaison entre les tables

Maintenant, on va vérifier que nos tables sont bien reliées. Pour ça, on va faire une requête qui affiche les infos sur les cours avec les noms des étudiants.

SELECT
    courses.title AS course_title,
    courses.description AS course_description,
    students.name AS student_name
FROM 
    courses
JOIN 
    students ON courses.student_id = students.student_id;

Exemple de résultat : Résultat de la requête :

course_title course_description student_name
Bases de SQL Apprendre la syntaxe de base de SQL Alex Lin
Bases de données relationnelles Comprendre les modèles relationnels Maria Chi
PostgreSQL pour les débutants Installation et configuration de PostgreSQL Otto Song

On a relié les cours aux étudiants via une foreign key — et maintenant on peut récupérer les données liées en une seule requête. Voilà comment marche le modèle relationnel !

Résumé

J'espère que tout ce qu'on vient de voir était clair et évident pour toi. Parce que bientôt on va aller plus loin, et ce serait top que tu sois bien à l'aise avec tout ça.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION