I. Le modèle relationnel¶
Cours¶
Il existe plusieurs moyens de structurer une base de données, s’appuyant sur des modèles différents comme le modèle hiérarchique, les bases de données objet ou nosql. Le plus utilisé aujourd’hui est aussi l’un des plus anciens : le modèle relationnel.
A. Représentation¶
Le modèle relationnel, qui fut proposé en 1970 par Edgar Frank Codd, consiste à représenter les données dans des tableaux, appelés relations ou tables. Chaque relation peut être vue comme une sorte de classe (POO) définie par un certain nombre d’attributs.
Prenons pour exemple une base de données rassemblant les figures du monde de l’informatique. On définit une première table regroupant des informations personnelles :
nom | prenom | naissance | nationalite |
---|---|---|---|
Structure de la table
Une fois la structure définie, nous pouvons y insérer des données. Sur chaque ligne, on ajoute un ensemble d’éléments correspondant aux différentes colonnes : un n-uplet, c’est-à-dire une collection d’éléments n’ayant pas forcément le même type.
Par exemple :
nom | prenom | naissance | nationalite |
---|---|---|---|
Lovelace | Ada | 1815 | britannique |
Turing | Alan | 1912 | britannique |
Insertion de deux tuples sur les deux premières lignes de la table précédente
B. Vocabulaire¶
Définitions
- Une relation est un ensemble de n-uplets ayant les mêmes attributs. On la représente par une table.
Dans une relation :
- Chaque ligne correspond à un n-uplet, qui peut être désigné par le terme enregistrement (élément d’une table).
Exemple
Lovelace, Ada, 1815, britannique
- Les attributs sont des caractéristiques qui correspondent au nom des colonnes.
Exemple
nom, prenom, naissance, nationalite
-
Le domaine d’un attribut est son type : entier, flottant, caractères, booléen, etc.
N.B. : il existe une grande variété de domaines dans le langage SQL que nous allons utiliser. Dans la partie théorique, nous utiliseront ceux cités ci-dessus.
Exemples
nom est de type caractères
prénom est de type caractères
naissance est de type entier
nationalite est de type caractères
- L’ensemble des attributs d’une relation, associés à leur domaine, constitue le schéma de la relation.
Exemple
Le schéma de la relation Figures est :
{nom: caractères, prenom: caractères, naissance: annee, nationalite: caractères}
- Une base de données relationnelle est constituée d’une ou de plusieurs relations.
C. Clés primaires et étrangères¶
C.1. Clé primaire¶
Pour pouvoir accéder à une instance d'une table, et être sûr qu'il s'agit de la bonne, il faut pouvoir l’identifier de manière unique.
Dans notre table représentant la relation Figures, avons-nous un attribut permettant de le faire ?
Il n'y en a pas, car plusieurs personnes peuvent avoir le même nom. Les valeurs des attributs ne sont pas uniques.
Rajoutons donc un attribut id_f, dont le domaine est entier, dans lequel on stocke un nouveau numéro à chaque nouvel enregistrement inséré :
id_f | nom | prenom | naissance | nationalite |
---|---|---|---|---|
1 | Lovelace | Ada | 1815 | britannique |
2 | Turing | Alan | 1912 | britannique |
Table de la relation Figures dans laquelle l’attribut ID a été ajouté.
id_f est ce que l’on appelle la clé primaire de la table.
Définition d’une clé primaire :
C'est l'attribut identifiant de manière unique un n-uplet d'une relation. Ses valeurs ne peuvent être nulles.
Nous aimerions aussi disposer, dans notre base, de données sur les avancées dont ces figures sont à l’origine. Nous créons donc une deuxième table Avancées, disposant elle aussi d’une clé primaire id_a pour identifier chaque enregistrement de manière unique.
id_a | nom | date |
---|---|---|
1 | Premier programme informatique | 1843 |
2 | Machine universelle | 1936 |
3 | Déchiffrement d’Enigma | 1941 |
Table de la relation Avancées
C.2. Clé étrangère¶
On veut à présent associer les différentes avancées avec la figure qui en est à l’origine. Pour cela, on y insère un attribut qui correspond à la clé primaire de la table Figures dans la table Avancées.
id_a | nom | date | id_f |
---|---|---|---|
1 | Premier programme informatique | 1843 | 1 |
2 | Machine universelle | 1936 | 2 |
3 | Déchiffrement d’Enigma | 1941 | 2 |
Table de la relation Avancées dans laquelle on associe chaque enregistrement à un enregistrement de Figures
Les deux tables sont ainsi associées avec id_f, la clé primaire de Figures, qui est appelée clé étrangère de la table Avancées.
Définition d’une clé étrangère :
attribut d'une table faisant référence à la clé primaire d'une autre table.
D. Schémas relationnels¶
Chaque table d’une base de données peut être représentée sous la forme d’un schéma relationnel.
Compléter le schéma donné précédemment pour la relation Figures avec sa clé primaire identifiée :
{id_f: entier, nom: caractères, prenom: caractères, naissance: annee, nationalite: caractères}
Quel est celui, sous la même forme, de la table Avancées ? (identifier ses clés)
{id_a: entier, nom: caractères, date: entier, #id_f: entier}
Ces deux schémas relationnels forment le schéma relationnel de la base de données. On le représente souvent sous laforme d’un diagramme UML (Unified Modelling Language) :

E. Contraintes d’intégrité¶
Afin de maintenir des données valides et cohérentes tout au long de la vie de la base de données, il faut s'assurer en permanence du respect des contraintes d'intégrité suivantes qui sont fixées à la création de la base de données :
L'intégrité de domaine
Les valeurs de chaque attribut doivent appartenir au domaine fixé.
L'intégrité de relation
Chaque n-uplet est unique et doit être identifié par une clé primaire qui ne peut être nulle
L'intégrité de référence entre deux relations
Toute clé étrangère doit correspondre à une clé primaire existante.
Conclusion¶
En apportant une vision plus abstraite de la table avec la notion de relation, le modèle relationnel permet de s'affranchir de la façon dont les données sont organisées et stockées en mémoire et de maintenir leur cohérence grâce aux contraintes d’intégrité.
TD : Modéliser des tables¶
Exercice 1 : la base de données sur l'historique de l'informatique¶
Nous avons utilisé dans le cours une base de données comprenant des tables de figures de l’informatique et d'avancées dans le domaine. Le programme de NSI a des liens avec ces informations. On se propose de créer une 3ème table Programme dans cette base de données, permettant d’associer les contenus appris en NSI à la figure en informatique qui les a inventés.
1) Proposer le schéma relationnel de cette table Programme, qui inclura des contenus, auxquels sont associées des capacités et font partie d’une des thématiques du programme (pour des exemples, se référer au bulletin officiel disponible sur l’ENT).
2) Représenter les 3 tables sous la forme de diagramme. Les clés primaires et étrangères doivent apparaître clairement.
Exercice 2 : rangement d’une médiathèque¶
La médiathèque de vos parents commence à nécessiter un peu de rangement : on trouve par endroits des livres, des films, des séries, des disques… Pour savoir quels objets culturels sont effectivement présents chez eux, ils se proposent de créer une base de données. Celle-ci se décomposera en 4 tables : Livres, Films, Séries et Disques.
1) Proposer un schéma relationnel pour chacune de ces tables indépendamment, en incluant les informations qui vous semblent pertinentes.
2) Comment modifier vos schéma pour prendre en compte que certains films et séries sont des adaptations de livres, et que des disques peuvent correspondre à la bande originale de films/séries ? Représenter le diagramme de la base de données.
Exercice 3 : stocker les informations sur le lycée¶
Dans un lycée, les élèves de terminale sont regroupés par classe, qui a chacune ses délégués, son professeur principal, etc. Les élèves ont chacun des caractéristiques qui leur sont propres : comme le choix des 2 spécialités, des langues et des éventuelles options, et un professeur référent. Les professeurs sont eux associés à une matière.
Représenter les informations décrites ci-dessus sous la forme de tables (vous êtes libres d’en décider le nombre). Vous pouvez ajouter d’autres informations, mais elles ne doivent pas être redondantes.