Ce qu'est une base de données — différences avec un fichier, tables et SQL

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Une base de données prend en charge trois tâches : chercher, traiter les écritures qui arrivent en même temps et fixer la forme des enregistrements. Les schémas montrent la table faite de lignes et de colonnes, et le SQL qui commande les lectures et les écritures.

Cet article traite de la couche BDD, c'est-à-dire de la base de données.

Une base de données est un logiciel qui conserve les données sous une forme où on peut les chercher et les modifier.

Ce qui la distingue d'un fichier, ce n'est pas l'endroit où les enregistrements se trouvent, mais le fait qu'elle prend aussi en charge la recherche et la mise en ordre des écritures.

Les mots des livres d'initiation, et la place de la base de données, de la table et du SQL
===Enregistrer dansla base de donnéesCréer unetableÉcrire du SQLBase de donnéesTableSQLLogiciel de lacouche BDDUn tableau dansla base de donnéesInstructions dela couche App
La rangée du haut donne les mots employés dans les livres d'initiation, celle du milieu les trois termes traités ici, celle du bas leur place dans le modèle à trois couches. Les deux reliés par un trait double ne diffèrent que par la formulation : c'est la même chose.

En quoi une base de données diffère d'un fichier — chercher, écrire en même temps, fixer la forme

Une base de données n'est pas un simple contenant qui conserve des enregistrements.

Elle prend en charge trois tâches : trouver les lignes qui répondent à une condition, traiter l'une après l'autre les écritures arrivées en même temps, et uniformiser la forme des enregistrements.

Même arrivées à la même heure, les écritures sont traitées une par une, dans l'ordre.

Quand on écrit directement dans un fichier, c'est ton propre programme qui décide de cet ordre.

Qui tient chaque rôle, avec un fichier et avec une base de données
===Trouver les lignesqui correspondentGérer l'écrituresimultanéeFixer la formedes lignesTon programme littout et choisitDécider l'ordretoi-mêmeÀ l'écriture,faire attentionLa BDD renvoieles lignes vouluesLa BDD traitedans l'ordreRefus des lignesnon conformesPlus de lignes,plus c'est lentEn simultané,une ligne se perdMélange de formesdifférentes
La colonne de gauche donne le rôle, les deux colonnes du milieu le cas du fichier et celui de la base de données. La colonne de droite indique ce qui arrive souvent quand tu tiens le rôle toi-même.

Les bases de données les plus utilisées sont PostgreSQL, MySQL et SQLite.

Des enregistrements qu'une seule personne modifie, comme des réglages, peuvent rester dans un fichier sans problème.

Les enregistrements que plusieurs personnes lisent et écrivent en même temps et que l'on retrouve à partir d'une condition, voilà ce qui va dans une base de données.

La base de données prend en charge trois tâches

Avec un fichier comme avec une base de données, les enregistrements restent sur le stockage ; ce qui change, c'est qui fait la recherche, qui fixe l'ordre quand des écritures arrivent en même temps, et qui uniformise la forme des enregistrements.

Avec un fichier, ton propre programme fait tout ; avec une base de données, tu indiques seulement quels enregistrements tu veux, et les lignes dont la forme ne convient pas sont refusées par la base.

Une table conserve les enregistrements sous forme de tableau à lignes et colonnes

L'unité qui conserve les enregistrements dans une base de données est la table (table ; tableau fait de lignes et de colonnes qui regroupe des enregistrements de même nature).

ID réservationID membreDatePersonnes
1122026-10-032
272026-10-034
3122026-10-103

Chaque en-tête est une colonne (column ; un élément d'un enregistrement), et chaque trait horizontal en dessous est une ligne (row ; un enregistrement complet, aussi appelée « record »).

La colonne qui permet de désigner une ligne et une seule est la clé primaire (primary key ; colonne où deux lignes ne peuvent pas porter la même valeur).

Les colonnes sont décidées à l'avance, et une ligne s'ajoute à chaque nouvel enregistrement.

Le contenu de la base de données de l'application de réservation
La base de données de l'application de réservation
Réservations
  • Colonnes : ID réservation, ID membre, date, personnes
  • 1 ligne = 1 réservation
  • Une ligne s'ajoute à chaque réservation
Table des membres
  • Colonnes : ID membre, nom, adresse e-mail
  • 1 ligne = 1 membre
  • Une ligne s'ajoute à chaque inscription
Le cadre extérieur est une base de données. Les deux cadres intérieurs sont des tables, et chaque liste à puces donne les noms des colonnes et ce que représente une ligne.

La table des réservations ne contient pas le nom du membre, seulement l'ID membre.

Le nom se trouve à un seul endroit, la table des membres, donc s'il change, il n'y a qu'une ligne à corriger.

Une seule inscription se répartit dans deux tables
Demande d'Alice10/03 · 2 pers.Nom et e-mail :table membresDate et nombre :table réservationsTable membresmembre 12 · AliceTable réservationsrésa 1 · membre 12Même ID membre
L'élément unique de gauche se divise vers le haut et vers le bas, et chaque partie devient une ligne dans une table différente. Les deux à droite portent la même valeur, l'ID membre 12, ce qui permet de remonter d'une ligne de réservation jusqu'au nom.

Une base de données qui conserve les données sous forme de tableau à lignes et colonnes est une base de données relationnelle (relational database ; on écrit aussi RDB), et les tables peuvent être reliées entre elles par une colonne commune.

Ce que l'on fixe avant de créer une table est le schéma (schema ; le nom de la table, le nom des colonnes et la nature des valeurs de chaque colonne), et la nature des valeurs désigne des distinctions comme nombre, texte ou date ; on parle aussi de type (type).

Une table fixe d'abord ses colonnes, puis grandit par lignes

Une table est un tableau fait de colonnes verticales et de lignes horizontales.

Les noms des colonnes sont décidés à l'avance, une ligne s'ajoute à chaque nouvel enregistrement, et si tu places aussi dans une autre table la valeur de clé primaire qui identifie un enregistrement, les deux se relient.

Le SQL est la façon d'écrire les instructions de lecture et d'écriture que la couche serveur d'application envoie à la base de données

La façon d'écrire les instructions de lecture et d'écriture sur une table est le SQL (Structured Query Language ; langage qui commande la lecture, l'ajout, la modification et la suppression de lignes), et une instruction s'appelle une requête (query).

Les livres d'initiation le présentent sous la forme suivante.

SELECT date, guests
FROM reservations
WHERE member_id = 12;

Après SELECT viennent les colonnes à extraire, après FROM la table, et après WHERE la condition.

Ces trois lignes demandent la date et le nombre de personnes des lignes de la table des réservations dont l'ID membre vaut 12.

Le premier mot indique de quoi il s'agit : lecture, ajout, modification ou suppression.

Le premier mot décide de ce que fait la base de données
SELECT ...WHERE member_id= 12INSERT INTOreservations ...UPDATE ...SET guests = 4DELETE FROMreservations ...Choisir les lignesavec ID membre 12Ajouter une ligneaux réservationsModifier le nombre depersonnes de ces lignesEffacer les lignes viséesDate et nombre :2 lignes renvoyéesUne ligne en plus2 devient 4Une ligne en moins
À gauche le début de la requête envoyée, au milieu ce que fait la base de données, à droite ce qui revient et ce qui reste. Les trois du bas changent le nombre de lignes ; seul celui du haut est une lecture.

Chercher les lignes revient à la base de données, et la couche serveur d'application indique seulement quelles lignes elle veut.

Avec une modification ou une suppression, ce qui change n'est pas les lignes renvoyées mais les lignes qui restent dans la table.

Le composant qui permet de manipuler les tables dans la syntaxe du langage sans écrire de SQL est un ORM (Object-Relational Mapping ; composant qui manipule les lignes d'une table dans la syntaxe du langage, puis traduit cela en SQL avant de l'envoyer).

Que tu écrives le SQL toi-même ou que tu passes par un ORM, ce qui arrive est le même
Écrire du SQLEnvoyé tel quelÉcrire avec l'ORML'ORM convertiten SQLUne requête SQLarrive à la base
Les lignes que tu écris diffèrent en haut et en bas, mais elles se rejoignent à droite. Ce que reçoit la base de données est une requête SQL dans les deux cas.

Même avec un ORM, ce qui arrive est une requête SQL.

Écrire et exécuter du SQL soi-même est traité dans l'article SELECT du cours SQL pour débutants.

Le SQL est la façon d'indiquer les lignes que tu veux

Le SQL est la façon d'écrire une demande de lecture ou d'écriture adressée à une base de données.

Le premier mot décide s'il s'agit de lire, d'ajouter, de modifier ou de supprimer, tu indiques par une condition quelles lignes sont concernées, et la recherche est faite par la base de données.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Parmi les différences données dans cet article, laquelle justifie de conserver les réservations dans une base de données plutôt que dans un fichier ?

Question 2Qu'est-ce que la requête SELECT date, guests FROM reservations WHERE member_id = 12; demande ?

Question 3Pourquoi la table des réservations contient-elle l'ID membre et non le nom du membre ?