© Éditions Eyrolles
57
chapitre n° 2
Manipulation des données
Deux types de problèmes sont automatiquement résolus par MySQL pour assurer l’intégrité
référentielle :
• La cohérence du « fils » vers le « père » : on ne doit pas pouvoir insérer un enregistrement
« fils » (ou modifier sa clé étrangère) rattaché à un enregistrement « père » inexistant. Il est
cependant possible d’insérer un « fils » (ou de modifier sa clé étrangère) sans rattacher
d’enregistrement « père », à la condition qu’il n’existe pas de contrainte NOT NULL au
niveau de la clé étrangère.
• La cohérence du « père » vers le « fils » : on ne doit pas pouvoir supprimer un enregistrement « père » si un enregistrement « fils » y est encore rattaché. Il est possible de supprimer les « fils » associés (DELETE CASCADE), d’affecter la valeur nulle aux clés étrangères
des « fils » associés (DELETE SET NULL) ou de répercuter une modification de la clé primaire du père (UPDATE CASCADE et UPDATE SET NULL).
Déclarons à présent ces contraintes sous MySQL en détaillant les options disponibles.
Contraintes côté « père »
Le tableau suivant illustre les deux possibilités (clé primaire ou candidate) dans le cas de la
table Compagnie. Notons que pour le cas de la clé candidate, une clé primaire peut être définie par ailleurs (sur nomComp par exemple).
Figure 2-11 Intégrité référentielle
Compagnie
comp
nrue rue
ville
nomComp
AF
10
Gambetta
Paris
Air France
SING
7
Camparols
Singapour
Singapore AL
Affreter
compAff
immat
dateAff
nbPax
AF
F-WTSS 2005-05-13
85
SING
F-GAFU 2005-02-05
155
AF
F-WTSS 2005-05-15
82
Pilote
brevet
nom
nbHVol compa
PL-1
Louise Ente
450
AF
PL-2
Jules Ente
900
AF
PL-3
Paul Soutou
1000
SING
Avion
immat
typeAvion
nbHVol proprio
F-WTSS
Concorde
6570
SING
F-GAFU
A320
3500
AF
F-GLFS
TB-20
2000
SING
dependent / child
referenced / parent
referenced / parent
dependent / child
dependent / child NOT NULL
57
chapitre n° 2
Manipulation des données
Deux types de problèmes sont automatiquement résolus par MySQL pour assurer l’intégrité
référentielle :
• La cohérence du « fils » vers le « père » : on ne doit pas pouvoir insérer un enregistrement
« fils » (ou modifier sa clé étrangère) rattaché à un enregistrement « père » inexistant. Il est
cependant possible d’insérer un « fils » (ou de modifier sa clé étrangère) sans rattacher
d’enregistrement « père », à la condition qu’il n’existe pas de contrainte NOT NULL au
niveau de la clé étrangère.
• La cohérence du « père » vers le « fils » : on ne doit pas pouvoir supprimer un enregistrement « père » si un enregistrement « fils » y est encore rattaché. Il est possible de supprimer les « fils » associés (DELETE CASCADE), d’affecter la valeur nulle aux clés étrangères
des « fils » associés (DELETE SET NULL) ou de répercuter une modification de la clé primaire du père (UPDATE CASCADE et UPDATE SET NULL).
Déclarons à présent ces contraintes sous MySQL en détaillant les options disponibles.
Contraintes côté « père »
Le tableau suivant illustre les deux possibilités (clé primaire ou candidate) dans le cas de la
table Compagnie. Notons que pour le cas de la clé candidate, une clé primaire peut être définie par ailleurs (sur nomComp par exemple).
Figure 2-11 Intégrité référentielle
Compagnie
comp
nrue rue
ville
nomComp
AF
10
Gambetta
Paris
Air France
SING
7
Camparols
Singapour
Singapore AL
Affreter
compAff
immat
dateAff
nbPax
AF
F-WTSS 2005-05-13
85
SING
F-GAFU 2005-02-05
155
AF
F-WTSS 2005-05-15
82
Pilote
brevet
nom
nbHVol compa
PL-1
Louise Ente
450
AF
PL-2
Jules Ente
900
AF
PL-3
Paul Soutou
1000
SING
Avion
immat
typeAvion
nbHVol proprio
F-WTSS
Concorde
6570
SING
F-GAFU
A320
3500
AF
F-GLFS
TB-20
2000
SING
dependent / child
referenced / parent
referenced / parent
dependent / child
dependent / child NOT NULL
