Le site du prof

Base de données

Niveau 0

Authentifiez-vous pour suivre votre progression !


Les Systèmes de Gestion de Base de données

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

Une base de données est un ensemble de fichiers permettant de conserver des données, souvent en très grand nombre, de manière organisée.

Nous avons vu l'année dernière qu'on peut faire cela à l'aide de fichiers texte, par exemple grâce aux formats csv et json, mais ces formats comportent deux inconvénients majeurs. D'abord, les données qui y sont stockées le sont de manière brute, sans faire de réel lien entre elles. Ensuite, si la quantité de données stockées devient importante, le temps d'ouverture des fichiers csv ou json va devenir long et risque de ralentir le programme. Avec une base de données relationnelle, les données sont, comme son nom l'indique, reliée entre elles.

Exemple

Prenons comme exemple une partie de la base de données de pronote.

Elle doit répertorier les enseignants, leur matière, leurs devoirs, mais aussi les élèves, leurs cours et leurs notes. Tous ces éléments sont évidemment reliés entre eux. Imaginons que l'on souhaite stocker cela au format csv. On pourrait imaginer un fichier qui contiendrait une ligne par note, avec, pour chaque ligne, le nom de l'élève, le devoir, le coefficient, l'enseignant et la matière. On arriverait alors rapidement à quelques centaines de milliers de lignes, à parcourir entièrement à chaque fois que l'on veut accéder à la moindre information.

A l'inverse, une base de données relationnelle pourrait être organisée ainsi :

  • Enseignant (Identifiant, Nom, Matière)
  • Eleve (Identifiant, Nom, Classe)
  • Devoir (Identifiant, #Id_Enseignant, Nom, Coefficient)
  • Note (Identifiant, #Id_Devoir, #Id_Eleve, Valeur)

Vocabulaire

Ceci est un schéma relationnel. Il permet de décrire la structure de la base de données, sans connaître son contenu. Nous reviendrons dessus plus tard.

On crée une table contenant les informations sur les enseignants :

Enseignant
IdentifiantNomMatière
1DupontSciences criminelles
2DupondProfilage
3HaddockNavigation
4TournesolSciences

Vocabulaire

Pourquoi un identifiant ? Parce qu'il permet d'identifier facilement une ligne du tableau de manière unique. On l'appelle la clé primaire de la relation.

Une table contenant les informations sur les élèves :

Eleve
IdentifiantNomClasse
1Grognon2°3
2Gourmand1°4
3MaladroitT5
4Farceur2°3

Une table contenant les informations sur les devoirs :

Devoir
IdentifiantId_EnseignantNomCoefficient
12Techniques d'investigation2
24Hybridation des roses1
33Les courants3

Vocabulaire

Observez l'attribut "Id_Enseignant". On l'appelle clé étrangère car il permet de pointer vers la clé primaire de la relation Enseignant, permettant ainsi de créer un lien entre ces deux relations.

Et enfin, une table qui référence les notes :

Note
IdentifiantId_DevoirId_EleveValeur
11112
21416
32313.6
43214

Les clés Id_Devoir et Id_Eleve sont des clés étrangères faisant référence aux relations correspondantes. Ainsi on peut si besoin (et seulement si besoin), obtenir toutes les informations concernant un élève ou l'enseignant à partir d'une note, même si ces informations ne sont pas directement stockées dans la table note.

Par exemple, on peut voir à partir de la note d'identifiant 3 que l'élève "Schtroumpf Maladroit", en T5, a eu 13.6 à son devoir sur l'hybridation des roses, donné par M. Tournesol.

Cela nécessite cependant que la référence id_devoir de la table Note pointe vers une ligne unique de la table Devoir. Récapitulons :

Récapitulatif

Vocabulaire

  • On appelle Relation une table d'une base de données (Enseignant, Eleve, Devoir et Note sont des relations).
  • Chaque ligne d'une relation est appelée un Enregistrement.
  • Les propriétés qui constituent chaque enregistrement s'appellent les attributs.

Important

  • Chaque relation doit impérativement avoir un attribut (ou un ensemble de plusieurs attributs) permettant de pointer de manière unique un enregistrement. Il s'agit de la clé primaire de la relation. On utilise souvent un identifiant entier pour cela, mais ce n'est pas obligatoire.
  • Pour faire référence à une autre relation, on utilise une clé étrangère. Il s'agit d'un attribut qui doit faire référence à la clé primaire d'une autre relation. Par exemple, l'attribut Id_Devoir est une clé étrangère de la relation Note, qui fait référence à la clé primaire Identifiant de la relation Devoir.

Schéma relationnel

Revenons au schéma relationnel proposé tout à l'heure. Pour rappel, il permet de décrire la structure de la base de données, sans considérer son contenu. :

  • Enseignant (Identifiant, Nom, Matière)
  • Eleve (Identifiant, Nom, Classe)
  • Devoir (Identifiant, #Id_Enseignant, Nom, Coefficient)
  • Note (Identifiant, #Id_Devoir, #Id_Eleve, Valeur)

On observe ici que chaque relation est décrite grâce à ses attributs. Les clés primaires sont soulinées, et les clés étrangères sont précédées du symbole dièse "#". Il ne s'agit pas d'une nomenclature officielle, mais elle est souvent utilisée.

En plus de ces informations, on trouve souvent une indication sur le type de données attendues par les attributs. On parle de domaine (comme le domaine d'une fonction en maths).

  • Enseignant (Identifiant INT, Nom TEXT, Matière TEXT)
  • Eleve (Identifiant INT, Nom TEXT, Classe TEXT)
  • Devoir (Identifiant INT, #Id_Enseignant INT, Nom TEXT, Coefficient REAL)
  • Note (Identifiant INT, #Id_Devoir INT, #Id_Eleve INT, Valeur REAL)

Les types utilisés dépendent du SGBD utilisé, mais retenez simplement ceux-ci : INT, TEXT (ou STRING) et REAL (ou FLOAT).


Système de Gestion de Base de Données (SGBD)

Un système de gestion de base de données est un ensemble de systèmes informatiques, logiciels et protocoles permettant de gérer une base de données. Il permet de fournir les services suivants :

Services fournis par un SGBD

  • Persistance des données : Le SGBD s'assure que les données ne sont pas perdues, grâce à des mécanismes de sauvegarde et de copie.
  • Gestion des accès concurrents : Le SGBD permet un accès simultané aux données par plusieurs utilisateurs.
  • Efficacité du traitement des requêtes : Le SGBD se charge de trouver la meilleure méthode pour effectuer une requête.
  • Sécurisation des accès : Le SGBD utilise un système d'authentification permettant de gérer les permissions d'accès.
  • Respect des contraintes d'intégrité : A tout moment, le SGBD s'assure que les données sont conformes à des contraintes :
    • Contrainte de domaine : Les données doivent correspondre aux domaines du schéma relationnel.
    • Contrainte de relation : Chaque enregistrement doit correspondre au schéma relationnel et avoir une clé primaire unique.
    • Contrainte de référence : Les clés étrangères doivent pointer vers une clé primaire existante.

Quelques exemples de SGBD utilisant le langage SQL (que nous allons voir dans le prochain cours) :

  • Open Source : MySQL, MariaDB, SQLite
  • Propriétaires : Oracle, Microsoft SQL Server