Un realisateur avec plusieur clé primaire

Fermé
mking03 Messages postés 114 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 6 février 2017 - 26 déc. 2008 à 23:20
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 27 déc. 2008 à 16:57
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
A voir également:

4 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
26 déc. 2008 à 23:30
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? ^^).
0
mking03 Messages postés 114 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 6 février 2017 37
27 déc. 2008 à 10:52
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?
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
27 déc. 2008 à 16:48
Met le champs qui contient l'id_film dans la table app_film en UNIQUE.
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
27 déc. 2008 à 16:57
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,
0