Leçon 1.3 · Temps de lecture : ~10 min
Une base de données relationnelle organise les données dans des tables liées par des clés. Dans cette leçon, vous apprendrez les composants fondamentaux — tables, colonnes, lignes, clés primaires, étrangères et uniques — et découvrirez comment le modèle ACID garantit la fiabilité des transactions même en cas de panne ou d'accès concurrents.
Dans la leçon précédente, nous avons introduit le concept de base de données et les principaux types de BDD. Maintenant, nous allons approfondir les composants centraux des bases relationnelles, essentiels pour comprendre comment les données sont organisées et consultées via SQL.

Les bases relationnelles organisent les données en structures appelées tables. Pensez à une table comme à une feuille de calcul :
Exemple :
Visualisons une table "Customers" simple :
| CustomerID | FirstName | LastName | |
|---|---|---|---|
| 1 | John | Doe | john.doe@example.com |
| 2 | Jane | Smith | jane.smith@example.com |
| 3 | David | Lee | david.lee@example.com |
Les clés sont cruciales en relationnel : elles établissent des relations entre tables et font respecter l'intégrité des données. Principaux types :
Une contrainte est une règle appliquée à une colonne ou à une table que le moteur de base de données applique automatiquement. Les clés (primaire, étrangère, unique) sont un type de contrainte. Voici les autres contraintes importantes utilisées au quotidien en SQL :
| Contrainte | Rôle |
|---|---|
NOT NULL | La colonne doit toujours avoir une valeur ; NULL est interdit. |
UNIQUE | Toutes les valeurs de la colonne doivent être distinctes. |
PRIMARY KEY | Combine NOT NULL + UNIQUE ; identifie chaque ligne de manière unique. |
FOREIGN KEY | La valeur doit correspondre à une valeur existante dans une autre table. |
CHECK | La valeur doit satisfaire une condition, p. ex. age >= 0. |
Par exemple, une table customers peut définir plusieurs contraintes à la fois :
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
age INTEGER CHECK (age >= 0),
country VARCHAR(100) DEFAULT 'Unknown'
);
Le moteur de base de données rejettera automatiquement tout INSERT ou UPDATE qui viole ces règles, assurant la cohérence des données sans logique supplémentaire côté application.
Dans les bases relationnelles, une autre notion fondamentale est le modèle ACID. ACID définit les propriétés qui rendent les transactions sûres et fiables.
Une transaction est un groupe d'opérations traité comme une seule unité de travail. Par exemple, un virement bancaire entre deux comptes implique généralement au moins deux opérations :
Ces deux étapes doivent réussir ensemble, sinon aucune ne doit être appliquée.
ACID signifie :
Ces propriétés sont essentielles dans des systèmes réels comme la banque, l'e-commerce ou la gestion des stocks, où des mises à jour partielles ou incorrectes peuvent avoir de lourdes conséquences.
Points clés de cette leçon :
NOT NULL, CHECK) sont appliquées automatiquement par le moteur de base de données.Dans la leçon suivante, nous découvrirons les types de données de base utilisés dans les bases relationnelles et comment choisir le bon type pour chaque colonne.
Une clé primaire identifie chaque ligne de façon unique et ne peut pas être NULL. Une table ne peut avoir qu'une seule clé primaire. Une clé unique garantit aussi l'unicité, mais peut autoriser des valeurs NULL, et une table peut en avoir plusieurs. Utilisez la clé primaire comme identifiant principal de la ligne ; les clés uniques servent à imposer l'unicité sur d'autres colonnes, comme email.
Oui. Une clé étrangère peut référencer toute colonne (ou ensemble de colonnes) disposant d'une contrainte d'unicité, pas uniquement la clé primaire. Cependant, référencer la clé primaire reste la pratique la plus courante et recommandée.
L'atomicité garantit que toute la transaction est annulée (rollback), laissant la base dans l'état où elle se trouvait avant le début de la transaction. Aucune modification partielle n'est conservée.
Une clé primaire est une colonne ou une combinaison de colonnes qui identifie de manière unique chaque ligne d'une table. Elle doit être unique, ne peut pas contenir de valeurs NULL, et il ne peut y en avoir qu'une par table. Elle sert de point d'ancrage pour les références de clés étrangères des autres tables.
L'intégrité référentielle signifie qu'une valeur de clé étrangère dans une table doit toujours correspondre à une valeur de clé primaire existante dans la table référencée, ou être NULL. Le moteur de base de données l'applique automatiquement : toute tentative d'insérer une clé étrangère orpheline ou de supprimer une ligne référencée sera rejetée, sauf si une règle de cascade est définie.
ACID signifie Atomicité, Cohérence, Isolation et Durabilité. Ces propriétés définissent les garanties qui rendent les transactions fiables. Sans ACID, des écritures concurrentes pourraient corrompre les données, des pannes partielles laisseraient la base dans un état invalide, et des modifications validées pourraient être perdues après un crash. C'est pourquoi les bases relationnelles sont utilisées pour les systèmes financiers, médicaux et autres applications critiques.