4-01. Principes et architectures
Les bases de données sont devenues des outils indispensables pour stocker, organiser et exploiter efficacement des volumes croissants de données, que ce soit dans les entreprises, les administrations ou notre vie quotidienne.
Historique
Avant les bases de données, les informations étaient stockées dans des fichiers plats, ce qui rendait la recherche et la gestion difficiles. Dans les années 1970, le modèle relationnel (tables, SQL) a révolutionné le domaine par sa simplicité et sa souplesse. Depuis, d’autres modèles (NoSQL, bases orientées documents, etc.) sont apparus pour répondre à de nouveaux besoins, mais les bases relationnelles restent très utilisées aujourd’hui.
Un fichier est dit « plat » (flat file) s’il est simple (du texte) et sans structure interne complexe, ce qui le distingue des autres types de fichiers ou des bases de données.
Généralités
- Identifier les services rendus par un système de gestion de bases de données relationnelles : persistance des données, gestion des accès concurrents, efficacité de traitement des requêtes, sécurisation des accès.
Définition générale
Une base de données est un ensemble organisé d’informations, stockées de façon structurée, permettant de les retrouver, de les modifier et de les exploiter facilement. Elle sert à gérer efficacement de grandes quantités de données, souvent partagées entre plusieurs utilisateurs ou applications.
Exemples
- Carnet d’adresses : stocke les noms, adresses, numéros de téléphone de contacts.
- Bibliothèque : conserve la liste des livres, des auteurs, des emprunteurs, etc.
- Gestion des élèves d’un lycée : enregistre les informations sur les élèves, les classes, les notes.
Données, base de données et SGBD
Les données sont les informations brutes (par exemple : « Dupont, Jean, 15 ans »).
Une base de données est un ensemble structuré de ces données, organisées selon un modèle précis pour faciliter leur stockage et leur consultation.
Un Système de Gestion de Base de Données (SGBD) est le logiciel qui permet de créer, manipuler et interroger la base de données. C'est lui qui gère les accès, maintient l'intégrité et assure la sécurité des données.
Exemple : une liste de noms sur une feuille de papier représente des données simples. Ces mêmes noms organisés par catégories dans un classeur forment une base de données basique. Un logiciel comme Access ou MySQL qui permet de rechercher, modifier et sécuriser ces informations est un SGBD.
À quoi ça sert ?
Les bases de données et leur SGBD sont conçues pour stocker, organiser et retrouver l’information de manière rapide et fiable, même lorsqu’il s’agit de très grandes quantités de données. On s’en sert partout : gestion des comptes bancaires, réseaux sociaux, systèmes d’information des entreprises, sites de commerce en ligne, etc.
Contrairement aux fichiers classiques, qui deviennent vite difficiles à manipuler dès que les données se multiplient, une base de données permet d’éviter les erreurs, de limiter les redondances et d’assurer la cohérence des informations. Elle offre aussi des outils puissants pour rechercher, trier ou croiser les données, ce qui facilite grandement leur exploitation et leur sécurisation.
Le dialogue client-serveur
Lorsqu'un utilisateur souhaite accéder à des informations stockées dans une base de données, un dialogue s'établit entre différents composants.
Tout commence par le client – qui peut être un site web, une application mobile ou un utilisateur exécutant directement des commandes SQL – formulant une requête précise (par exemple : « donne-moi la liste des clients ayant commandé plus de 1000 € ce mois-ci »).
Cette requête est alors transmise à travers le réseau jusqu'au serveur hébergeant la base de données.
Le Système de Gestion de Base de Données (SGBD) prend alors le relais : il analyse la requête, vérifie les droits d'accès, identifie les tables concernées, et exécute les opérations demandées (filtrage, tri, calculs, jointures entre tables, etc.). Une fois le traitement terminé, le SGBD renvoie uniquement les données pertinentes au client.
Les différents types de BD
Le modèle relationnel
Le modèle relationnel, qui reste le plus répandu aujourd'hui, organise les données sous forme de tables (appelées aussi relations) composées de lignes et de colonnes. Chaque table représente un type d'entité (clients, produits, commandes...) et les relations entre ces entités sont gérées par des clés.
Exemple : Une base de données d'un lycée pourrait avoir une table « Élèves »
| ID | Nom | Prénom | Classe | Date_Naissance |
|---|---|---|---|---|
| 1 | Martin | Emma | Terminale 1 | 15/03/2008 |
| 2 | Dubois | Lucas | Première 2 | 27/09/2009 |
Et une table « Notes » qui serait liée à la table « Élèves » via l'ID de l'élève.
Les modèles non relationnels (NoSQL)
Face à de nouveaux besoins (données massives, structures variables, haute disponibilité), plusieurs alternatives au modèle relationnel sont apparus.
Exemple avec MongoDB : Au lieu d'avoir plusieurs tables reliées, on pourrait stocker un élève avec ses notes dans un seul document JSON.
{
"id": 1,
"nom": "Martin",
"prenom": "Emma",
"classe": "Terminale 1",
"date_naissance": "15/03/2008",
"notes": [
{ "matiere": "Mathématiques", "valeur": 16 },
{ "matiere": "Physique", "valeur": 14 },
{ "matiere": "NSI", "valeur": 18 }
]
}
Pourquoi différents modèles ?
Chaque modèle répond à des besoins spécifiques :
- Le modèle relationnel excelle dans les applications où l'intégrité des données et les relations complexes sont prioritaires (gestion bancaire, systèmes d'information d'entreprise).
- Les modèles NoSQL sont souvent plus adaptés aux applications web à grande échelle, aux données non structurées, ou aux cas nécessitant une extensibilité horizontale, c’est-à-dire la répartition de la BD sur plusieurs machines (réseaux sociaux, IoT, applications temps réel).
Le choix d'un modèle dépend donc de la nature des données à stocker, du volume attendu, des types de requêtes à effectuer et des exigences en termes de performance et de cohérence.
Fonctions d’un SGBD
Un Système de Gestion de Base de Données offre bien plus que le simple stockage d'informations. Il assure plusieurs fonctions essentielles :
- Gestion des accès simultanés : il permet à plusieurs personnes de consulter ou modifier les données en même temps sans créer de conflits.
- Contrôle des droits d'accès : il définit qui peut voir ou modifier quelles informations (par exemple, un élève ne peut pas modifier ses notes, mais un professeur le peut).
- Rapidité des recherches : grâce à des techniques spéciales (comme les index), il peut retrouver rapidement une information parmi des millions de données.
- Protection des données : il crée des sauvegardes et peut chiffrer les informations sensibles pour éviter les pertes ou les vols de données.
- Vérification des données : il s'assure que les informations respectent certaines règles (par exemple, qu'une note est bien comprise entre 0 et 20).
Découvrir les bases de données relationnelles
Partie A. Une méthode (trop) simple
Madame B., professeur d’anglais, met à disposition de ses élèves des livres en anglais dont elle souhaite gérer les emprunts. Pour cela, elle a créé la table suivante dans une feuille de tableur. Quand un élève emprunte un livre elle ajoute une ligne contenant toutes les informations sur le livre et l’élève, ainsi que la date de l’emprunt. Quand l’élève rend le livre, elle efface la ligne correspond à l’ouvrage.
| Titre | Année | Auteur | Nationalité | Carte | Emprunteur | Classe | Date emprunt |
|---|---|---|---|---|---|---|---|
| Animal Farm | 1945 | George Orwell | Britannique | E073 | Lucas | 1e 2 | 19/09/2024 |
| The Catcher in the Rye | 1951 | J.D. Salinger | Américaine | E102 | Thomas | 1e 2 | 26/09/2024 |
| To Kill a Mockingbird | 1960 | Harper Lee | Américaine | E084 | Julie | 1e 1 | 03/10/2024 |
| Lord of the Flies | 1954 | William Golding | Britannique | E092 | Maxime | 1e 1 | 22/10/2024 |
| The Fault in Our Stars | 2012 | John Green | Américaine | E125 | Nicolas | 1e 2 | 04/11/2024 |
| Pride and Prejudice | 1813 | Jane Austen | Britannique | E145 | Sophie | 2nde 1 | 15/11/2024 |
| Brave New World | 1932 | Aldous Huxley | Britannique | E137 | Emma | 1e 1 | 05/12/2024 |
| The Great Gatsby | 1925 | F. Scott Fitzgerald | Américaine | E118 | Camille | 2nde 1 | 08/01/2025 |
| The Picture of Dorian Gray | 1890 | Oscar Wilde | Irlandaise | E081 | Nicolas | 1e 2 | 13/01/2025 |
| The Curious Incident of the Dog in the Night-Time | 2003 | Mark Haddon | Britannique | E056 | Emma | 1e 1 | 17/02/2025 |
| Of Mice and Men | 1937 | John Steinbeck | Américaine | E109 | Chloé | 1e 1 | 26/02/2025 |
1. Une méthode de gestion simple…
- Quels sont les descripteurs (= colonnes) de cette table ?
- Combien y a-t-il de livres empruntés ?
- Combien d’élèves ont emprunté un ou plusieurs livres ?
- Camille emprunte The Lord of The Ring: The Fellowship of the Ring de J.R.R Tolkien paru en 1954. Que doit faire Madame B. ?
- Pourquoi la méthode utilisée par Madame B. semble simple ?
2. … ou pas…
- Madame B. vient d’acheter un livre : Hyperion de Dans Simmons, édité en 1989. Que doit-on faire ?
- Maxime rend le seul livre qu’il a emprunté : Lord of the Flies. Que doit-on faire ?
- Il emprunte Animal Farm qui vient d’être rendu par Lucas. Que doit-on faire ? Qu’en pensez-vous ?
- Emma change de classe pour suivre la spécialité NSI. Elle est maintenant en 1ère 2. Que doit-on faire ?
- Quels livres sont disponibles à l’emprunt ?
- Pourquoi la méthode utilisée par Madame B. n’est finalement pas aussi si simple qu’elle paraissait ?
Partie B. Une méthode plus élaborée
Afin de mieux gérer les emprunts, Madame B. décide de créer plusieurs tables :
| id | titre | année | id_auteur |
|---|---|---|---|
| 1 | Animal Farm | 1945 | 1 |
| 2 | The Catcher in the Rye | 1951 | 2 |
| 3 | To Kill a Mockingbird | 1960 | 3 |
| 4 | Lord of the Flies | 1954 | 4 |
| 5 | The Fault in Our Stars | 2012 | 5 |
| 6 | Pride and Prejudice | 1813 | 6 |
| 7 | Brave New World | 1932 | 7 |
| 8 | The Great Gatsby | 1925 | 8 |
| 9 | The Picture of Dorian Gray | 1890 | 9 |
| 10 | The Curious Incident of the Dog in the Night-Time | 2003 | 10 |
| 11 | Of Mice and Men | 1937 | 11 |
| 12 | Hyperion | 1989 | 12 |
| 13 | The Lord of the Rings: The Fellowship of the Ring | 1954 | 13 |
| 14 | The Lord of the Rings: The Two Towers | 1954 | 13 |
| 15 | The Lord of the Rings: The Return of the King | 1955 | 13 |
| id | nom | nationalité |
|---|---|---|
| 1 | George Orwell | Britannique |
| 2 | J.D. Salinger | Américaine |
| 3 | Harper Lee | Américaine |
| 4 | William Golding | Britannique |
| 5 | John Green | Américaine |
| 6 | Jane Austen | Britannique |
| 7 | Aldous Huxley | Britannique |
| 8 | F. Scott Fitzgerald | Américaine |
| 9 | Oscar Wilde | Irlandaise |
| 10 | Mark Haddon | Britannique |
| 11 | John Steinbeck | Américaine |
| 12 | Dan Simmons | Américaine |
| 13 | J.R.R. Tolkien | Britannique |
| id | nom | classe | carte |
|---|---|---|---|
| 1 | Lucas | 1e 2 | E073 |
| 2 | Thomas | 1e 2 | E102 |
| 3 | Julie | 1e 1 | E084 |
| 4 | Maxime | 1e 1 | E092 |
| 5 | Nicolas | 1e 2 | E125 |
| 6 | Sophie | 2nde 1 | E145 |
| 7 | Emma | 1e 1 | E137 |
| 8 | Camille | 2nde 1 | E118 |
| 9 | Chloé | 1e 1 | E109 |
| id_livre | id_eleve | date |
|---|---|---|
| 1 | 1 | 19/09/2024 |
| 2 | 2 | 26/09/2024 |
| 3 | 3 | 03/10/2024 |
| 4 | 4 | 22/10/2024 |
| 5 | 5 | 04/11/2024 |
| 6 | 6 | 15/11/2024 |
| 7 | 7 | 05/12/2024 |
| 8 | 8 | 08/01/2025 |
| 9 | 5 | 13/01/2025 |
| 10 | 7 | 17/02/2025 |
| 11 | 9 | 26/02/2025 |
1. Une méthode de gestion plus élaborée.
- Camille emprunte Lord of the Rings: The Fellowship of the Ring. Que doit-on faire ?
- Combien y a t il de livres empruntés ?
- Combien d’élèves ont emprunté un ou plusieurs livres ?
- Madame B. vient d’acheter un livre : The Fall of Hyperion de Dan Simmons, édité en 1990. Que doit-on faire ?
- Un matin, Nicolas rend le seul livre qu’il a emprunté : The Fault in Our Stars. Que doit-on faire ?
- Le soir, il emprunte Lord of the Flies qui vient d’être rendu par Maxime. Que doit-on faire ? Qu’en pensez-vous ?
- Emma change de classe pour suivre la spécialité NSI. Elle est maintenant en 1ère 2. Que doit-on faire ?
- Quels livres sont disponibles à l’emprunt ?
2. Recherches dans une table donnée.
- Quel est le titre du livre paru en dernier ?
- Combien de livres ont été publiés après 1980 ?
- Quel est le prénom de l’emprunteur qui a un numéro de carte le plus récent ?
- Quels sont les prénoms des emprunteurs de Seconde 6, classés par ordre alphabétique ?
3. Recherches croisées.
- Quel est le nom de l’auteur du livre d’id 6 ?
- Quel est le titre du livre écrit par John Green ?
- Combien de livres a écrit J.R.R Tolkien ?
- Quels livres a empruntés Emma (classés par ordre alphabétique du titre) ?
- Quels livres ne sont pas empruntés (classés par date de parution) ?
- Qui a emprunté le livre le plus récent ?
4. Bilan. Que peut-on dire de cette méthode de gestion par rapport à celle de la partie A ?
Structure d’une base de données relationnelle
- Identifier les concepts définissant le modèle relationnel (relation, attribut, domaine, clef primaire, clef étrangère, schéma relationnel)
- Savoir distinguer la structure d’une base de données de son contenu.
Vocabulaire
Relations
La structure d’une base de données relationnelle repose sur des relations (au sens mathématique), que l’on représente sous la forme de tables à deux dimensions.
Le terme relationnel dans base de données relationnelle vient de la théorie mathématique des relations en algèbre relationnelle, et non du mot relation au sens courant (comme une relation entre deux personnes).
En mathématiques, une relation est un ensemble de tuples, où chaque tuple est une liste de valeurs.
Par exemple, une relation "Personnes" pourrait être un ensemble de tuples tels que : (Alice, 30, Paris), (Bob, 25, Lyon), etc.
L’exemple ci-dessous est une visualisation, sous forme d’une table, d’une relation dont le nom est Livres, qui permet de représenter des livres. Plusieurs livres sont représentés dans la relation.
| id | titre | année | id_auteur |
|---|---|---|---|
| 1 | Animal Farm | 1945 | 1 |
| 2 | The Catcher in the Rye | 1951 | 2 |
| 3 | To Kill a Mockingbird | 1960 | 3 |
| 4 | Lord of the Flies | 1954 | 4 |
| 5 | The Fault in Our Stars | 2012 | 5 |
| 6 | Pride and Prejudice | 1813 | 6 |
| 7 | Brave New World | 1932 | 7 |
| 8 | The Great Gatsby | 1925 | 8 |
| 9 | The Picture of Dorian Gray | 1890 | 9 |
| 10 | The Curious Incident of the Dog in the Night-Time | 2003 | 10 |
| 11 | Of Mice and Men | 1937 | 11 |
| 12 | Hyperion | 1989 | 12 |
| 13 | The Lord of the Rings: The Fellowship of the Ring | 1954 | 13 |
| 14 | The Lord of the Rings: The Two Towers | 1954 | 13 |
| 15 | The Lord of the Rings: The Return of the King | 1955 | 13 |
Attributs
Dans cette relation, chaque livre est décrit par des caractéristiques : son identifiant, son titre, son année de parution et l’identifiant de l’auteur.
Toute caractéristique décrivant un élément d’une relation s’appelle attribut de la relation.
L’ensemble des attributs d’une relation constitue le schéma de la relation. Celui-ci se retrouve sur la ligne d’entête de la table.
Entrée et instance
On appelle « n-uplet » (ou plus souvent ligne ou entrée), toute ligne d’une relation. Il contient les caractéristiques d’un élément précis de la relation.
L’ensemble des entrées d’une relation compose une instance de la relation.
Pour résumer
Contraintes d’intégrité
Lorsqu’un utilisateur veut insérer des données dans une relation, il est nécessaire d’avoir des contrôles afin d’éviter des insertions de données aberrantes ou redondantes.
Une contrainte d’intégrité une propriété que les données doivent satisfaire. Les contraintes d’intégrité sont des règles qui édictent les propriétés que doivent respecter les valeurs des attributs afin de garantir leur cohérence, leur pertinence et leur validité.
Les différents types de contraintes d’intégrité
Contrainte de domaine
Elle a pour objectif d’éviter d’avoir des entrées incohérentes. Toute valeur d’attribut doit appartenir à un domaine défini pour cet attribut, qui est un ensemble (fini ou infini) de valeurs permises.
Contrainte d’unicité
Elle a pour objectif de permettre l’identification d’une entrée de façon unique afin d’éviter, par exemple, la redondance d’information. Pour cela, on va chercher un ou plusieurs attributs dont les valeurs permettent d’identifier une entrée de façon unique. Cet ensemble d’attributs s’appelle la clé primaire.
Contrainte d’inclusion
Elle a pour objectif de s’assurer qu’un attribut qui fait référence à une entrée d’une autre table a une valeur possible. Cet attribut est appelé une clé étrangère.
Précision à propos des clés étrangères
Dans une base de données relationnelle, la contrainte d'inclusion est un type de contrainte d'intégrité qui assure qu'un attribut faisant référence à une entrée dans une autre table possède une valeur existante dans cette table. Une clé étrangère est l'implémentation technique de cette contrainte - c'est un attribut (ou ensemble d'attributs) dans une table qui fait référence à la clé primaire d'une autre table. La contrainte d'inclusion définit donc le principe général (s'assurer que les références entre tables sont valides), tandis que la clé étrangère est le mécanisme concret qui établit et maintient cette relation, garantissant l'intégrité référentielle des données et permettant la création de liens structurés entre différentes tables.
Exemples dans la relation Livres :
- Le domaine de l’attribut Titre pourrait correspondre à l’ensemble des chaînes de caractère comprenant entre 1 et 255 caractères ;
- Le domaine de l’attribut Année pourrait correspondre à l’ensemble des entiers inférieurs ou égaux à l’année en cours.
- La clé primaire de la table serait l’id. On peut en effet envisager que deux livres différents puissent avoir le même titre.
- L’attribut id_auteur de la table Livres est une clé étrangère qui fait référence à une valeur d’attribut d’une autre table. Il faut s’assurer que la valeur utilisée dans la table Livres existe effectivement dans la table Auteur.
Schéma relationnel
Lorsqu’une base de données relationnelle contient plusieurs relations, on représente cette base sous la forme d’un schéma relationnel contenant l’ensemble des schémas des relations dans lesquels on indique, si elles existent, les clés primaires et les clés étrangères.
Dans ce schéma, les clés primaire sont représentées en bleu et les clés étrangères sont représentées en vert.