|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre du Club
![]() |
Bonjour,
J'ai un exercice sur les base de données: Citation:
FILM(num_film, titre_original, titre_français, année, pays) REALISATEUR(num_film, nom) A_JOUER_DANS(num_acteur, num_film) ACTEUR(num_acteur, nom) ACTRICE(num_acteur, nom) La 1ère question que je me pose est de savoir si il faut ou non séparer le titre français de la table FILM pour le mettre dans une autre table qui ressemblerait à FILM_TRAD(num_film, titre_français). D'autre part, j'ai du mal sur les cardinalitée de mes tables... est ce bien ça: FILM [1-1]---------------------------------------------------[1-n] REALISATEUR FILM [1-n]---------[1-n] A_JOUER_DANS [1-n]----------[1-1] ACTEUR FILM [1-n]---------[1-n] A_JOUER_DANS [1-n]----------[1-1]ACTRICE Si vous pouviez me dire ce que vous pensé de tous ça... MERCI BEAUCOUP |
|
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
La table Realisateur décrite n'est pas bonne
à cause de num_film .... => num_real ! Ensuite il faut 1 asso entre film et réalisateur...
__________________
"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
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 9 ![]() |
Version simple :
![]() Version non-redondante : ![]() Sinon à pars ça il ma fallu au moins 5 bonnes minutes pour pondre ça. Donc sois tu débutes dans le domaine et je te conseil de relire ta théorie ou de demander quelques explications au prof, ou alors tu débutes pas et je te conseil de changer de formation, car ce genre d'exercice c'est la base de la base. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() |
Merci,
Mais je ne comprend pas bien (je débute effectivement) j'ai deux ou trois questions sur ce que vous avez fait: 1) pourquoi faire une association entre film et réalisateur??? un film est réaliser par 1 seul realisateur, donc il n'y aurra pas de redondance et je ne vois pas pourquoi créer un num_real??? 2) Même raisonement dans la réponse de Redbull: pourquoi séparer ANNEE, PAYS et FILM ??? 3) dans l'exemple sans redondance, les tables FILM et ACTEURS sont en relation n,n; 1 acteur joue dans plusieur films et plusieurs acteurs jouent dans le même film. Si on ne passe pas par une table annexe, n'y aurra t il pas redondance dans la table ACTEUR??? MERCI DE VOTRE AIDE |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Citation:
Citation:
Citation:
Ce n'est qu'au moment du MPD que l'on peut choisir de dénormaliser son modèle pour intégrer l'année dans film par exemple.
__________________
"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
|
|
|
#6 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 9 ![]() |
1) Si tu veux relier tes tables film et réalisateur, tu est bien obliger d'y mettre une association entre les 2. Un film est réaliser par 1 et 1 seul réalisateur, mais un réalisateur peu réaliser plusieurs films.
2) Ce n'est pas une obligation, mais c'est une bonne habitude à prendre. Si tu met le pays dans la table film, tu auras des donnée du genre : Inspecteur Gadget : USA Mission Impossible : USA XXX : France XXXY : USA Maintenant, disont que demain les états-unis sont victime d'un coup d'état (bon c'est peu probable c'est juste pour l'exemple) et que le pays est renommé en Glouglouland, tu as dans ta base 10'000 film qui viennent des USA, combien de fois tu dois changer le champs si ta mis le pays dans film ? 10'000 fois. Combien de fois tu dois le changer si tu la mis dans une table à part ? 1 Fois. Ensuite quand tu devras créer une interface pour ton appli, quand ta secrétraire devra ajouter un film, tu pourras lui faire choisir le pays avec une liste déroulante. Sinon tu vas te retrouver avec des données du genre : Mission Impossible : USA Inspecteur Gadget : Etats-Unis Garfield : Etat-Unis 3 fois le même pays, 3 ortho différentes, tu fait un select la dessus = tes résultats son faux. Dans une base de donnée, même si elle est modéliser parfaitement, tu auras toujours des erreurs de fiabilité des informations à cause d'une mauvaise saisie des informations, autant limité ce type d'erreur au maximum. 3) Je comprend pas très bien la question. Il s'agit la d'un modèle conceptuel de donnée, pas du modèle physique. Dans le modèle physique les cardinalités disparaissent et son remplacer par des clé étrangères. Lors d'une relation ...,n;...,n l'association se transforme en table dont la clé primaire est les clé primaire des 2 tables liées. Lors d'une relation ...,1;...,n la clé primaire de la table ou se trouve le n est migré en tant que clé étrangère dans la table ou se trouve le 1. Donc si avec une requète SQL tu veux savoir les films réaliser par le réalisateur numéro 2, cela te donnera un truc du genre : SELECT * FROM FILM WHERE fk_num_real = 2 Le modèle que tu as fait n'est pas un MCD, c'est un mélange entre un MCD et un MLD. Voila ce que donnerais le MLD de la version simple : ![]() En espérant avoir été un peu plus clair. PS: J'ai fait une connerie dans la version non-redondante, il faut enlever les champs année et pays de l'entité film puisqu'ils n'ont plus rien à faire la. |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() |
oui, merci beaucoup c'est gentil d'avoir pris le temps d'autant détailler.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com