Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
580 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL]cardinalité 1,n -- 1,n et clé étrangere

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL]cardinalité 1,n -- 1,n et clé étrangere

n°1174916
axo
Posté le 11-08-2005 à 21:30:15  profilanswer
 

salut
j'ai comme mcd :
 
tableModule ---(1,n)---(relation)---(1,n)---tableEtudiant
 
cela me donne une table supplémentaire [relation] qui contient l'attribut clé primaires de tableModule et l'attribut clé primaires de tableEtudiant
 
ca donne en mysql pour la creation de cette table relation :
create table RELATION
   (
   ID_TableModule           varchar(32)      not null,
   ID_TableEtudiant         int              not null,
   primary key (ID_TableModule, ID_TableEtudiant)
   );
 
ma question est de savoir si mysql gére tout seul le peuplement de cette table relation pendant que j'insere des données dans table Module et table Etudiant ? ou il faut que je verifie avec php et d'inserer "manullement" la table relation ?
 
Et si je choisis d'utiliser les tables InnoDB, la table relation aurait un champ en plus (en identifiant resultant de la concatenation de clé primaire des 2 tables module et etudiant) ?
ca donne ca ? :
 
create table RELATION
   (
   ID_concatene           int auto_increment not null,
   ID_TableModule         varchar(32)        not null,
   ID_TableEtudiant       int                not null,
   primary key (ID_concatene)
   );
 
 
a+

mood
Publicité
Posté le 11-08-2005 à 21:30:15  profilanswer
 

n°1175032
ali0baba
Posté le 12-08-2005 à 09:51:27  profilanswer
 

axo a écrit :

salut
j'ai comme mcd :
 
tableModule ---(1,n)---(relation)---(1,n)---tableEtudiant
 
cela me donne une table supplémentaire [relation] qui contient l'attribut clé primaires de tableModule et l'attribut clé primaires de tableEtudiant
 
ca donne en mysql pour la creation de cette table relation :
create table RELATION
   (
   ID_TableModule           varchar(32)      not null,
   ID_TableEtudiant         int              not null,
   primary key (ID_TableModule, ID_TableEtudiant)
   );
 
ma question est de savoir si mysql gére tout seul le peuplement de cette table relation pendant que j'insere des données dans table Module et table Etudiant ? ou il faut que je verifie avec php et d'inserer "manullement" la table relation ?


 
il faut que tu insere manuellement sous php car si tu veux inserer un etudiant sans module, il n'y aura pas d'insertion dans RELATION
 

axo a écrit :


Et si je choisis d'utiliser les tables InnoDB, la table relation aurait un champ en plus (en identifiant resultant de la concatenation de clé primaire des 2 tables module et etudiant) ?
ca donne ca ? :
 
create table RELATION
   (
   ID_concatene           int auto_increment not null,
   ID_TableModule         varchar(32)        not null,
   ID_TableEtudiant       int                not null,
   primary key (ID_concatene)
   );
 
 
a+


 
 
si tu met auto_increment , la cle ne sera pas la concatenation de ID_TableModule et ID_TableEtudiant : ca sera un entier incrementé pour chaque tuple que tu inseres !
 

n°1175247
axo
Posté le 12-08-2005 à 15:05:43  profilanswer
 

merci ali0baba pour tes remarques.
je vois ce que tu veux dire a propos de l'etudiant sans module , mais ca fait quoi si on insere rien dans la table relation ? ca ne fauchera pourtant pas les données qui conserne l'etudiant , non ? s'il n'y a pas  des 2 key primaire qui relit Module à Etudiant , il ne peut pas y avoir de probleme .  
juste pour une question technique : si l'etudiant est obligé de prendre au moins une module (faut bien qu'il bosse un peu ce faineant  :whistle:  ) Mysql genere-t-il automatiquement les key de la table Relation qui devient :
create table RELATION
   (
   ID_TableModule         varchar(32)        not null,
   ID_TableEtudiant       int                not null,
   primary key (ID_TableModule ,ID_TableEtudiant)
   );
 
Et dans ma lancée , si je veux connaitre les presences des etudiants, je fais ca ?:  
 
tabModule--(1,n)--[relation2]--(1,1)--tabSession--(1,n)--[ralation3]--(1,1)--tabCours
 
dans mon cas chaque module a plusieurs session pendant l'année, et chaque session a plusieurs cours. Cela vaut-t-il la peine de créer une table "presence" ou bien juste créer un attribut supplementaire dans la table tabCours  
 
 

n°1175287
ali0baba
Posté le 12-08-2005 à 15:48:58  profilanswer
 

Si tu insere rien dans la table relation, ca ne possera pas de probleme au niveau de la bd mais ca ne respectera pas ton mcd de depart
 
et pour pouvoir genere automotiquement un tuple dans la table relation " si l'etudiant est obligé de prendre au moins une module " il faut que tu creer un trigger on insert etudiant ...

n°1175444
axo
Posté le 12-08-2005 à 19:04:11  profilanswer
 

ok je comprend mieux !
merci  encore pour ton aide
a+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL]cardinalité 1,n -- 1,n et clé étrangere

 

Sujets relatifs
[MySQL] Empêcher accès aux bases de données ...[RESOLU] -> [FMX/MySQL] GET ou POST??
[SVG] comment mettre à jour Mysql avec un fichier SVG ? [RESOLU]Mysql, jdbc et pb d'accents a s'en tirer les cheveux
Mysql, jdbc et pb d'accents a s'en tirer les cheveuxPHP & Mysql
[RESOLU] VB/EXCEL/manipulation de données pour transfert MySql[MySQL] Problème de recherche sur 3 tables
[MySQL]pb requete[Resolu][SGBD/SQL] - MYSQL - champ datetime et now() par defaut
Plus de sujets relatifs à : [MySQL]cardinalité 1,n -- 1,n et clé étrangere


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR