Le modĂšle relationnel
Un peu d'histoire
Le modĂšle relationnel est une maniĂšre de modĂ©liser les relations existantes entre plusieurs informations, et de les ordonner entre elles. Cette modĂ©lisation qui repose sur des principes mathĂ©matiques mis en avant par E.F. Codd (laboratoire de recherche dâIBM) est souvent implĂ©mentĂ©e dans une base de donnĂ©es.
1970 | Edgar Franck Cood pose les bases du modĂšle relationnel |
1974 | Création du langage SQL |
1979 | Création du premier systÚme de gestion de base de données Oracle |
1980 | Le volume mondial de données stockées est estimé à \(10^{18}\) octets |
1990 | Le volume mondial de données stockées est estimé à \(10^{19}\) octets |
1995 | PremiĂšre version du langage MySQL |
2002 | Le volume mondial de données stockées est estimé à \(10^{20}\) octets |
2010 | Le volume mondial de données stockées est estimé à \(10^{21}\) octets |
2014 | Le volume mondial de données stockés est estimé à \(10^{22}\) octets |
Activité 1 - Les limites des outils traditionnels
Prenons lâexemple dâune mĂ©diathĂšque. Elle souhaite recenser les ouvrages quâelle possĂšde. Voici le tableau quâelle a rĂ©alisĂ©.
- IdentiïŹez les redondances dans ce tableau, et les Ă©lĂ©ments qui semblent uniques. - Le livre de Ray Bradbury intitulĂ© « Chroniques martiennes » est rĂ©guliĂšrement indisponible car il est trop souvent empruntĂ©. La mĂ©diathĂšque achĂšte donc un deuxiĂšme exemplaire, paru chez le mĂȘme Ă©diteur. Il portera le numĂ©ro dâinventaire 236984. ComplĂ©tez le tableau avec ce nouvel ouvrage. - Existe-t-il un Ă©lĂ©ment unique qui va rĂ©fĂ©rencer totalement lâouvrage? - La mĂ©diathĂšque sâouvre depuis peu Ă la bande dessinĂ©e. Elle souhaite enregistrer lâalbum de bande dessinĂ©e en langue française Lâincal noir , scĂ©narisĂ© par Alejandro Jodorowsky , dessinĂ© par Moebius et Ă©ditĂ© par Les humanoĂŻdes associĂ©s en 1982 . Quel est (sont) le(s) problĂšme(s) rencontrĂ©(s)?
Correction
- Redondances :
- nom auteur (par ex : Bradbury)
- prenom auteur (par ex : George)
- editeur (par ex : Pocket)
- langue (par ex : anglais)
- annee publication (par ex : 1968) Eléments uniques :
- titre
- reference
- On rajouter la ligne : Chroniques martiennes, Bradbury, Ray, Denoël, anglais, 1950, 236984
- La référence est un élément unique qui référencera totalement un ouvrage.
- Il nây a pas quâun seul auteur, alors quâil nây a quâune colonne pour cela...
La base de données
Base de données
Une donnĂ©e est une information reprĂ©sentĂ©e sous une forme conventionnelle, aïŹn de pouvoir ĂȘtre traitĂ©e automatiquement. Une base de donnĂ©es (BDD) reprĂ©sente un ensemble ordonnĂ© de donnĂ©es dont lâorganisation est rĂ©gie par un modĂšle.
Les données sont généralement regroupées selon leur appartenance à un objet du monde réel.
- Le regroupement dâobjets homogĂšnes constitue une entitĂ© .
- Une entitĂ© est dĂ©crite par un ensemble dâ attributs .
- Chacun de ces attributs prend une valeur pour chaque objet.
Exemple
- EntitĂ© : un ĂȘtre humain
- Attributs : nom, prénom, date de naissance, lieu de naissance
- Valeurs : Young, Neil, 12 novembre 1945, Toronto
Activité 2 - Carte d'identité
On souhaite reprĂ©senter les donnĂ©es issues de la carte nationale dâidentitĂ©. Ă partir de votre carte personnelle, donnez le nom de lâentitĂ© correspondante, les attributs qui lui sont associĂ©s et les valeurs qui vous sont propres.
Correction
Entité : Français
Attributs : nom, prénom, sexe, date de naissance, lieu de naissance, taille, adresse, date de validité, date de livraison, prefecture
Valeurs : ...
Vidéo : Le modÚle relationnel
Le modĂšle relationnel
ModĂšle relationnel
Un des modÚles de données le plus courant est le modÚle relationnel. Les principes de base de ce modÚle sont les suivants :
- séparer les données dans plusieurs tables
- chaque table contient des donnĂ©es relatives Ă un mĂȘme sujet
- on évite la redondance des données
- on ne stocke pas des donnĂ©es qui peuvent ĂȘtre calculĂ©es (exemple : une ligne Total)
- mettre les tables en relation par lâutilisation de clĂ©s
- clĂ©s primaires : leurs valeurs (souvent des entiers) permettent dâidentiïŹer une donnĂ©e de maniĂšre unique
- clĂ©s Ă©trangĂšres : elles rĂ©fĂ©rencent une clĂ© primaire dâune autre table
Activité 3 - Bon de commande
La société Le Coin, située à Caen, a commandé des produits chimiques à la société BonPrixChim.
Le bon de commande est indiqué ci-dessous :
à partir de ce bon de commande, on peut séparer les informations en 3 entités :
- une entité commande qui va regrouper les données de la commande;
- une entité client qui va regrouper les données du client;
- une entitĂ© produits qui va regrouper les donnĂ©es dâun dĂ©tail.
- Ătablissez, pour chaque entitĂ©, la liste des attributs.
- Représentez chaque entité par une table contenant les attributs et la liste de leurs valeurs.
- Pensez-vous quâil y ait des redondances? Sâil y en a, modiïŹez les tables pour les supprimer.
- En rĂ©alitĂ©, la table Produits nâest pas pertinente. Elle ne devrait contenir que les informations associĂ©es Ă un produit. Quels seraient ses attributs?
- Construisez une quatriÚme table intitulé Details reprenant les attributs manquants.
- Comment Ă©ditera-t-on le bon de commande?
Correction
1)
Entité : Commande
Attributs : numéro de commande, date
Entité : Client
Attributs : numéro de client, nom, adresse, ville
Entité : Produits
Attributs : référence, libellé, prix, quantité
2) Commandes
Numéro de commande | Date |
---|---|
14010 | 24/09/2014 |
Clients
Numéro de client | Nom | Adresse | Ville |
---|---|---|---|
BD2014 | LECOIN | 24 RUE SAINT-JEAN | CAEN |
Produits
Référence | Libellé | Prix | Quantité |
---|---|---|---|
190464K | Calcium chlorure 1 mol/l | 77 | 10 |
31535.292 | Sodium chlorure 1 mol/l | 105 | 15 |
30024.290 | Acide chlorhydrique 1 mol/l (1 N) | 41 | 3 |
30917.320 | Iode 0,05 mol/l (0,1 N) | 117 | 8 |
3) Non
4) Référence, Libellé, et Pris
5) Détails : Référence et Quantités
6) Il faudra faire des liens entre les tables.
Il y aura un problĂšme du fait de lâabsence de lâattribut numero commande
dans la table Details et de lâabsence de lâattribut numero client dans la table Commande)
La relation
Relation
Une relation (on parle aussi de table) est composĂ©e dâun en-tĂȘte (le libellĂ© des attributs ) et dâun corps composĂ© dâun ou plusieurs t-uplets (on parle aussi dâenregistrement).
Domaine de valeurs d'un attribut
Chaque valeur possĂšde un type et un ensemble ïŹni ou non des valeurs possibles. Cela constitue le domaine de valeurs dâun attribut.
Exemple
- Lâattribut
idAuteur
de la relationAuteurs
est un entier positif. Son type est entier. Le domaine de valeur correspond Ă tous les entiers de 0 Ă \(+\infty\) . - Lâattribut titre de la relation Livres est une chaĂźne de caractĂšres. Son type est chaĂźne de caractĂšres . Le domaine de valeur correspond Ă toutes les chaĂźnes de caractĂšres.
Activité 4 - Domaine de valeurs
DĂ©terminez le domaine de valeurs des attributs de la relation Produits .
reference | libelle | prix |
---|---|---|
1900464K | Calcium chlorure 1 mol/L | 77 |
31535.292 | Sodium chlorure 1 mol/L (1N) | 105 |
30024.290 | Acide chlorhydrique 1 mol/L (1N) | 41 |
30917.320 | Iode 0,05 mol/L (0,1 N) | 936 |
Correction
- Domaine de valeur de :
- reference : toutes les chaßnes de caractÚres
- libelle : toutes les chaßnes de caractÚres
- prix : tout réel supérieur strict à 0
Clé primaire d'une relation
Clé primaire
Ă lâintĂ©rieur dâune relation, deux t-uplets identiques ne sont pas autorisĂ©s. Il faut pouvoir identiïŹer de façon unique un t-uplet.
Une clĂ© primaire permet dâidentiïŹer un t-uplet de maniĂšre unique.
Il faut dĂ©terminer, parmi les attributs, lequel permet dâidentiïŹer de maniĂšre unique un t-uplet.
Cet attribut sera considéré comme la clé primaire de la relation.
Dans la ïŹgure prĂ©cĂ©dente :
- Lâattribut auteur ne peut pas jouer le rĂŽle de clĂ© primaire (deux ouvrages pouvant avoir le mĂȘme auteur).
- De mĂȘme pour les attributs titre et annPubli .
- Il reste donc lâattribut idLivre (pour identiïŹant), qui a Ă©tĂ© ajoutĂ© ici pour jouer le rĂŽle de clĂ© primaire.
Remarque
Ici, nous avons crĂ©Ă© artiïŹciellement une clĂ© primaire, car aucun des autres attributs ne pouvait convenir (ce nâest pas toujours le cas).
Clé étrangÚre d'une relation
Clé étrangÚre
Dans la relation Auteurs , chaque auteur est identiïŹĂ© par lâattribut idAuteur (clĂ© primaire de la relation).
Dans la relation Livres , on a rajouté un attribut idAuteur qui est la clé primaire de la relation Auteurs .
Une clĂ© Ă©trangĂšre rĂ©fĂ©rence une clĂ© primaire dâune autre table.
Lâattribut idAuteur est ce que lâon nomme une clĂ© Ă©trangĂšre de la relation Livres , elle permet de faire le lien entre les deux relations.
Remarque
Il peut y avoir plusieurs clés étrangÚres dans une relation.
Activité 5 - Clés primaires et étrangÚres
- Reprenez les relations des bons de commande, en identiïŹant une clĂ© primaire pour chacune des tables, ou en en introduisant une si elle nâexiste pas.
- JustiïŹez que dans la relation Details , les attributs reference et numero commande ne peuvent pas constituer individuellement une clĂ© primaire.
- JustiïŹez que dans la relation Details , le couple (reference, numero commande) constitue une clĂ© primaire.
- IdentiïŹez les clĂ©s Ă©trangĂšres.
Correction
- Commande : Numéro de commande
Client : Numéro de client
Produit : Référence
DĂ©tail : RĂ©fĂ©rence, numero de commande - Pour une mĂȘme quantitĂ©, il peut y avoir diffĂ©rentes rĂ©fĂ©rences et diffĂ©rents numĂ©ros de commande
- Pour avoir lâunicitĂ© du dĂ©tail dâun produit, il faut connaĂźtre la rĂ©fĂ©rence ET le numĂ©ro de commande .
- Clé étrangÚre : numéro client, référence et numéro de commande
Représentations du modÚle relationnel
Représentation
Le schĂ©ma dâune relation dĂ©ïŹnit cette relation. Il est composĂ© :
- du nom de la relation (on la place en tĂȘte, et en gras),
- de la liste de ses attributs avec les domaines respectifs dans lesquels ils prennent leurs valeurs (cette liste est placée entre parenthÚses),
- de la clé primaire (elle est soulignée),
- des clés étrangÚres (on place un # entre la clé étrangÚre et la référence),
- des autres valeurs.
Lâensemble des relations peut ĂȘtre reprĂ©sentĂ© soit par un schĂ©ma, soit par une notation textuelle.
Exemple : notation textuelle
Livres (idLivre, titre, idAuteur # Auteurs(idAuteur), annPubli)
Auteurs (idAuteur, nom, prenom, langueEcriture)
Exemple : schéma relationnel
Activité 6 - Notation textuelle et schéma relationnel
Les relations de l'activité "Bon de commande" sont représentées ci-dessous :
Les clĂ©s primaires et Ă©trangĂšres ont Ă©tĂ© dĂ©ïŹnies prĂ©cĂ©demment.
- Ăcrivez la notation textuelle du modĂšle relationnel.
- Réalisez le schéma relationnel.
Les contraintes d'intégrité
Contraintes d'intégrité
Il est important dâassurer la cohĂ©rence et donc lâintĂ©gritĂ© des donnĂ©es prĂ©sentes dans une base de donnĂ©es. Cela consiste Ă sâassurer que les donnĂ©es stockĂ©es sont cohĂ©rentes entre elles, câest Ă dire quâelles respectent toutes les rĂšgles exigĂ©es par le concepteur de la base de donnĂ©es. Câest une assertion vĂ©riïŹĂ©e par les donnĂ©es de la base, Ă tout moment.
Une contrainte dâintĂ©gritĂ© est une rĂšgle appliquĂ©e Ă un attribut ou une relation et qui doit toujours ĂȘtre vĂ©riïŹĂ©.
Les contraintes dâintĂ©gritĂ© sont vĂ©riïŹĂ©es par le systĂšme de gestion des bases de donnĂ©es (SGBD).
Si lâune des rĂšgle nâest pas respectĂ©e, le SGBD signalera cette erreur et nâautorisera pas lâĂ©criture de cette nouvelle donnĂ©e.
Chaque attribut doit prendre une valeur dans son domaine de valeurs.
Exemple
- La note obtenue dans une matiĂšre doit ĂȘtre comprise entre 0 et 20;
- la quantitĂ© commandĂ©e est obligatoire ET doit ĂȘtre strictement supĂ©rieure Ă 0.
Chaque relation dans le modĂšle relationnel est identiïŹĂ©e par une clĂ© primaire qui doit ĂȘtre unique et non nulle . Donc, chaque t-uplet est Ă©galement identiïŹĂ© par une clĂ© primaire.
Une clĂ© Ă©trangĂšre dans une relation doit ĂȘtre une clĂ© primaire dans une autre. De plus, le domaine de valeurs de ces deux clĂ©s doit ĂȘtre identique. EnïŹn, la valeur dâune clĂ© Ă©trangĂšre doit exister dans la clĂ© primaire qui y fait rĂ©fĂ©rence.
Exemple
Dans la ïŹgure ci-dessous, la valeur de la clĂ© Ă©trangĂšre idAuteur ne peut pas ĂȘtre supĂ©rieure Ă 8.
Activité 7 - MédiathÚque
Dans lâexemple de la MĂ©diathĂšque, on souhaite crĂ©er 3 relations :
- Auteur , contenant toutes les informations sur un auteur
- Livre , contenant toutes les informations sur un livre
-
Ouvrage , contenant toutes les informations sur un ouvrage disponible Ă lâemprunt.
-
Pour chacune des relations, indiquez les attributs avec leur type et leur domaine de valeurs.
- Pour chacune des relations, indiquez la clé primaire et éventuellement la ou les clé(s) étrangÚre(s).
- Représentez le schéma relationnel correspondant, ainsi que la notation textuelle qui lui est associée.
Correction
1) 2) 3)
Auteur(idAuteur, nomAuteur, prenomAuteur,langue)
Livre(idLivre,titre,#idAuteur,annee)
Ouvrage(#idLivre,quantité)
Domaine de valeur : - idAuteur, idLivre : nombre entier strictement positif - nomAuteur, prenomAuteur, langue, titre, annee : toute chaßne de caractÚres - quantité : nombre entier positif ou nul
3) ...
Activité 8 - Laboratoire médical
Un laboratoire souhaite gĂ©rer les mĂ©dicaments quâil conçoit :
- Un mĂ©dicament est dĂ©crit par un nom, qui permet de lâidentiïŹer. En effet il nâexiste pas deux mĂ©dicaments avec le mĂȘme nom.
- Un mĂ©dicament comporte une description courte en français, ainsi quâune description longue en latin.
- On gĂšre aussi le conditionnement du mĂ©dicament, câest Ă dire le nombre de pilules par boĂźte (qui est un nombre entier).
- à chaque médicament on associe une liste de contre-indications, généralement plusieurs, parfois aucune.
- Une contre-indication comporte un code unique qui lâidentiïŹe, ainsi quâune description.
- Une contre-indication est toujours associée à un et un seul médicament.
Voici deux exemples de données :
-
Le Chourix a pour description courte « Médicament contre la chute des choux » et pour description longue « Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare. ». Il est conditionné en boßte de 13.
Ses contre-indications sont : -
CI1 : Ne jamais prendre aprĂšs minuit.
-
CI2 : Ne jamais mettre en contact avec de lâeau.
-
Le Tropas a pour description courte « Médicament contre les dysfonctionnements intellectuels » et pour description longue « Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. ». Il est conditionné en boßte de 42.
Ses contre-indications sont : -
CI3 : Garder Ă lâabri de la lumiĂšre du soleil.
- Donnez la représentation sous forme de tables des relations Medicament et ContreIndication .
- Ăcrivez le schĂ©ma relationnel permettant de reprĂ©senter une base de donnĂ©es pour ce laboratoire.
Correction
1)
MĂ©dicament
nomMedicament | descriptionCourte | descriptionLongue | quantite |
---|---|---|---|
Chourix | MĂ©dicament contre la chute des choux | Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare. | 13 |
Tropas | MĂ©dicament contre les dysfonctionnements intellectuels | Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non | 42 |
ContreIndication :
idCi | nomMedicament | descriptionCI |
---|---|---|
CI1 | Chourix | Ne jamais prendre aprĂšs minuit |
CI2 | Chourix | Ne jamais mettre en contact avec de lâeau |
CI3 | Tropas | Garder Ă lâabri de la lumiĂšre du soleil |
2)
Medicament(nomMedicament, descriptionCourte, descriptionLongue, quantite)
ContreIndication(idCI, # nomMedicament, descriptionCI)
- Domaine de valeur :
- nomMedicament, descriptionsCI,descriptionCourte : chaine de caractÚre en français
- descriptionLongue : chaine de caractÚre en latin
- idCIÂ , quantite : entier strictement positif