cardinalité 1,n -- 1,n et clé étrangere [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 12-08-2005 à 09:51:27
axo a écrit : salut |
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 : |
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 !
Marsh Posté le 12-08-2005 à 15:05:43
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 ) 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
Marsh Posté le 12-08-2005 à 15:48:58
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 ...
Marsh Posté le 11-08-2005 à 21:30:15
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+