Base de données relationnelles 1
Chapitre 3: Le modèle relationnel
Notions de base et passage du modèle E/A au MR
Plan
Modèle relationnel: Concepts de base
Objectifs du MR
Structures de base
Schéma de relation
Contraintes d’intégrité
Passage du modèle EA au MR
Les concepts de base
Le modèle relationnel a été introduit par Codd vers les
années 70 aux laboratoires de recherche d’IBM.
C’est un modèle logique associé aux SGBD relationnels
(ex: oracle, DB2, SQLServer, Access,..)
Le modèle relationnel est simple, facile à appréhender,
même pour un non spécialiste.
Le modèle relationnel représente l’information dans une
collection de relations ou tables.
Objectifs
C’est un modèle basé sur la théorie des ensembles:
notion mathématique fondée et approuvée.
Parmi les objectifs de ce modèle:
Permettre un haut degré d’indépendance entre les
programmes d’application et les représentations internes des
données (stockage, type d’indexage,…)
Fournir une base solide pour traiter les problèmes de
cohérence et de redondance des données.
Objectifs
Ces deux objectifs sont pleinement satisfaits par le
modèle relationnel grâce à la notion de vues externes et
aux règles d’intégrités.
D’autres objectifs ont été atteints par la suite:
Permettre le développement du langage de manipulation
de données non procédural basé sur des théorie solides.
Etre un modèle extensible permettant de modéliser et de
manipuler simplement des données tabulaires, mais pouvant
être étendu pour modéliser et manipuler d’autres données
plus complexes.
Devenir un standard pour la description et la manipulation des
bases de données (Le modèle et son langage SQL sont
normalisés en 1986)
Structures de base
La structure de base est très simple.
Trois structures:
Le domaine.
L’ Attribut.
La Relation.
Une analogie très forte avec la théorie des ensembles.
Domaine
Un domaine est un ensemble de valeurs atomiques.
Le terme atomique signifie que ces valeurs sont considérées
comme insécables au niveau du modèle.
Un domaine est caractérisé par un nom.
Peut être défini
Soit en intension: en définissant une propriété caractéristique des
valeurs du domaine.
Soit en extension: en donnant la liste de toutes les valeurs le
composant.
Exemple:
Entier.
Réel.
Chaine de caractères.
Salaire = {4 000..100 000}.
Couleur ={bleu, rouge, blanc}.
Les attributs
La notion d’attribut en relationnel correspond à la
notion de propriété pour une entité ( ou classe).
Un attribut est défini par un nom et un domaine.
Le domaine d’un attribut décrit les valeurs autorisées
pour cet attribut.
Les valeurs d’un attribut sont atomiques: non
décomposables.
Contrainte supplémentaire: unicité, non nullité, clé, clé
étrangère, valeur par défaut.
Produit cartésien de domaines
Le produit cartésien d1xd2x…xdn est l’ensemble des
tuples (n-uplets): <v1,v2,…,vn> tel que vi ϵ di.
Exemple:
D1={bleu, blanc, rouge}
D2={vrai, faux}
Bleu Vrai
Bleu Faux
Blanc Vrai
Blanc Faux
Rouge Vrai
Rouge Faux
Les relations (tables)
Sous ensemble du produit cartésien d’une liste de
domaines.
Une relation est caractérisée par un nom.
La forme tabulaire est la forme la plus utilisée pour
représenter une relation.
Dans cette table:
Chaque ligne représente un vecteur ou enregistrement de
l’ensemble du produit cartésien des domaines
Chaque colonne représente un domaine.
Exemple: Couleur Choix
D1= couleur. Blanc Faux
D2= booléen. Rouge Vrai
Bleu Vrai
Caractéristiques des relations
Une relation est un ensemble de n-uplets, il n’y a donc
pas une notion d’ordre sur les n-uplets , l’ordre des
lignes et des colonnes n’est pas significatif.
Par contre un n-uplet est une séquence ordonnée
d’attributs.
Une valeur d’attribut est atomique mais peut être
éventuellement nulle( valeur particulière qui indique que
la valeur est manquante)
Exemple de relation (table)
Représentation graphique d’une table (relation):
EMPLOYES:
Matricule Nom DateNaiss Salaire #NomService
Nom de la table:
Schéma: 1ére ligne.
Tuple: chacune des autres lignes.
Clé de la relation: Matricule.
Clé étrangère: #NomService
Schéma de relation
Un schéma de relation R, dénoté par R(A1,A2,…,An), est un
ensemble d’attributs R={A1,A2,…,An}.
A chaque attribut Ai est associé un domaine Di, Ai indiquant
le rôle joué par le domaine Di dans la relation R.
Un schéma de relation décrit une relation et représente
l’intension de celle-ci.
Le degré de la relation est le nombre d’attributs de celle-ci.
Exemple:
ETUDIANT(Nom,No-ss, Adresse, Age, Diplôme)
Schéma de relation en extension
Une relation r sur le schéma de relation
R(A1,A2,…,An) est un ensemble de n-uplets
r=(t1,t2,…,tn).
r est souvent appelée extension du schéma R.
On peut également définir une relation à partir du
produit cartésien des domaines de son schéma R:
r( R ) inclus-ou-egal dom(A1)Xdom(A2)X….Xdom(An)
Un schéma de relation est quasi invariant dans le temps,
alors que l’extension représente les données présentes
à un instant donné dans la base.
Schéma de BD
Un schéma de base de données est un ensemble de
schémas de relation S={R1,R2,…,Rn} et un ensemble
de contrainte d’intégrité CI.
Exemple:
Client(NumCli, Nom, Prénom, DateNaiss, Rue,Ville).
Produit(NumProd,Dési, PrixUni, #NumFour)
Fournisseur(NumFou, RaisonSoc)
COMMANDE(NumCli, NumProd, Date, Quantité)
Les contraintes d’intégrité
Les contraintes (règles) d’intégrité sont les assertions
qui doivent être vérifiées par les données d’une base.
C’est une propriété du schéma, invariante dans le temps.
On peut distinguer plusieurs catégories de contraintes.
Les contraintes structurelles: définissent plus
précisément la structure des associations entre les
données.
Les contraintes d’intégrité
Les contraintes sur les valeurs: donnent des relations
entre les données(un chef gagne plus que ses
subordonnes).
Le modèle relationnel impose une contrainte
minimale qui est l’unicité des clés.
Les autres contraintes structurelles sont:
Les contraintes de référence
Les contraintes de domaine
Les clés
La clé d’une table est un attribut ou groupe
d’attributs dont les valeurs identifient de façon unique
une ligne de la table.
Il est possible que plusieurs combinaisons d’attributs
puissent être exploitées comme clé:
On choisi la combinaison la plus courte comme clé
primaire.
Les clés étrangères
Employés
Services
Dans la table Service NomService est une clé primaire qui
permet de retrouver la ligne décrivant un service donné.
Dans la table Employés NomService est une clé étrangère
qui permet d’aller chercher dans la table Service la description
du service auquel appartient un employé donné.
Les clés étrangères
Le terme clé étrangère signifie une clé d’une autre table.
La notion de clé étrangère est utilisée pour établir le lien
sémantique entre deux tables.
Soit A une table possédant un attribut b* définit comme clé
étrangère provenant de la table B:
Chaque ligne de la table A possède une valeur pour la clé étrangère
b*, permettant de retrouver une ligne de la table B.
Chaque ligne de la table B possède une valeur pour la clé b qui peut
apparaitre dans 0 ou n ligne de la table A comme valeur de b*.
Les clés étrangères sont les seules redondances autorisées:
plusieurs lignes de la table A peuvent avoir la même valeur
de b*
Les clés étrangères
Règles d’intégrité référentielle:
Toute valeur saisie pour une clé étrangère doit être
incluse dans l’ensemble des valeurs de la clé référencée.
Toute valeur saisie dans une colonne b* doit exister dans la
colonne b.
Le non respect de cette règle entraine que la table A
référence des lignes n’existant pas dans la table B
Lorsque l’on supprime une ligne dans la table
référencée, la valeur de la clé supprimée doit avoir été
préalablement supprimée des colonnes clé étrangères.
Contrainte de domaine
Contraintes de domaine: les attributs doivent
respecter une condition logique.
Exemple:
PrixUni >0 ET PrixUni<10 000
Valeurs nulles
Une valeur nulles est un abus de langage pour désigner
une absence de valeur d’un attribut
On dit aussi NULL
Contrainte de référence
C’est une contrainte exprimée entre deux relations.
Cela consiste à vérifier que l’information utilisée dans un
uplet pour désigner un autre uplet est valide, notament si
l’uplet désigné existe bien.
Par exemple, soient les deux relations:
Employé(no-ss, nom, adresse, role, #nomD).
Département(nomD, etage).
Un uplet de Employé référence un uplet de
département via l’attribut nomD.
Il est important de s’assurer que les n-uplets référencés
existent bien
Contrainte de référence
Dans une relation S, la valeur d’une clé étrangère (attribut E)
est soit indéfinie (NULL), soit de valeur v, où v est une valeur
de clé primaire (attribut P) d’une relation cible C
On note
C n’est pas forcément distincte de S.
Contrainte de référence
Notation
Contrainte de référence
N.B: Le signe " ? " signifie valeur indéfinie: non applicable ou
inconnue.
On parle de valeur NULL.
Contrainte de référence
Entraîne une contrainte sur les mises à jours des
données. On ne peut pas toujours
supprimer un département ou changer son nom. Il y a
peut-être des employés qui sont
affectés à ce département.
Contrainte de référence
Les Règles de Mise à Jour Associées.
Problème : Modification/suppression de valeur de clé
primaire. Que se passe t-il pour les clés étrangères qui y font
référence ?
Il y a trois type de solutions.
Refuser(restrict), la mise à jour d’une clé primaire, si une
contrainte référentielle est violée (une clé étrangère de même
valeur existe).
Rendre NULL(set null), la valeur de clé étrangère ayant été
touchée
Propager (Cascade) la mise à jour vers la valeur de clé étrangère
ayant été touchée (la modifier ou supprimer la ligne)
Contrainte de référence
Exemples :
1er cas : La valeur NumInv 323 devient 626
Contrainte de référence
On peut soit :
✗ Refuser. Le livre 323 figure dans la table Prêt (il est
emprunté)
✗ Mettre à NULL. Impossible car NumInv ne peut être
indéfini (Règle d’entité)
Contrainte de référence
Propager
Le concepteur doit donc choisir refuser ou propager selon
l’application.
✗ NB. Dans le cas de suppression de livre, on choisira refuser plutôt.
Contrainte de référence
La valeur ‘Méca’ change ou est supprimée dans la table
Départements
✗ Ici, on rend la valeur de la clé étrangère Null, car c’est
possible dans ce cas.
✗ Sinon, il faut refuser, le temps de changer l’affectation des
employés.
Passage au modèle relationnel
Etudiant Etudie Matière
Code_etudiant Note Code_matiere
1:n 0:n
Nom_etudiant Nom_matiere
DDN_etudiant Coef_matiere
Sexe_etudiant
1:1
Représentation de la base de Enseigne
données en Relations (tables)
composées de propriétés(colonnes)
1:n
et de tuples(lignes)
Enseignant
Code_enseignant
Nom_enseignant
Grade_enseignant
Ancienneté_enseignant
Règles de transformation
1) Règle1(Les entités): Une entité se transforme en
une relation (table)
Toute entité du MEA devient une relation du MR, et donc
une table de la Base de Données.
Chaque propriété de l'entité devient un attribut de cette
relation, et dont une colonne de la table correspondante.
L'identifiant de l'entité devient la Clé Primaire de la
relation (elle est donc soulignée), et donc la Clé Primaire de
la table correspondante.
Exemple
Etudiant
Code_etudiant Etudiant(Code_etudiant,Nom_etudiant,
Nom_etudiant
DDN_etudiant
DDN_etudiant, Sexe_etudiant)
Sexe_etudiant
2) Règle2:Association binaire aux cardinalités (X,1)
- (X,n), X= {0 ou 1}
La Clé Primaire de la table à la cardinalité (X,n) devient
une Clé Etrangère dans la table à la cardinalité (X,1) :
Règles de transformation
Association E1(1:1)-A- (1:N)E2 dite 1 à N la
clé primaire de E2 devient clé étrangère de E1
Enseignant Matière
Code_enseignant Code_matiere
1:n Enseigne 1:1 Nom_matiere
Nom_enseignant
Grade_enseignant Coef_matiere
Ancienneté_enseignant
Enseignant Matière
Code_enseignant Code_matiere
Nom_enseignant Nom_matiere
Grade_enseignant Coef_matiere
37
Ancienneté_enseignant
Règles de transformation
Règle 3:Association binaire(0,1)-(1,1)
La clé primaire côté (0,1) devient clé étrangère à côté
(1,1)
Entité1 Entité2
Clé primaire1 0:1 Association 1:1 Clé primaire 2
Attr 1/1 Attribut_asso Attr 2/1
Attr 1/2 Attr 2/2
Clé étrangère=Clé primaire 1
Règles de transformation
Règle 3: Association binaire(0,1)-(1,1)
Entité 1(Clé primaire1, Attr 1/1, Attr 1/2)
Entité 2(Clé primaire2, Attr 2/1, Attr 2/2, #Clé étrangère)
Client Carte_fidélité
ID_Client 0:1 Possède 1:1 Num_Carte
Nom Attribut_asso Solde_Carte
Prénom
Adresse
Tél
Client(ID_Client,Nom,Prénom,Adresse,Tél)
Carte_fidélité(Num_Carte, Solde_Carte, #ID_Client)
Règles de transformation
Règle 4: Association binaire(0,1)-(0,1)
La clé primaire issue de la table de l’une des entités est
dupliquée dans la table issue de l’autre entité ou elle devient
clé étrangère
Entité1 Entité2
Clé primaire1 0:1 Association 0:1 Clé primaire 2
Attr 1/1 Attribut_asso Attr 2/1
Attr 1/2 Attr 2/2
Clé étrangère2=Clé primaire 2
Entité 1(Clé primaire1, Attr 1/1, Attr ½, #Clé étrangère2)
Entité 2(Clé primaire2, Attr 2/1, Attr 2/2)
Règles de transformation
Règle 4: Association binaire(0,1)-(0,1)
OU
Clé étrangère1=Clé primaire 1
Entité 1(Clé primaire1, Attr 1/1, Attr 1/2)
Entité 2(Clé primaire2, Attr 2/1, Attr 2/2, #Clé étrangère1)
Règles de transformation
Règle 4: Association binaire(0,1)-(0,1)
Directeur Entreprise
Exemple Matricule 0:1 Dirige 0:1 RSEntreprise
Nom Siège
Prénom Spécialité
Directeur(Matricule, Nom,Prénom, #RSEntreprise)
Entreprise(RSEntreprise, Siège, Spécialité)
OU
Directeur(Matricule, Nom,Prénom)
Entreprise(RSEntreprise, Siège, Spécialité, # Matricule)
Règles de transformation
Règle 5: Association binaire(1,1)-(1,1)
Fusion des tables issues des entités de l’association
Homme Femme
H_cin 1:1 Épouse 1:1 F_cin
H_nom F_nom
H_prénom F_prénom
H_adresse F_adresse
Homme( H_cin, H_nom,H_prénom, H_adresse,F_cin,
F_nom,F_prénom, F_adresse)
OU
Femme(F_cin, F_nom,F_prénom, F_adresse, H_cin,
H_nom,H_prénom, H_adresse)
Règles de transformation
3) Règle 6 :Relation binaire aux cardinalités (X,n) -
(X,n), X= {0 ou 1}
Il y a création d'une table supplémentaire ayant comme
Clé Primaire une clé composée des identifiants des 2
entités.
On dit que la Clé Primaire de la nouvelle table est la
concaténation des Clés Primaires des deux autres
tables.
Règles de transformation
Association E1(0,N)-A-(0,N)E2 ou E1(0,N)-A-
(1,N)E2 ou E1(1,N)-A-(0,N)E2 ou E1(1,N)-A-
(1,N)E2 dites Assocation n-n
On crée une nouvelle relation dont la clé primaire
est composée des clés primaires de E1 et E2 et
qui contient les propriétés de A
Etudiant 1:n Etudie 0:n Matière
Code_etudiant Note Code_matiere
Nom_etudiant Nom_matiere
DDN_etudiant Coef_matiere
Sexe_etudiant
45
Règles de transformation
Etudiant Etudie Matière
Code_etudiant
1:n Note 0:n Code_matiere
Nom_etudiant Nom_matiere
DDN_etudiant Coef_matiere
Sexe_etudiant
Etudiant Etudie Matière
Code_etudiant Code_matiere
Nom_etudiant Nom_matiere
DDN_etudiant Coef_matiere
Sexe_etudiant Note Code_Enseignant
46
Modèle relationnel
Etudiant Etudie Matière Enseignant
Code_Etudiant Code_matiere
Code_etudiant Code_enseignant
Nom_matiere
Nom_etudiant Code_Matiere Nom_enseignant
Coef_matiere
DDN_etudiant Note #Code_enseignant Grade_enseignant
Sexe_etudiant Ancienneté_enseignant
ETUDIANT(Code_etudiant, Nom_etudiant, DDN_etudiant,
Sexe_etudiant)
MATIERE(Code_matiere, Nom_matiere
,Coef_matiere,#Code_enseignant)
ETUDIE(#Code_Etudiant, #Code_Matiere, Note)
ENSEIGNANT(Code_enseignant, Nom_enseignant,
Grade_enseignant, Ancienneté_enseignant)
47
CONCEPTION BD
7) Relation n-aire (quelles que soient les cardinalités)
Il y a création d'une table supplémentaire ayant comme Clé
Primaire la concaténation des identifiants des entités
participant à la relation.
Si l’association est porteuse de donnée, celles ci deviennent
des attributs pour la nouvelle table.
Exemple
Etudiant (NEtudiant, NomEtudiant)
Niveau (NumNiv, NomNiv)
Langue (Nlangue, NomLangue)
Parle ( #Netudiant, #NumNiv, #Nlangue)
Règles de transformation
Associations réflexives
Les règles définies ci-dessus s’appliquent aux associations
réflexives
Exemple
Pays
0:n
NomPays
Voisin de Pays (NomPays,Capitale)
Capitale Voisin (#NomPays, #NomVoisin)
0:n
Exercice
Donnez le modèle relationnel correspondant?