Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2005, 16h05   #1
Membre du Club
 
Inscription : novembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 193
Points : 57
Points : 57
Envoyer un message via MSN à jesus144
Par défaut détermination du shéma relationel d'une base de donnée

Bonjour,
J'ai un exercice sur les base de données:

Citation:
On veut stocker les informations suivantes dans une base de données:
Titre-Original, Titre-Français, Année, Pays, Réalisateur, Liste-d'acteur, Liste-d'actrice.

La base de données doit permettre d'effecuter des requettes comme:
-Quels sont les films réalisés par tel realisateur?
-Quels sont les acteurs ayant joué dans tel ou tel film?
-Quel réalisateur a dirigé tel acteur et dans quel film?
-Dans quel film ont joué ensemble tel et tel acteur?

Déterminer le schéma relationel permettant d'exploiter ces informations.
Voila la structure que j'ai retenu (clé primaire en gras):
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
jesus144 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2005, 16h44   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
La table Realisateur décrite n'est pas bonne
Code :
REALISATEUR(num_film, nom)
à 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 MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2005, 18h03   #3
Invité régulier
 
Inscription : mars 2002
Messages : 9
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 9
Points : 8
Points : 8
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.
Redbull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2005, 18h26   #4
Membre du Club
 
Inscription : novembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 193
Points : 57
Points : 57
Envoyer un message via MSN à jesus144
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
jesus144 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2005, 18h48   #5
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Citation:
un film est réaliser par 1 seul realisateur
Hum.... pas toujours...

Citation:
je ne vois pas pourquoi créer un num_real
C'est la théorie....

Citation:
pourquoi séparer ANNEE, PAYS et FILM
Encore la théorie...qui évite la redondance : si des valeurs se retrouvent plusieurs fois, pof une table (table des années, table des pays).

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 MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2005, 18h57   #6
Invité régulier
 
Inscription : mars 2002
Messages : 9
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 9
Points : 8
Points : 8
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.
Redbull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2005, 19h39   #7
Membre du Club
 
Inscription : novembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 193
Points : 57
Points : 57
Envoyer un message via MSN à jesus144
oui, merci beaucoup c'est gentil d'avoir pris le temps d'autant détailler.
jesus144 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h17.


 
 
 
 
Partenaires

Hébergement Web