Qu'est-ce qu'une base de données ?

Une base de données est un ensemble structuré d’informations (de données) stockées de manière organisée afin de pouvoir être consultées, modifiées et gérées facilement.

Aujourd'hui les données sont partout. Chaque produit, chaque objet et chaque service connecté repose sur une base de données pour fonctionner et interagir avec les utilisateurs.

Pour qu’une base de données soit efficace, elle doit être bien conçue. C’est pour cela que l’on suit plusieurs étapes de conception avant de la créer réellement.

Tout au long de ce cours, je vous propose de réaliser une base de données pour un collège qui aimerait gérer ses informations de manière organisée : élèves, classes, professeurs et matières. Nous verrons toutes les différentes étapes pour la conception de cette base de données. Nous finirons par voir comment interagir avec notre base de données.

Qu'est-ce que le Modèle Conceptuel de Données (MCD) ?

Notre collège souhaite savoir quel(s) professeur(s) enseigne(nt), dans quelle(s) classe(s), quelle matière est enseignée et quels sont leurs élèves. Voilà les informations (ou données) qui seront stockées dans notre base de données.

La première étape est de faire un MCD. Ce modèle permet de faire un premier schéma de la structure de notre base de données. On va écrire ici les données que l'on veut stocker et regarder les relations qu'il pourrait y avoir entre elles.

Illustrons pour l'instant cela :

Illustration MCD

Voici un MCD. C'est le schéma de notre base de données. Examinons le en détails.

Chaque rectangle représente une entité. Il y a donc 4 entités ici ;

Chaque entité(ou table) possède des attributs qui la caractérisent. Les attributs correspondent aux informations que l’on souhaite stocker pour chaque entité. Plus tard, lorsque l'on intérogera notre base de données, ce sont ces données que l'on cherchera.

Chaque entité possède aussi un unique identifiant appelé clé primaire, qui permet de différencier chaque attribut dans la table et d’établir des liens avec d’autres tables grâce aux clés étrangères (que l'on verra par la suite).

On peut ainsi relier nos entités entre elles et donc créer des relations (ou associations). C'est grâce à elles que l'on peut voir comment les entités communiquent entre elles. Par exemple, dans notre MCD, nous pouvons voir qu'un élève (l'entité 1) peut appartenir (relation) à une classe (relation 2). Aussi, un professeur (entité), peut enseigner (relation) une matière (entité) et cette dernière peut être suivie (relation) par une ou plusieurs classe (entité).

Il y a une dernière chose à comprendre pour bien réaliser notre MCD ce sont les cardinalités. Ce sont les chiffres que vous voyez entre les entités et les relations. Leurs valeurs sont de 0, 1 ou n. Et pour l'expliquer simplement, les cardinalités sont là pour indiquer "combien de fois une entité peut être liée à une autre". La valeur de gauche indique le minimum et celle de droite, le maximum (Et le maximum ne peut pas être égal à 0, ce qui paraît logique, car si une entité ne peut pas avoir de relation, à quoi sert-elle ?).

Pour faire simple, en une phrase, le MCD sert à représenter visuellement les données d’un système, afin de comprendre comment elles s’organisent et communiquent avant de créer la base de données.

Qu'est-ce que le Modèle Logique de Données (MLD) ?

En réalité, la construction de notre base de données est finie. Après le MCD, notre base de données est faite. Seulement le MCD est compréhensible seulement par nous les humains et nos machines ne peuvent pas comprendre notre base de données comme cela. C'est pour cela que nous allons transformer le MCD en MLD.

Illustration MLD

Voici le MLD de notre MCD. Pour faire cette transformation, nous avons besoin de 3 règles. Les voici :

Et voilà. Le MLD est finie. Passons à la suite et créons la base de données dans un SGBD.

Qu'est-ce qu'un SGBD ?

Dernière étape ! Le SGBD. Cela signifie Système de Gestion de Base de Données. Son nom parle pour lui-même, c’est un logiciel qui permet de créer, stocker, organiser et gérer des données.

Il en existe plusieurs, comme par exemple : MySQL, Oracle ou encore MariaDB.

Nous allons donc créer notre base de données sur un SGBD (MySQL). Il faut savoir qu'à partir de ce moment nous allons utiliser le langage SQL pour communiquer avec notre SGBD.

Créons notre base de données ainsi que ces tables Détaillons le code ensemble.


CREATE DATABASE Collège;

USE Collège;
            

Ici, nous avons d'abord créé la base de données "Collège". Puis nous avons dis à notre SGBD de l'utiliser.


CREATE TABLE Classe (
  ID_Classe INT AUTO_INCREMENT PRIMARY KEY,
  Niveau VARCHAR(50) NOT NULL
);
            

Nous avons créé la première table avec "CREATE TABLE". Nous avons ensuite défini les attributs de cette table (que l'on avait défini dans le MCD et le MLD). "PRIMARY KEY" permet d'indiquer ici la clé primaire et "AUTO_INCREMENT" permet d'incrémenter automatiquement cette valeur. Et enfin le "VARCHAR(50)" permet de dire que l'attribut Niveau est une chaîne de caractères de maximum 50 caractères.


CREATE TABLE Eleve (
  ID_Eleve INT AUTO_INCREMENT PRIMARY KEY,
  Prenom VARCHAR(50) NOT NULL,
  NomFamille VARCHAR(50) NOT NULL,
  ID_Classe INT,
  FOREIGN KEY (ID_Classe) REFERENCES Classe(ID_Classe)
);
            

Ici nous pouvons voir qu'il y a une chose de différente par rapport à la dernière table, c'est l'introduction d'une clé étrangère (ID_Classe). Elle est définie par "FOREIGN KEY" et il faut bien mettre l'origine de cette clé, à savoir la table Classe. C'est pour cela que nous avons créé la table Classe avant celle-ci car le SGBD exécute le code de manière chronologique. Si on avait défini la clé étrangère "ID_Classe" avant d'avoir défini la table Classe, le SGDB aurait remonté une erreur.

Finissons notre base de données, avec les autres tables.


CREATE TABLE Matiere (
  ID_Matiere INT AUTO_INCREMENT PRIMARY KEY,
  NomMatiere VARCHAR(50) NOT NULL
);

CREATE TABLE Suivre (
    ID_Classe INT,
    ID_Matiere INT,
    PRIMARY KEY (ID_Classe, ID_Matiere),
    FOREIGN KEY (ID_Classe) REFERENCES Classe(ID_Classe),
    FOREIGN KEY (ID_Matiere) REFERENCES Matiere(ID_Matiere)
);
            

Notre base de données est entièrement créée. Maintenant nous pouvons faire des requêtes pour insérer nos données et intéragir avec elles.