IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Gestion de médiathèque


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut Gestion de médiathèque
    Bonjour à tous !

    J'ai un projet à faire en première année de BTS et je dois passer par le MCD ! J'ai choisi le sujet "bateau" de la gestion d'une médiathèque. Voici le premier "jet" de mon MCD.

    MCD V1


    Donc il y a certainement un nombre incalculable d'atrocités mais je rappel que c'est un premier jet :p

    Concernant l'entité "artiste" elle regroupe tous les possible contributeurs à un FILM/CHANSON/LIVRE. Je regroupe tout ce beau monde car un acteur pouvant également être réalisateur par exemple, il y aurait eu redondance a créer une table acteur et un table réalisateur non ? (A moins de faire une table Acteur avec le NUM_ACTEUR, NUM_ARTISTE en attributs...).

    Sinon je compte faire une entité MEDIA(NUM_MEDIA,TITRE_MEDIA, EAN_MEDIA) qui aurait en héritiers les tables CD/VIDEO/LIVRE avec les attributs spécifiques a chacun).

    Voilà pour le moment je vais aller passer une (courte) nuit

    Merci !!

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je te rassure, pour un premier jet, c'est pas mal du tout !

    Concernant l'entité "artiste" elle regroupe tous les possible contributeurs à un FILM/CHANSON/LIVRE. Je regroupe tout ce beau monde car un acteur pouvant également être réalisateur par exemple, il y aurait eu redondance a créer une table acteur et un table réalisateur non ? (A moins de faire une table Acteur avec le NUM_ACTEUR, NUM_ARTISTE en attributs...).
    J'ai fait le même genre de truc pour ma BDD personnelle de documentation cinéma mais j'y ai ajouté une entité "Fonction" qui permet de préciser justement à quel titre un artiste a participé à un film (acteur, réalisateur...). Il y a donc chez moi une association ternaire entre Artiste, Film et Fonction :

    Artiste -0,n----Participer----0,n- Film
    Fonction -0,n-------|

    Dans ton cas, il faut trois associations ternaires si tu conserves ton modèle actuel.

    Sinon je compte faire une entité MEDIA(NUM_MEDIA,TITRE_MEDIA, EAN_MEDIA) qui aurait en héritiers les tables CD/VIDEO/LIVRE avec les attributs spécifiques a chacun).
    C'est une idée intéressante dans la mesure où l'association ternaire que je décris plus haut reste ainsi unique :

    Artiste -0,n----Participer----0,n- Media
    Fonction -0,n-------|

    Maintenant critiquons quand même un peu ton premier jet...

    1) Tu as un attribut relatif aux villes dans les entités Artiste et Utilisateur. Il conviendrait de l'externaliser dans une entité "Ville" afin d'éviter les saisies différentes de villes identiques (Saint-Étienne, St.-Étienne, Saint Etienne...).

    2) Que signifie l'attribut "Inscription_utilisateur" ?
    Qu'est-il censé contenir ?

    3) Plus grave !
    Puisque tu as une association entre tes différents médias et les artistes, inutile d'ajouter des attributs relatifs à ces artistes dans les entités représentant les médias. Tu peux supprimer Compositeur_CD, Parolier_CD, Producteur_CD, Auteur_Livre et surtout l'horrible Acteurs_Video qui suppose que tu stockes dans un seul attribut plusieurs acteurs, ce qui contraire au principe fondamental des BDDR : une colonne = une donnée.

    4) Idem que les villes pour les genres.
    Genre_CD, Genre_Video et Genre_Livre doivent être externalisés dans une entité "Genre".

    5) Editeur_Livre va probablement contenir plusieurs fois le même nom de société éditrice (Gallimard, Le Seuil...). Il faudrait donc aussi externaliser cet attribut dans une entité séparée.

    Bon courage pour la suite.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Merci pour ta réponse !

    Bonne idée pour la Fonction, cela m'évitera une entité pour chaque métier, mais de quoi serait composée l'entité ? (Car si je dois mettre l'artiste dedans, il faudrait une autre entité "libellé Fonction" pour éviter la redondance des termes acteur, réalisateur etc etc ?)

    Maintenant je vais répondre aux critiques de manière virulente ! :p
    Non mais je me doutais qu'il y avait plusieurs choses qui n'allaient pas !

    1) L'entité Ville j'ai hésité à la créer en fait (c'est surtout qu'a la base je voulais créer une entité Ville avec le nom de la ville et le code postal et mon prof avait l'air de trouver cela..."inutile" ^^ mais c'était sur mon idée première où la ville n'était que dans la table Utilisateur)

    2)Inscription_Utilisateur signifie "Data_Inscription_Utilisateur" écrit à un moment où je suis fatigué et que j'oublie donc des mots

    3) et 4) Ce sont les atrocités dont je parlais dans mon premier post ! Le genre je vais en faire une entité séparée oui, pour acteurs, écrivain etc c'était juste pour écrire ce que je voulais à l'intérieur en fait, le Merise étant récent pour moi je connais encore les "principes fondateurs" donc je ne comptais surtout pas mettre "acteurs" en attribut, à moin de vouloir une note assez proche du 0

    5) Oui comme le reste en fait. Mais sur mon premier jet papier je l'avais déjà externaliser mais là pour aller plus vite j'ai tout mis comme c'est !

    Je ferai une deuxième version d'ici ce soir !

    Merci beaucoup de ton aide en tout cas

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Dadar Voir le message
    Bonne idée pour la Fonction, cela m'évitera une entité pour chaque métier, mais de quoi serait composée l'entité ? (Car si je dois mettre l'artiste dedans, il faudrait une autre entité "libellé Fonction" pour éviter la redondance des termes acteur, réalisateur etc etc ?)
    Mon schéma :
    Artiste -0,n----Participer----0,n- Media
    Fonction -0,n-------|
    Les trois entités (partielles) :
    Artiste (a_id, a_nom, a_prenom...)
    Media (m_id, m_titre...)
    Fonction (f_id, f_libelle)

    La table qui sera issue de l'association :
    Participer (p_id_artiste, p_idmedia, p_id_fonction)

    1) L'entité Ville j'ai hésité à la créer en fait (c'est surtout qu'a la base je voulais créer une entité Ville avec le nom de la ville et le code postal et mon prof avait l'air de trouver cela..."inutile" ^^ mais c'était sur mon idée première où la ville n'était que dans la table Utilisateur)
    J'ai donné la raison de la bonne pratique de créer une entité Ville, avec l'exemple, il me semble évident, de Saint-Étienne.
    Quant au code postal dans l'entité Ville, ce n'est pas forcément une bonne idée car à un code postal peuvent correspondre plusieurs villes et à une ville peuvent correspondre plusieurs codes postaux.
    Ou alors il faut une entité Code_Postal reliée à Ville pour éviter les erreurs de saisie qui pourraient donner à Saint-Étienne un code postal en Gironde.

    2)Inscription_Utilisateur signifie "Data_Inscription_Utilisateur" écrit à un moment où je suis fatigué et que j'oublie donc des mots
    Sauf que je ne comprends toujours pas de quoi il s'agit mais bon...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Mon schéma :


    Les trois entités (partielles) :
    Artiste (a_id, a_nom, a_prenom...)
    Media (m_id, m_titre...)
    Fonction (f_id, f_libelle)

    La table qui sera issue de l'association :
    Participer (p_id_artiste, p_idmedia, p_id_fonction)
    OK c'est noté je ferai ça

    J'ai donné la raison de la bonne pratique de créer une entité Ville, avec l'exemple, il me semble évident, de Saint-Étienne.
    Quant au code postal dans l'entité Ville, ce n'est pas forcément une bonne idée car à un code postal peuvent correspondre plusieurs villes et à une ville peuvent correspondre plusieurs codes postaux.
    Donc je ferai mieux de ne laisse que la ville ? ou bien avoir une entité Ville/CodePostal avec dedans toutes les villes avec leur code postal respectif ? (ça doit se trouver quelque part ça !)


    Sauf que je ne comprends toujours pas de quoi il s'agit mais bon...
    Non mais là c'est moi qui ne me relis pas assez : Date_Inscription_Utilisateur ! La date d'inscription de l'adhérent si tu préferes ^^

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Dadar Voir le message
    Donc je ferai mieux de ne laisse que la ville ? ou bien avoir une entité Ville/CodePostal avec dedans toutes les villes avec leur code postal respectif ? (ça doit se trouver quelque part ça !)
    C'est toi qui choisis. Comme il s'agit d'un exercice de BTS, tu peux peut-être te contenter de l'entité Ville, d'autant plus si ton prof trouvait ça déjà superflu.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Voilà la seconde version de mon MCD ! Pas mal modifié au passage !


  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Un artiste peut naître dans plusieurs villes ?

    Un CD contient au moins 1 piste.

    EAN_MEDIA suppose que les trois types de média ont un EAN alors que dans ton premier MCD cet attribut ne concernait que les CD et les Vidéos.

    Je mettrais plutôt 0,n sur les pattes du côté des entités de référence Ville et Fonction. On peut créer les fonctions et les villes avant d'avoir des données à associer avec ces entités.

    Avec ton schéma, un utilisateur ne peut pas emprunter plusieurs fois le même média.
    Tu pourrais ajouter une date d'emprunt à l'association et faire participer cet attribut à la clé.

    D'une manière générale, j'évite autant que possible de mettre des cardinalités minimales à 1 sur les deux pattes d'une association car ça peut poser des problèmes inutiles à l'implémentation de la BDD. Je mettrais donc également 0,n côté Editeur et Producteur.

    Si le producteur est forcément une personne, tu peut l'intégrer en tant qu'artiste.
    Si c'est une société, c'est également le cas de l'éditeur. D'ailleurs il y a aussi des société qualifiées d'éditeur pour les CD et les Video.
    Tu pourrais donc généraliser les éditeurs et les producteurs dans une entité Société avec les associations Produire et Editer qui vont bien.

    Tu as souligné l'attribut ID_VILLE pour en faire la clé de l'entité mais tu ne l'as pas fait pour les autres entités.

    C'est tout pour le moment. Ça prend forme !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Un artiste peut naître dans plusieurs villes ?
    Un CD contient au moins 1 piste.
    Ce sont les cardinalités par défaut j'ai oublié de les changer celles là

    EAN_MEDIA suppose que les trois types de média ont un EAN alors que dans ton premier MCD cet attribut ne concernait que les CD et les Vidéos.
    EAN = code barre, que j'avais oublié de mettre dans le premier MCD (moi ? tête en l'air ? NANNNNNNN )

    Je mettrais plutôt 0,n sur les pattes du côté des entités de référence Ville et Fonction. On peut créer les fonctions et les villes avant d'avoir des données à associer avec ces entités.
    Bah je pars du principe qu'on ajoute un acteur/une ville qu'à partir du moment où un acteur/adhérent vient de cette ville.
    D'ailleurs je pense simplement supprimer la ville de naissance des artistes pour simplifier le tout.

    Avec ton schéma, un utilisateur ne peut pas emprunter plusieurs fois le même média.
    Tu pourrais ajouter une date d'emprunt à l'association et faire participer cet attribut à la clé.
    Oui j'y pensais

    D'une manière générale, j'évite autant que possible de mettre des cardinalités minimales à 1 sur les deux pattes d'une association car ça peut poser des problèmes inutiles à l'implémentation de la BDD. Je mettrais donc également 0,n côté Editeur et Producteur.
    Même remarque que pour la ville

    Si le producteur est forcément une personne, tu peut l'intégrer en tant qu'artiste.
    Si c'est une société, c'est également le cas de l'éditeur. D'ailleurs il y a aussi des société qualifiées d'éditeur pour les CD et les Video.
    Tu pourrais donc généraliser les éditeurs et les producteurs dans une entité Société avec les associations Produire et Editer qui vont bien.
    C'est noté !

    Tu as souligné l'attribut ID_VILLE pour en faire la clé de l'entité mais tu ne l'as pas fait pour les autres entités.
    C'est parce que c'est pour l'instant fait à la va-vite :p

    C'est tout pour le moment. Ça prend forme !
    MERCI ENCORE !!!!

    (Je vais corriger ça chez moi ce soir, je suis encore au boulot là ! (Alternance oblige...))

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Et voilà la V3, version définitive ?


  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu n'as pas souligné l'attribut Date_emprunt porté par l'association Emprunter pour signifier qu'il participe à la clé de l'association. Je ne sais pas si c'est possible avec ton logiciel de modélisation.
    D'ailleurs, n'appelle pas cet attribut "date d'emprunt" mais Date_emprunt. Il faut éviter les noms d'objets avec des apostrophes, espaces, lettres accentuées...

    Je t'avais déconseillé de mettre des cardinalités minimales à 1 partout !
    Avec ton dernier MCD, une société est obligatoirement à la fois productrice d'au moins un CD, d'une vidéo et éditrice d'un livre.

    D'ailleurs, je mettrais ces associations directement entre SOCIETE et MEDIA.
    SOCIETE -0,n----Produire----0,n- MEDIA
    |----------------0,n----Editer----0,n-----------|

    Est-il normal que maintenant la piste de CD puisse être sur plusieurs CD ?
    Pourquoi pas remarque ! Les CD de compilations reprennent des titres figurant sur d'autres CD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Pour les cardinalités je t'ai expliqué pourquoi je le mets à 1 à certains moments (EX : un artiste contribue à minimum 1 média, sinon il n'existe pas dans la base !).

    Pour la ville je pense enlever la table Ville et juste mettre un champ Ville dans la table utilisateur pour simplifier un peu le tout.

    C'est noté pour date_emprunt et la relation societe/media !

    Merci

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Dadar Voir le message
    Pour les cardinalités je t'ai expliqué pourquoi je le mets à 1 à certains moments (EX : un artiste contribue à minimum 1 média, sinon il n'existe pas dans la base !).
    Tu seras donc obligé de faire un trigger à l'insertion car si tu crées un MEDIA, selon le MCD, il doit être associé à au moins une contribution relative à un artiste et une fonction pré-existants dans la BDD.

    Pour la ville je pense enlever la table Ville et juste mettre un champ Ville dans la table utilisateur pour simplifier un peu le tout.
    Et tu risques d'avoir des saisies multiples de la même ville avec des orthographes différentes.

    Il est plus rigoureux de laisser l'entité Ville.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut
    Ah je n'y avais pas pensé à ça Bon je vais revoir mes cardinalités alors ^^

    Pour la ville, je suis 100% d'accord avec toi, je me base simplement sur les cours qu'on a eu où la ville était directement dans les tables. Même si c'est pas des plus rigoureux, je ne serai je pense pas pénalisé pour ça et ça simplifie un peu ! C'est tout bénef

Discussions similaires

  1. Gestion d'une médiathèque privée (DCP)
    Par ova13 dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 25/10/2009, 00h08
  2. Gestion d'une médiathèque privée
    Par ova13 dans le forum Cas d'utilisation
    Réponses: 13
    Dernier message: 22/10/2009, 00h45
  3. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  4. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11
  5. gestion d'un joystick ...
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo