Vous êtes sur la page 1sur 16

Le Modèle Relationnel de Données

Les Contraintes du Modèle

I. Deux Exemples :

Exemple 1.

Employés Départements

NumE NomE Status Dept NomD Etage

E12 Aziza Technicien Elec Info 1


E03 Amine Administratif Info Elec 2
E01 Fatima Stagiaire ? Indus 2
E02 Ali Technicien Info Meca 3
E45 Khalid Ingénieur Meca
E06 Karim Administratif Elec
E09 Saida Ingénieur Info
Clés soulignées

NB. Le signe " ? " signifie valeur indéfinie: non applicable ou inconnue.
On parle de valeur NULL. (Ne pas confondre avec nulle, i.e. égale à zéro,
ni avec chaîne vide)
_______________________________________________________________________________________________________________
Najib Tounsi 1/16
On a :

✔ L’attribut NumE est Clé primaire de la relation Employés

✔ L’attribut NomD est Clé Primaire de la relation Departements. (Ang. Primary Key)

✔ Une « relation » entre les deux tables : La colonne Dept dans Employés fait référence à une

ligne de la table Départements.

✔ Par Jointure, on peut savoir dans quel étage travaille un employé donné.

✔ On appelle une telle colonne Clé Etrangère. (Ang. Foreign Key)

✔ Cela implique une contrainte sur les données: les valeurs de la colonne Dept dans Employés

doit figurer parmi les valeurs de la colonne NomD de la Départements.

_______________________________________________________________________________________________________________
Najib Tounsi 2/16
✔ Notation : R [A], désignant la projection de R sur la A. La contrainte s’exprime par la
formule

Employés [Dept] ⊆ Départements [NomD]

✔ On appelle cette formule:

Intégrité Reférentielle

✔ Elle 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.

_______________________________________________________________________________________________________________
Najib Tounsi 3/16
Exemple 2

Livre
NumInv Titre Auteur Qte
323 Bases De C.J. Date 3
Données
124 Algorithmes D. Knuth 2
1110 Programmation B. Meyer 6
241 Langage C B. Kernighan 5
321 Unix K. Thompson 2
312 Langage Java J. Gosling 8

Abonné Prêt

NumAb Nom Prénom NumInv NumAb DatePrêt


12 Benali Ali 323 10 1/11/2007
10 BenSaid Said 124 12 2/11/2007
32 Karim Karima 323 12 3/10/2007
14 Rajaoui Rajaa 241 32 3/10/2007
321 14 13/10/2007
323 32 13/09/2007

_______________________________________________________________________________________________________________
Najib Tounsi 4/16
On a :
✔ NumInv, clé primaire de la relation Livre

✔ NumAb, clé primaire de la relation Abonné

✔ La combinaison (NumInv, NumAb) clé primaire de Prêt.

✔ Numinv de la table Prêt, permet d’accéder à la table Livre pour connaître le nom du livre
emprunté.
✔ NumInv est une clé étrangère dans cette table Prêt. Elle fait référence à la table Livre.

✔ On a donc la contrainte référentielle :

Prêt [NumInv] ⊆ Livre [NumInv].

✔ Le même raisonnement permet de dire :

Prêt [NumAb] ⊆ Abonné [NumAb].

✔ NB. Dans cet example, NumInv (resp. NumAb), est clé étrangère en plus du fait que la
combinaison (NumInv, NumAb) est clé primaire dans cette même table.

_______________________________________________________________________________________________________________
Najib Tounsi 5/16
II. Clés Primaire et Etrangère

✔ Clé primaire
On appelle Clé Primaire d’une relation, un attribut (ou collection d’attributs) dont la valeur
identifie chaque tuple de la relation. Autrement dit, dont la valeur est unique d’un tuple à un
autre.

✗ Dans le cas plus d’un attribut, la clé primaire doit être minimale (aucun attribut n’est
superflu).
✗ Il se peut qu’il existe plusieurs attributs (ou collections) ayant la propriété d’unicité et de
minimalité. On les appelle clés candidates.
✗ Exemples :
o Numinv dans la table Livre.
o (NumInv, NumAb) dans la table Prêt
o (NumInv, Nom) a la propriété d’unicité, mais pas celle de minimalité
o (Titre, Auteur) est clé candidate de la table Livre.

✗ La clé primaire est soulignée dans le schéma d’une relation.


Prêt (NumInv, NumAb, Date)
Départements (NomD, Etage)
_______________________________________________________________________________________________________________
Najib Tounsi 6/16
✔ Clé Etrangère

On appelle Clé Etrangère dans une relation S, un attribut (ou collection d’attributs) dont la
valeur est définie sur le même domaine que la clé primaire d’une autre relation C.

✗ S est dite source de la clé étrangère, et C cible de la clé étrangère.

✗ C et S, ne sont pas nécessairement distinctes. (voir exemple plus loin)

✗ Exemples :

o Dept est clé étrangère dans Employés.

o Départements (dont la clé primaire est NomD) est cible de la clé étrangère.

_______________________________________________________________________________________________________________
Najib Tounsi 7/16
III. Les Deux Contraintes du Modèle Relationnel

✔ Contrainte d’Entité

Dans une relation, la clé primaire ne peut être indéfinie. Ne peut accepter une valeur NULL,
c’est à dire indéfinie (inconnue ou inapplicable).

✗ Dans une relation, un n-uplet représente un objet ou une entité de l’application. Cette entité

n’existerait pas si elle n’était pas identifiée

✗ La clé primaire représente cet identifiant

✗ C’est d’ailleurs le seul moyen d’accéder à une ligne dans une table.

NumAb Nom Prénom


? Benali Ali
et
NumInv NumAb DatePrêt
323 ? 1/11/2007
N’auraient pas de sens.

_______________________________________________________________________________________________________________
Najib Tounsi 8/16
✔ Contrainte Référentielle.

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 : S[E] ⊆ C[P]

✗ C n’est pas forcément distincte de S.

✗ Exemples :

o Prêt [NumInv] ⊆ Livre [NumInv]

o Prêt [NumAb] ⊆ Abonné [NumAb]

o Employés [Dept] ⊆ Départemens [NomD]

_______________________________________________________________________________________________________________
Najib Tounsi 9/16
✗ Notation de schéma :

Employés
NumE NomE Status Dept

Départements

NomD Etage

Abonné
- NumAb
- Nom
Prêt - Prénom

- NumInv
- NumAb
- Date Livre
- NumInv
- Titre
- Auteur
- Qte

_______________________________________________________________________________________________________________
Najib Tounsi 10/16
✔ Exercice :
Etudier les clés primaires et étrangères des exemples suivants. En déduire les contraintes
référentielles.

✗ Client (NumC, Nom, Adresse)


Commande (NumCde, DateCde, NumCli)

✗ Client (NumC, Nom, Adresse)


Commande (NumCde, DateCde, NumCli)
DétailCommande (NumCde, NumLigne, NumProd, Qte)
Produit (NumP, NomP, Prix)

✗ Employé (NumE, NomE, Salaire, Dept)


Département (Nomd, Etage, Mgr) où Mgr est le n° Employé du chef de département

✗ Employé (NumE, NomE, Salaire, Mgr)

_______________________________________________________________________________________________________________
Najib Tounsi 11/16
III. 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 ?

✔ Exemples :
1. Dans la table Livre, NumInv ‘323’ devient ‘626’. Dans la table Prêt ‘323’ figure
comme valeur de clé étrangère dans deux lignes (le livre est emprunté par deux
abonnés).
2. De même si on supprime dans la table Livre, la ligne ‘323’ concernant ce livre.
3. NB. La clé primaire ‘1110’ de Livre ne pose pas de problème. Il n’y a pas de clé
étrangère ayant cette valeur.
4. Dans la table Départements, même type de problème : la valeur clé primaire ‘Méca’
change ou est supprimée (le département ‘Méca’ change de nom ou est supprimé).
Dans la table Employés, ‘Méca’ figure comme valeur de clé étrangère (Il y a un
employé affecté à ce département).

_______________________________________________________________________________________________________________
Najib Tounsi 12/16
✔ Solution : Il y a trois type de solutions.

✗ Refuser, 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, la valeur de clé étrangère ayant été touchée

✗ Propager (Ang. Cascade) la mise à jour vers la valeur de clé étrangère ayant été
touchée (la modifier ou supprimer la ligne)

_______________________________________________________________________________________________________________
Najib Tounsi 13/16
✔ Exemples :

1er cas : La valeur NumInv 323 devient 626.

NumInv Titre Auteur Qte


626 Bases De C.J. Date 3
Données
323
NumInv NumAb DatePrêt
323 10 1/11/2007
124 12 2/11/2007
323 12 3/10/2007

_______________________________________________________________________________________________________________
Najib Tounsi 14/16
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é)
NumInv NumAb DatePrêt
Null 10 1/11/2007
124 12 2/11/2007
Null 12 3/10/2007

✗ Propager.
NumInv NumAb DatePrêt
626 10 1/11/2007
124 12 2/11/2007
626 12 3/10/2007

✗ Le concepteur doit donc choisir refuser ou propager selon l’application.


✗ NB. Dans le cas de suppression de livre, on choisira refuser plutôt.
_______________________________________________________________________________________________________________
Najib Tounsi 15/16
4e cas : La valeur ‘Méca’ change ou est supprimée dans la table Départements
.
Employés Départements

NumE NomE Status Dept NomD Etage


E01 Fatima Stagiaire Null Indus 2
E02 Ali Technicien Info Proc 3
E45 Khalid Ingénieur Null Meca

✗ 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.

Exercice : Etudier les règles de mise à jours pour les exercices précédents (p11)

_______________________________________________________________________________________________________________
Najib Tounsi 16/16