Aller au contenu principal

Les bases de données

Définition

Une base de données est un ensemble d'informations structurées dans des tables. Celles-ci sont conçues pour permettre un accès simplifié aux informations stockées, et donc de les modifier, les supprimer, voire même en rajouter.

Il existe un type de fichier, le CSV (vu en classe de Première), permettant également le stockage d'informations (de façon moins efficace) :

En CSV, la première ligne correspond aux attributs de la table, et les lignes suivantes, les enregistrements, correspondent aux données saisies pour chaque attributs.

Le mode de fonctionnement est similaire avec les bases de données, il est appelé modèle relationnel.

L'approche ACID

Les bases de données s'appuient sur 4 concepts fondamentaux pour la bonne gestion des opérations à effectuer. L'approche ACID s'assure que toutes les opérations soient traitées de façon fiable. ACID est l'acronyme des termes : Atomicité, Cohérence, Isolation et Durabilité :

Tous les changements à effectuer doivent être accomplis jusqu'au bout. Si une opération est arrêtée subitement (coupure internet, etc), l'opération est annulée est la base retourne à son état avant modification.

Le modèle relationnel

Le modèle relationnel représente des données sous la forme d’un tableau, aussi appelé relation ou table.

La première ligne correspond à l’ensemble des attributs de la table, c'est-à-dire le nom de chaque attribut, avec le type de la donnée.

Les lignes suivantes sont l’ensemble des informations saisies. Les lignes sont appelées un n-uplet, ou enregistrements.

Exemple avec la table Élèves :

NomPrénomÂgeClasse
DupontMarie171G1
MartinLucas162G3
BernardClara18TG2
PetitThomas171G2
MoreauJulie162G1
LefevreLéo19TG1
SimonEmma171G3
LemoineMaxime162G2
GirardAnna18TG3
RousseauHugo171G4

Il y a 10 enregistrements (ou n-uplet) dans la relation Élèves. Les attributs sont donc "Nom", "Prénom", "Age", "Classe" avec respectivement comme domaine : chaîne de caractères, chaîne de caractères, entier et chaîne de caractères.

Domaine

On appelle "domaine" le type d'un attribut. Le domaine peut être un entier, une chaîne de caractères, une date... Les bases de données s'assurent que les données saisies correspondent bien au domaine des attributs.

Les clés

Pour identifier précisément les enregistrements (et éviter des anomalies), et/ou permettre de lier les informations de différentes tables, certains attributs peuvent être des clés primaires ou clés étrangères.

Clé primaire

Une clé primaire permet d'identifier de façon unique un enregistrement dans une table.
Très souvent, on retrouve dans les tables un attribut correspondant à un identifiant, correspondant à un numéro unique pour chaque enregistrement.

L'objectif d'une clé primaire est donc de pouvoir retrouver directement toutes les informations d'un enregistrement, simplement grâce à la valeur de sa clé primaire.

Sécurité Sociale

Un exemple de tous les jours : chaque français dispose d'un numéro de sécurité sociale. Ce numéro est unique, et on pourrait donc imaginer qu'il existerait une base de données dont le numéro de sécurité sociale serait clé primaire, et permettrait de retrouver toutes les informations d'un individu (nom, prénom, date de naissance, lieu de naissance ...).

De façon globale, n'importe quel domaine d'attribut pourrait être une clé primaire, tant que l'on s'assure que sa valeur reste unique dans la table.

Exemple avec la table du modèle relationnel

L'attribut Nom ne pourrait pas être clé primaire, sinon cela voudrait dire qu'il ne pourra jamais y avoir 2 élèves avec le même nom de famille.
Pareillement, l'attribut Prénom ne le pourrait pas.

Pour l'attribut Age, cela signifierait que chaque élève doit absolument avoir un âge différent.
Pour l'attribut Classe, on aurait donc juste un seul élève par classe.

Il faudrait donc rajouter un attribut identifiant, par exemple :

IdentifiantNomPrénomÂgeClasse
1DupontMarie171G1
2MartinLucas162G3
3BernardClara18TG2
4PetitThomas171G2
5MoreauJulie162G1
6LefevreLéo19TG1
7SimonEmma171G3
8LemoineMaxime162G2
9GirardAnna18TG3
10RousseauHugo171G4

Clé étrangère

Quand il existe plusieurs tables dont les informations coexistent, il faut pouvoir déterminer quel enregistrement d’une table est en lien avec un ou plusieurs enregistrements d’une autre table.
La clef étrangère d’une table se réfère obligatoirement à la clef primaire d’une autre, c’est-à-dire qu’on peut récupérer les informations associées.

Exemple avec le modèle relationnel précédent

On crée une nouvelle table appelée Eleve_Matière, permettant d'associer à des élèves une matière :

identifiantid_elevematière
13Mathématiques
27Physique
31Littérature
45Histoire
59Biologie
62Chimie
74Anglais
810Géographie
96Informatique
108Éducation civique
113Arts
121Sport
135Philosophie
142Musique
1510Technologie

identifiant est une clé primaire.
id_eleve est une clé étrangère qui fait référence à la clé primaire identifiant de la table Élève.
A la ligne 1, on peut donc lire : Élève dont l'id est 3 est inscrit en mathématiques. D'après la table Élève, l'id 3 est Bernard Clara, donc Bernard Clara suit les mathématiques.

Le modèle Entité/Association et le schéma relationnel

Visualiser une base est importante pour comprendre les liens entre les différentes tables.
Le modèle entité/Association permet de mettre sous la forme d'un schéma l'ensemble des tables (avec les attributs) reliées entre elles :

Il est représenté de la même façon que les diagrammes UML en programmation objet.
Cependant, les clés primaires doivent être soulignées, et les clés étrangères doivent être soulignées en pointillé OU avec un # devant.

Schéma relationnel

Le schéma relationnel représente les tables de cette façon :
Élève(Identifiant : int, Nom : str, Prénom : str, Age : int)
Élève_Matière(Identifiant : int, #Id_eleve : int, Matière : str)

Les contraintes d'intégrités

Pour avoir des bases de données fonctionnelles, elles doivent respecter un ensemble de contraintes, que l'on appelle contrainte d'intégrité :

Les valeurs doivent appartenir au domaine fixé pour chaque attribut (pas d’entier là où il faut des caractères …).

👉 Aller à l'activité ici 👈

Les anomalies

Si l'on ne réfléchit pas suffisamment à la construction des tables, il peut y avoir la présence d'anomalies :

Cette anomalie est celle qui - de façon généralisée - cause des soucis lors des manipulations sur la base (modification, suppression).
Elle consiste à avoir, dans une table, des attributs dont les informations vont être redondantes.

IdNomPrénomDate_naissanceVille_naissanceMaire
1DurandJean-Pierre23/05/1985ParisAnne Hidalgo
2DupontChristophe15/12/1967ParisAnne Hidalgo
3TertaHenry12/06/1978NiceChristian Estrosi

Dans cet exemple nous avons les attributs Ville_naissance et Maire. Maire est l'attribut présentant une redondance d'information, puisque celle-ci est obligatoirement répétée suivant la ville de naissance des individus.
Pour chaque individu né à Paris, l'information Anne Hidalgo sera forcément enregistré, et donc, plusieurs fois.

Éviter des anomalies

Quelques questions à se poser pour éviter le plus d'anomalies dans les tables :

  • Si je supprime la ligne, vais-je perdre des informations ?
  • Si je modifie la ligne, dois-je modifier ailleurs ?
  • Si j’insère un enregistrement, dois-je connaitre toutes les valeurs ?
  • Y-a-t-il des données déjà existantes dans ma table ?

Les réponses à ces questions permettent d'avoir des tables saines et garanties sans problèmes pour manipuler les données !