Un realisateur avec plusieur clé primaire
mking03
Messages postés
119
Statut
Membre
-
Marco la baraque Messages postés 1030 Statut Contributeur -
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,
j'ai 2 table realisateurs et films
CREATE TABLE `realisateurs` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(64) default NULL,
`prenom` varchar(64) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
) type=InnoDB;
CREATE TABLE `films` (
`id` int(11) NOT NULL auto_increment,
`titre` varchar(20) default NULL,
`realisateur_id` int(11) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `titre` (`titre`),
FOREIGN KEY (`realisateur_id`) REFERENCES `realisateurs` (`id`);
) type=InnoDB ;
quand j'interoge ma base par une page php on aura un realisateur a plusieur id si ce realisateur a produit plusieur films ;
exemple
nom="xxxx" prenom="yyyyy" id="54"
nom="xxxx" prenom="yyyyy" id ="32"
comment je peux regler sa SVP?
merci
j'ai 2 table realisateurs et films
CREATE TABLE `realisateurs` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(64) default NULL,
`prenom` varchar(64) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
) type=InnoDB;
CREATE TABLE `films` (
`id` int(11) NOT NULL auto_increment,
`titre` varchar(20) default NULL,
`realisateur_id` int(11) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `titre` (`titre`),
FOREIGN KEY (`realisateur_id`) REFERENCES `realisateurs` (`id`);
) type=InnoDB ;
quand j'interoge ma base par une page php on aura un realisateur a plusieur id si ce realisateur a produit plusieur films ;
exemple
nom="xxxx" prenom="yyyyy" id="54"
nom="xxxx" prenom="yyyyy" id ="32"
comment je peux regler sa SVP?
merci
A voir également:
- Un realisateur avec plusieur clé primaire
- Clé usb non détectée - Guide
- Clé windows 8 - Guide
- Formater clé usb - Guide
- Clé usb - Accueil - Stockage
- Clé bootable windows 10 - Guide
4 réponses
Bonsoir,
Voici ma façon de faire :
Une tablee films, une table réalisateurs, et une autre app_films.
Ta table films contient tous les films, ta table réalisateurs contient une seule fois chaque réalisateur et aucunes informations sur les films qu'ils ont réalisés dedans, ni de champs dans la table films pour dire qui a réalisé le film.
Dans la table app_films, tu met par enregistrement, l'id du réalisateur, et l'id du film réalisé (tu peux rajouté un id d'enregistrement qui ne te servira a quasi rien).
Ainsi un réalisateur peut réaliser autant de film qu'il le souhaite car les liaisons films-réalisateurs sont faites via la table app_films, mais un film peut aussi avoir plusieurs réalisateurs (c'est pas chouette ça pour les duos de réalisateurs? ^^).
Voici ma façon de faire :
Une tablee films, une table réalisateurs, et une autre app_films.
Ta table films contient tous les films, ta table réalisateurs contient une seule fois chaque réalisateur et aucunes informations sur les films qu'ils ont réalisés dedans, ni de champs dans la table films pour dire qui a réalisé le film.
Dans la table app_films, tu met par enregistrement, l'id du réalisateur, et l'id du film réalisé (tu peux rajouté un id d'enregistrement qui ne te servira a quasi rien).
Ainsi un réalisateur peut réaliser autant de film qu'il le souhaite car les liaisons films-réalisateurs sont faites via la table app_films, mais un film peut aussi avoir plusieurs réalisateurs (c'est pas chouette ça pour les duos de réalisateurs? ^^).
comme tu a dit un film peut avoir plusieur realisateur hors il faut avoir qu'un seul realisateur de chaque film ,si tu cree
une table intermediaire tu perd cette condition. donc comment faire?
une table intermediaire tu perd cette condition. donc comment faire?
Bonjour,
Pour que tes films ne puissent avoir qu'un seul utilisateur, il ne faut pas passer par une table d'association. En principe tes scripts SQL sont bons, je ne comprends pas pourquoi tu dis "quand j'interoge ma base par une page php on aura un realisateur a plusieur id si ce realisateur a produit plusieur films".
Quand tu ajoutes un nouveau film, il ne faut pas automatiquement ajouter une nouveau réalisateur, mais vérifier que celui que tu vas ajouter n'existe pas déjà (sinon tu vas avoir des doublons comme tu le mentionnes). Si le réalisateur existe déjà, il faut alors simplement récupérer son identifiant et s'en servir comme foreign key lors de l'insertion de ton film.
Cordialement,
Pour que tes films ne puissent avoir qu'un seul utilisateur, il ne faut pas passer par une table d'association. En principe tes scripts SQL sont bons, je ne comprends pas pourquoi tu dis "quand j'interoge ma base par une page php on aura un realisateur a plusieur id si ce realisateur a produit plusieur films".
Quand tu ajoutes un nouveau film, il ne faut pas automatiquement ajouter une nouveau réalisateur, mais vérifier que celui que tu vas ajouter n'existe pas déjà (sinon tu vas avoir des doublons comme tu le mentionnes). Si le réalisateur existe déjà, il faut alors simplement récupérer son identifiant et s'en servir comme foreign key lors de l'insertion de ton film.
Cordialement,