NSI · Terminale
Bases de données : le modèle relationnel
Découvrez le modèle relationnel, les notions clés (relation, attribut, domaine, clé primaire, clé étrangère) et la structuration des schémas relationnels.
Le modèle relationnel
Introduction
Il existe différents types de bases de données (hiérarchiques, objet, NoSQL...), mais les bases de données relationnelles sont de loin les plus utilisées au monde. C'est ce modèle que nous allons étudier.
Le modèle relationnel a été mis au point en 1970 par Edgar Frank Codd (1923-2003), un informaticien britannique chercheur chez IBM. Ce modèle repose sur un fondement théorique solide issu de la théorie mathématique des ensembles et de la logique des prédicats.
Edgar Frank Codd
Notion de relation
Dans le modèle relationnel, toutes les données sont représentées sous forme de relations.
Relation (ou Table)
Une relation (souvent appelée table) peut être représentée sous forme d'un tableau à deux dimensions, composé d'un en-tête et d'un corps :
- En-tête : Un ensemble d'attributs (colonnes du tableau).
- Corps : Un ensemble de t-uplets ou n-uplets (lignes ou enregistrements du tableau).
Voici un exemple de relation nommée LIVRES :
Relation LIVRES
Relation LIVRES
| id | titre | auteur | ann_publi | note |
|---|---|---|---|---|
| 1 | 1984 | Orwell | 1949 | 10 |
| 2 | Dune | Herbert | 1965 | 8 |
| 3 | Fondation | Asimov | 1951 | 9 |
| 4 | Le meilleur des mondes | Huxley | 1931 | 7 |
| 5 | Fahrenheit 451 | Bradbury | 1953 | 7 |
| 6 | Ubik | K.Dick | 1969 | 9 |
| 7 | Chroniques martiennes | Bradbury | 1950 | 8 |
| 8 | La nuit des temps | Barjavel | 1968 | 7 |
| 9 | Blade Runner | K.Dick | 1968 | 8 |
| 10 | Les Robots | Asimov | 1950 | 9 |
| 11 | La Planète des singes | Boulle | 1963 | 8 |
| 12 | Ravage | Barjavel | 1943 | 8 |
| 13 | Le Maître du Haut Château | K.Dick | 1962 | 8 |
| 14 | Le monde des Ā | Van Vogt | 1945 | 7 |
| 15 | La Fin de l’éternité | Asimov | 1955 | 8 |
| 16 | De la Terre à la Lune | Verne | 1865 | 10 |
Dans la relation ci-dessus :
- Le t-uplet (ligne) correspondant à l'id 11 contient les éléments suivants :
(11, "La Planète des singes", "Boulle", 1963, 8). - L'attribut
titre(colonne) est composé de l'ensemble des titres de romans.
Notion de domaine
Domaine
Le domaine d'un attribut correspond à l'ensemble (fini ou infini) des valeurs admissibles pour cet attribut.
Par exemple :
- Le domaine de l'attribut
idcorrespond à l'ensemble des entiers (INT). - Le domaine de l'attribut
titrecorrespond à l'ensemble des chaînes de caractères (TEXT). - Le domaine de l'attribut
notecorrespond à l'ensemble des entiers positifs compris par exemple entre 0 et 10.
Au moment de la création d'une relation, il est nécessaire de spécifier le domaine de chaque attribut. Le SGBD s'assure qu'aucune donnée invalide n'est insérée. Par exemple, si vous tentez d'ajouter une note non entière (comme 8.5) alors que le domaine attend un entier (INT), le SGBD signalera une erreur et bloquera l'enregistrement.
Clé primaire
Une contrainte fondamentale dans les bases de données relationnelles est qu'une relation ne peut pas contenir deux t-uplets identiques.
Afin de respecter de manière simple cette contrainte, on utilise la notion de clé primaire.
Clé primaire
Une clé primaire est un attribut (ou un ensemble d'attributs) dont la valeur permet d'identifier de manière unique chaque t-uplets (ligne) de la relation. Deux lignes distinctes ne peuvent jamais posséder la même valeur pour leur clé primaire.
Reprenons l'exemple de la relation LIVRES :
- L'attribut
notene peut pas être une clé primaire (plusieurs livres ont la même note). - L'attribut
ann_publine peut pas l'être (plusieurs livres sont publiés la même année). - L'attribut
auteurne peut pas l'être non plus (un auteur peut écrire plusieurs livres). - L'attribut
titrepourrait à première vue convenir, mais deux livres différents peuvent avoir le même titre (par exemple, deux auteurs différents publiant un livre de même titre).
L'attribut id (pour *identifiant*) a donc été ajouté de manière artificielle pour servir de clé primaire. Il s'incrémente automatiquement à chaque nouvel ajout de roman. Ajouter un attribut id numérique est une pratique extrêmement courante (bien que non obligatoire) dans la conception de bases de données.
Clé étrangère
La redondance des données
Supposons que nous souhaitions enrichir notre relation LIVRES en y ajoutant des informations complémentaires sur les auteurs. Nous pourrions ajouter de nouveaux attributs :
Relation LIVRES_AUTEURS
| id | titre | nom_auteur | prenom_auteur | date_nai_auteur | langue_ecriture_auteur | ann_publi | note |
|---|---|---|---|---|---|---|---|
| 1 | 1984 | Orwell | George | 1903 | anglais | 1949 | 10 |
| 2 | Dune | Herbert | Frank | 1920 | anglais | 1965 | 8 |
| 3 | Fondation | Asimov | Isaac | 1920 | anglais | 1951 | 9 |
| 6 | Ubik | K.Dick | Philip | 1928 | anglais | 1969 | 9 |
| 9 | Blade Runner | K.Dick | Philip | 1928 | anglais | 1968 | 8 |
| 10 | Les Robots | Asimov | Isaac | 1920 | anglais | 1950 | 9 |
On remarque que les informations sur Philip K.Dick ou Isaac Asimov sont dupliquées à chaque livre. Cette redondance pose problème :
- Elle gaspille de l'espace de stockage.
- Elle risque de créer des incohérences (si on modifie l'orthographe d'un nom à un endroit, il faut penser à le modifier sur toutes les lignes concernées).
Pour éviter cela, on sépare les données dans plusieurs tables liées.
Notion de clé étrangère
Clé étrangère
Une clé étrangère est un attribut d'une table qui fait référence à la clé primaire d'une autre table. Elle matérialise le lien (la relation) entre les deux tables.
Créons une table AUTEURS et modifions la table LIVRES :
Relation AUTEURS
| id | nom | prenom | ann_naissance | langue_ecriture |
|---|---|---|---|---|
| 1 | Orwell | George | 1903 | anglais |
| 2 | Herbert | Frank | 1920 | anglais |
| 3 | Asimov | Isaac | 1920 | anglais |
| 4 | Huxley | Aldous | 1894 | anglais |
| 5 | Bradbury | Ray | 1920 | anglais |
| 6 | K.Dick | Philip | 1928 | anglais |
| 7 | Barjavel | René | 1911 | français |
| 8 | Boulle | Pierre | 1912 | français |
| 9 | Van Vogt | Alfred Elton | 1912 | anglais |
| 10 | Verne | Jules | 1828 | français |
Relation LIVRES
| id | titre | id_auteur | ann_publi | note |
|---|---|---|---|---|
| 1 | 1984 | 1 | 1949 | 10 |
| 2 | Dune | 2 | 1965 | 8 |
| 3 | Fondation | 3 | 1951 | 9 |
| 7 | Chroniques martiennes | 5 | 1950 | 8 |
| 9 | Blade Runner | 6 | 1968 | 8 |
L'attribut id_auteur de la table LIVRES fait référence à l'attribut id de la table AUTEURS. C'est une clé étrangère. Grâce à ce lien, nous n'avons plus aucune redondance.
Le SGBD assure la contrainte d'intégrité référentielle : il empêchera par exemple d'enregistrer un livre associé à un id_auteur égal à 99 si cet auteur n'existe pas dans la table AUTEURS.
Schéma relationnel
Schéma relationnel
On appelle schéma relationnel la structure décrivant l'ensemble des relations d'une base de données. Il contient :
- Le nom de chaque relation.
- Pour chaque relation, la liste de ses attributs et leurs domaines.
- Les clés primaires (généralement soulignées).
- Les clés étrangères (généralement précédées d'un symbole
#ou d'une étoile*et pointant vers la table cible).
Exemple pour notre base de données littéraire :
Schéma relationnel de la base db_livres
- AUTEURS ( id : INT, nom : TEXT, prenom : TEXT, ann_naissance : INT, langue_ecriture : TEXT )
- LIVRES ( id : INT, titre : TEXT, #id_auteur : INT, ann_publi : INT, note : INT )
Exercice d'application
On considère la relation PRODUITS suivante :
Relation PRODUITS
| ref | nom | prix_unitaire | fournisseur |
|---|---|---|---|
| 1278 | X-2212 | 64 | AMC-V |
| 1580 | Y-32 | 56 | YAMEL |
| 1665 | BN6 | 57 | ABS-united |
| 1447 | Z32 | 48 | AMC-V |
| 2568 | Y-67 | 90 | YAMEL |
| 3558 | OIP-78 | 90 | ABS-united |
| 2222 | BN6 | 60 | ABS-united |
- Expliquez en quelques lignes ce qu'est un SGBD (système de gestion de base de données).
- Expliquez l'avantage de cette structure par rapport au stockage brut dans un fichier CSV.
- Donnez le nom d'un des attributs de la relation
PRODUITS. - Donnez un exemple de t-uplet de la relation
PRODUITS. - Déterminez le ou les attributs pouvant servir de clé primaire (justifiez votre réponse).
Avez-vous compris ce chapitre ?
Cochez-le pour l'enregistrer dans votre progression d'apprentissage.
