Bases de données relationnelles#
Nous avons vu précédemment qu'il est pratique de stocker des données semi-structurées dans des tables (ou tableaux). Grâce au langage SQL, il est facile de les créer et de les manipuler.
Une base de données est un ensemble d'informations organisées pour être facilement accessibles, gérées et mises à jour par ses utilisateurs. Par exemple, dans une entreprise, toutes les données relatives aux clients sont stockées dans une base de données.
Tableur1Logiciel pour la création et la manipulation de tableaux, par exemple Excel.#
Une approche simple serait d'utiliser un tableur pour stocker les informations.
Voici un exemple de tableau qui représente les achats effectués par des clients. Les informations concernant le client sont son nom, son prénom et son adresse et celles concernant le produit acheté sont le nom, la description et le prix.
nom_client |
prenom |
adresse |
nom_produit |
description |
prix |
---|---|---|---|---|---|
Duck |
Donald |
Bd de Pérolles 7 |
Ektorp |
canapé 2 places |
499 |
Léclair |
Buzz |
Rue de Centre 14 |
Brimnes |
structure de lit |
129 |
Duck |
Donald |
Bd de Pérolles 7 |
Brimnes |
structure de lit |
129 |
Léclair |
Buzz |
Rue de Centre 14 |
Jaren |
matelas à ressorts |
59 |
Lebricoleur |
Bob |
Rue de Lausanne 65 |
Brimnes |
structure de lit |
129 |
Que se passe-t-il si un client change d'adresse?
Les inconvénients de cette représentation sont les suivants:
Les informations sont redondantes: l'adresse du client ou la description du produit apparaissent sur plusieurs lignes.
S'il y a un changement, il faut le faire à plusieurs endroits, sinon les données ne sont plus cohérentes.
L'utilisation d'un tableur n'est donc pas adaptée pour les grandes bases de données.
Modèle relationnel#
Une autre approche est d'utiliser plusieurs tables reliées entre elles. Nous parlons alors de base de données relationnelle.
Pour pouvoir relier des tables entre elles, il est nécessaire d'introduire quelques concepts.
Clé primaire#
Une clé primaire est une colonne (ou une combinaison de colonnes) qui permet d'identifier chaque enregistrement (ligne) d'une table de manière unique. Elle doit donc être:
unique (deux lignes distinctes ne peuvent pas avoir la même valeur pour la colonne qui est clé primaire)
stable (la valeur de la colonne qui est clé primaire ne doit pas changer au cours du temps)
Si aucune colonne ne remplit ces critères, nous pouvons en créer une nouvelle avec un compteur (la valeur augmentera toujours de 1).
Exemple - Cantons#
|
|
Dans cet exemple, nous pouvons donc choisir la colonne nom
ou abr
comme clé
primaire. Nous avons choisi nom
.
Exemple - Clients#
|
|
Dans cet exemple, aucune colonne ne correspond aux critères de clé primaire
(unique et stable). Par conséquent, il faut créer une nouvelle colonne en
ajoutant, par exemple, un numéro de client no_c
.
Clé étrangère#
Une clé étrangère est une colonne qui contient une information qui est une clé primaire d'une autre table.
Schéma relationnel#
Nous pouvons représenter une base de données relationnelles à l'aide d'un schéma. Pour ce faire, il existe quelques règles à respecter:
Chaque table a un nom, suivi de la liste de ses colonnes.
Chaque table a une clé primaire indiquée grâce au soulignement.
Les flèches représentent les références entre les tables et pointent toujours d'une clé étrangère vers une clé primaire.
Astuce
Lorsque nous construisons une base de données relationnelles, il est essentiel de s'assurer qu'il n'y a pas de duplication d'informations. S'il y a de la redondance, il est souvent nécessaire d'ajouter une nouvelle table pour normaliser les données.
Reprenons l'exemple du tableur avec le tableau d'achats. Un achat est une
relation entre un client et un produit. Pour construire une base de
données relationnelle, nous aurons donc besoin de trois tables distinctes:
client, produit et achat. La table achat contiendra deux informations: le numéro
de client et le numéro de produit. Ces deux éléments sont des clés étrangères,
notées # no_c
et le # no_p
. Comme un client peut acheter plusieurs produits
ou un produit peut être acheté par plusieurs clients, aucune des deux colonnes
ne peut être une clé primaire à elle seule. Dans ce cas, nous utilisons la
combinaison des deux colonnes comme clé primaire. Alternativement, nous aurions
pu créer une nouvelle colonne pour servir de clé primaire.
Exercice 9#
Dessiner le schéma de la base de données relationnelle qui représente un système de location de trottinettes électriques.
Quelles sont les différentes tables?
Quelles sont les colonnes de ces tables?
Existe-t-il déjà une clé primaire?
Y a-t-il des clés étrangères?