|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juin 2007 Messages : 53 ![]() |
Bonjour,
J'ai réalisé un MCD qui est correct mais je n'arrive pas à utiliser On Delete Cascade sur association n,n. J'ai le MCD suivant : A -0,n--- association1 ---1,1- B E -0,n--- association2 ---1,1- D C -0,n--- association3 ---0,n- B C -0,n--- association4 ---0,n- D J'en déduis le MLD suivant : A (NumA clé primaire) B (NumB clé primaire et NumA clé étrangère) C (NumC clé primaire) D (NumD clé primaire et NumE clé étrangère) E (NumE clé primaire) 2 tables pour les associations n,n association3 (NumB, NumC) association4 (NumE, NumB) J'ai deux fois le même problème : Si j'efface un enregistrement de A alors les enregistrements de B disposant de la clé NumA sont effacés mais les enregistrements de association3 contenant NumB ne sont pas effacés car il faut un index. Si j'efface un enregistrement de E alors les enregistrements de D disposant de la clé NumE sont effacés mais les enregistrements de association4 contenant NumD ne sont pas effacés car il faut un index. Si je crée un index (inutile à mes yeux) sur association3 par exemple alors je ne peux pas prendre en compte mes deux cas de suppression. Quelqu'un peut-il m'éclairer ? Merci |
|
|
00
|
|
|
#2 | |||||
![]() ![]() |
Déjà il y a un problème ici :
Citation:
Citation:
Toute clé étrangère doit avoir un index et je crois que MySQL les crée maintenant automatiquement. Citation:
Citation:
Je vais reprendre ta structure avec une notation plus facile à lire. Les clés primaires sont soulignées et les clés étrangères sont en italique. Citation:
B (NumB, NumA...) C (NumC...) D (NumD...) association3 (NumC, NumB) association4 (NumC, NumD) En plus de la clé primaire composée du couple d'identifiant des tables entrant en jeu dans l'association et qui indexe automatiquement la première colonne de ce couple (ici, dans les deux cas, NumC est indexé en tant que première colonne de la clé primaire), il faut poser un index sur la seconde colonne (NumB dans association3 et NumD dans association4). Et avec ON DELETE CASCADE sur les clés étrangères, la suppression d'un A doit entraîner la suppression d'un B et donc d'une association3.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juin 2007 Messages : 53 ![]() |
Merci pour ta réponse.
Je vais tester pour voir si j'arrive à appliquer ta solution. |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : juin 2007 Messages : 53 ![]() |
Tout marche très bien.
Comme tu l'avais soulevé, j'avais un problème de compréhension de la notion index. Merci beaucoup pour ton explication très claire. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com