|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
Bonjours,
Je suis habitué à MYISAM, et finalement, refaire à la main les dépendances fonctionnelles ne me dérange pas trop. Quand même curieux, j'ai voulu tester innoDB pour l'un de mes projets, mais je me retrouve bloqué : Ces fichus contraintes m'empêches d'insérer mes données, ce qui me fait douter de ma conception....Quelqu'un aurait-il une idée de savoir comment on fait une cardinalité 0,n avec innoDB et PHPmyAdmin ?!!! J'ai 3 tables : une table collaborateur, une table prospect et une table fournisseur. La table prospect recoit 2 clés étrangères (id_collaborateur et id_fournisseur). Un collaborateur a n propects, et peut être fournisseur de prospect, un fournisseur peut fournir 0 ou plusieurs prospect. Ainsi, quand j'insère un prospect qui est fournit par un collaborateur, (donc qui n'a pas de référence avec un fournisseur), il me met une erreur comme quoi je ne respect pas la dépendance !!!! (cela veut donc dire que je suis OBLIGE d'avoir un collaborateur ET un fournisseur pour traiter un prospect !!!) Je sens que je vais revenir à myISAM.... PS : j'ai créé tout ma base via PHPMyAdmin, ainsi que la gestion des liaisons....
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 572 ![]() |
![]() si tu as du 0,n de prospect à tes 2 autres tables : Entre la table prospect et les tables fournisseurs et collaborateurs tu dois avoir 2 tables de jointures. Tu n'aurais pas mis entre collaborateur et fournissur, 1,1 ?
__________________
Pensez au tag ![]() Les règles du Forum Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5 SQL : Cours SQL |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
C'était ce à quoi j'étais en train de penser ce matin, devant mon café avec le regard hagard.....
En fait, à chaque fois que j'ai besoin d'une cardinalité 0,n ill faudrait que je mette une table d'association, comme ca la clé étrangère n'apparait que dans celle-ci.... Je vais essayer ce matin, j'aimerai bien que ca marche car j'aimemrai utiliser les transactions !!!! Merci Trotter de confirmer mes soupçcons !!!!
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Citation:
Citation:
)Maintenant, si ce n'est pas le fonctionnement que tu souhaites, il me parait incontournable de revenir à la case modélisation.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
||
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
Hummmmm.....
Sous myISAM, je mettais les "clés etrangères" que je voulais, et si je voulais pas d'une certaine "relation" avec une autre table, je mettais la valeur de la "clé" à NULL..... Mais tu as raison : je rtourne à la case conception, pour mettre mes fameuses tables d'associations !!!!
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
Citation:
|
|
|
|
00
|
|
|
#7 | |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
Citation:
Donc du coup, j'évite les tables d'associations (j'aurais du en mettre entre 5 et 6....Un peu lourd !!!!) et ca marche très bien !!!!
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
J'ai eu le même problème finalement j'ai fais sauter la contrainte.
J'ai une table avec de dépendance parent enfant. id , idparent. idem j'ai une relation 0,n. Que faire dans ces moments là en sachat que j'ai pas d'enregistrement racine. Ceux du premier niveau ont le champs idparent = 0 = valeur par défaut définit dans mysql.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
Et bien, à priori 2 solutions : une table d'association (la table prend en clé étrangère les 2 tables sur lesquels tu veux du 0,n) ou bien (ce que j'ai fait) tu met la clé étrangère de ta table issue de la cardinalité 0 avec une valeur "null" (et pas not_null)....
Je sais ps si tu as suivi....
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
Je viens d'essayer, ca marche terrible !!!! Tu garde les cardinalités 'MAJ en cascade) mias tu n'as plus les contraintes, ce qui rend la base beaucoup plus souple !!!
Au lieu de faire comme je faisais avant (valeur vide ou 0) il faudra juste que je mette un NULL.... Terrible !!!! Donc principe à retenir avec InnoDB : quand on veut une cardinalité 0,n on doit faire en sorte que la "clé étrangère arbitraire" doit avoir la propriété NULL....
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com