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

Modélisation Discussion :

Probleme de relation entre mes tables [AC-2003]


Sujet :

Modélisation

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut Probleme de relation entre mes tables
    Bonjour,

    cette discussion est la suite de celle ci http://www.developpez.net/forums/d12...aisie-donnees/ que j'ai déjà marquée comme résolue

    il ya le probleme suivant qui se pose:

    j'ai une table ticket (IDTicket,#IdEtudiant,.... )

    qui est en relation avec la table Etudiant(IdEtudiant, Nom, ...)

    et les trois autres tables suivantes

    Imprimante(IdImprimante, Nom, ...) ;
    Ecran(IdEcran, Nom, ...) ;
    Ordinateur(IdOrdinateur, Nom, ...) ;




    je n'arrive pas à bien concevoir ma table ticket.

    voici ce que j'avais comme table ticket avant le changement.


    Ticket (IDTicket,#IdEtudiant,#IdMateriel_Info,#IdSurveillant,... )


    quand un appareil tombe en panne, l'étudiant qui l'utilise doit établir un ticket pour tenir le surveillant au courant.

    la clé #IdMateriel_Info devrait permettre de savoir de quel materiel il s'agit.

    je vais le résumé comme ca:

    1 étudiant peut établir n ticket(s) ou pas du tout ;
    1 ticket peut être établi par n étudiant(s) ou par aucun d'eux;
    jusque là tout marche bien.

    voici où le probleme se pose:
    je dois remplacer dans la table Ticket la clé étrangere par #IdMateriel_Info par #IdImprimante, #IdEcran, #IdOrdinateur

    et j'arrive pas.

    besoin d'aide

    Merci.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Kesamba,

    Citation Envoyé par Kesamba
    je dois remplacer dans la table Ticket la clé étrangere par #IdMateriel_Info par #IdImprimante, #IdEcran, #IdOrdinateur
    ==> tu devrais pouvoir résoudre cette problématique via la technique de l'héritage.

    Mais, d'abord, es-tu certain que
    Citation Envoyé par Kesamba
    1 ticket peut être établi par n étudiant(s) ou par aucun d'eux;
    ?
    ==> à mon avis, 1 ticket ne peut être établi que par 1 étudiant et, forcément, par 1 étudiant. Autrement dit, plusieurs étudiants ne vont pas créer un même ticket. Non ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Tu as raison. 1 ticket ne peut être établi que par 1 étudiant. Je me suis mal exprimé.

    peux tu me donner un exemple de cette technique ou un lien exemple qui me l'explique d'une facon pas très compliquée? car dit on l'exemple vaut mieux que la lecon

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Il faut passer par une table "mère" :
    Materiel(IdMateriel, [informations communes à tous les matériels])
    les tables qui héritent deviennent :
    Imprimante(IdMateriel, [informations propres aux imprimantes])
    Ecran(IdMateriel, [informations propres aux écrans])
    Ordinateur(IdMateriel, [informations propres aux ordinateurs])
    ==> il faut vérifier que IdMateriel n'est distribué qu'une seule fois.
    ce qui donne :
    Ticket(IDTicket,#IdEtudiant,#IdMateriel,#IdSurveillant,... )
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Bonjour Richard_35,

    Je te remercie vivement pour l’exemple.
    Mais je suis un peu confuse. Par rapport à ces trois tables



    Imprimante(IdMateriel, [informations propres aux imprimantes])
    Ecran(IdMateriel, [informations propres aux écrans])
    Ordinateur(IdMateriel, [informations propres aux ordinateurs])


    Que deviennent les clés primaires

    IdImprimante, IdEcran, IdOrdinateur voire la dernière discussion

    Les trois tables étaient définies comme suit :


    Imprimante(IdImprimante, Nom, ...) ;
    Ecran(IdEcran, Nom, ...) ;
    Ordinateur(IdOrdinateur, Nom, ...) ;

    Et j’avais des tables dites "associatives"

    Etudiant_Imprimante(#IdEtudiant, #IdImprimante, ...) ;
    Etudiant_Ecran(#IdEtudiant, #IdEcran, ...) ;
    Etudiant_Ordinateur(#IdEtudiant, #IdOrdinateur, ...).

    Est-ce que je dois aussi modifier tables "associatives" ?

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Kesamba,

    Citation Envoyé par Kesamba
    Que deviennent les clés primaires IdImprimante, IdEcran, IdOrdinateur (voir la dernière discussion) ?
    Les trois tables étaient définies comme suit :
    Imprimante(IdImprimante, Nom, ...) ;
    Ecran(IdEcran, Nom, ...) ;
    Ordinateur(IdOrdinateur, Nom, ...) ;
    ==> dans ta précédente discussion, il me semble que tu n'avais pas évoqué la notion de ticket qui concerne un matériel, quel qu'il soit. Donc, effectivement, il faut remplacer IdImprimante, IdEcran, IdOrdinateur par IdMateriel.
    Citation Envoyé par Kesamba
    Et j’avais des tables dites "associatives"
    Etudiant_Imprimante(#IdEtudiant, #IdImprimante, ...) ;
    Etudiant_Ecran(#IdEtudiant, #IdEcran, ...) ;
    Etudiant_Ordinateur(#IdEtudiant, #IdOrdinateur, ...).
    Est-ce que je dois aussi modifier tables "associatives" ?
    ==> eh bien, cela dépend...

    Si les couples Etudiant_Imprimante, Etudiant_Ecran et Etudiant_Ordinateur possèdent des attributs différents, alors il faut garder :
    Etudiant_Imprimante(#IdEtudiant, #IdImprimante, [informations propres au couple Etudiant/Imprimante]) ;
    Etudiant_Ecran(#IdEtudiant, #IdEcran, [informations propres au couple Etudiant/Ecran]) ;
    Etudiant_Ordinateur(#IdEtudiant, #IdOrdinateur, [informations propres au couple Etudiant/Ordinateur]).

    Si les couples Etudiant_Imprimante, Etudiant_Ecran et Etudiant_Ordinateur possèdent les mêmes attributs, alors il faut :
    Etudiant_Materiel(#IdEtudiant, #IdMateriel, [informations liées au couple Etudiant/Materiel]).
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Dans ma précédente discussion, je ne savais pas encore qu’il fallait établir les tickets pour le matériel en panne.

    on va dire que pour mon problème, il faut considérer deux cas de figure.

    Le premier cas c’est si les couples Etudiant_Imprimante, Etudiant_Ecran et Etudiant_Ordinateur possèdent les mêmes attributs

    Alors on aura besoin de deux tables intermédiaires:
    Materiel(IdMateriel, [informations communes à tous les matériels]) et

    Etudiant_Materiel(#IdEtudiant, #IdMateriel, [informations liées au couple Etudiant/Materiel]). Là c’est clair.


    C’est le deuxième cas qui me fait défaut. Le cas où les couples Etudiant_Imprimante, Etudiant_Ecran et Etudiant_Ordinateur possèdent des attributs différents alors


    Les Tables sont définies comme ci dessous

    Etudiant(IdEtudiant, Nom, ...) ;
    Imprimante(IdImprimante, Nom, ...) ;
    Ecran(IdEcran, Nom, ...) ;
    Ordinateur(IdOrdinateur, Nom, ...) ;


    Et les tables associatives aussi sans clé étrangère #IdMateriel. Puisqu’on n’aura pas besoin de la table Materiel(IdMateriel,…)


    Etudiant_Imprimante(#IdEtudiant, #IdImprimante, [informations propres au couple Etudiant/Imprimante]) ;
    Etudiant_Ecran(#IdEtudiant, #IdEcran, [informations propres au couple Etudiant/Ecran]) ;
    Etudiant_Ordinateur (#IdEtudiant, #IdOrdinateur, [informations propres au couple Etudiant/Ordinateur]).

    Question:
    1- Comme se fera alors la relation entre par exemple Etudiant_Imprimante et Ticket
    Puisque dans la table Ticket il n’y a pas de #IdImprimante et dans la table Etudiant_Imprimante il n’ ya pas de # IDTicket qui les lient d’une façon ou d’une autre

    2- Et la table Ticket comment va-t-on la définir dans ce cas ?

    Merci

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par Kesamba
    Dans ma précédente discussion, je ne savais pas encore qu’il fallait établir les tickets pour le matériel en panne.
    ==> fais attention : en découvrant ce qu'il faut faire au fur et à mesure de la modélisation, tu risques de découvrir des contraintes qui remettront en cause ton analyse précédente... Il faut donc analyser l'ensemble du projet et définir des règles de gestion précises avant de passer à la structure des tables.
    Citation Envoyé par Kesamba
    1- Comme se fera alors la relation entre par exemple Etudiant_Imprimante et Ticket
    Puisque dans la table Ticket il n’y a pas de #IdImprimante et dans la table Etudiant_Imprimante il n’ ya pas de # IDTicket qui les lient d’une façon ou d’une autre
    ==> pas de relation entre Etudiant_Imprimante et Ticket. Ticket pointera vers Etudiant et vers Imprimante, Etudiant_Imprimante ne servirait que pour déterminer si le couple Etudiant/Imprimante est valide au moment de la création du ticket.
    Citation Envoyé par Kesamba
    2- Et la table Ticket comment va-t-on la définir dans ce cas ?
    ==> cela pourrait être :
    Ticket(IDTicket, #IdEtudiant, #IdSurveillant,... ) ;
    Ticket_Imprimante(IDTicket, #IdImprimante, ... ) ;
    Ticket_Ecran(IDTicket, #IdEcran, ... ) ;
    Ticket_Ordinateur(IDTicket, #IdOrdinateur, ... ).
    propre, mais un peu lourd... car s'il y a d'autre matériel, il faut ajouter une table...
    Sinon :
    Ticket(IDTicket, #IdEtudiant, #Materiel, TypeMateriel (I/E/O), #IdSurveillant,... )
    moins propre, mais plus simple... s'il y a d'autre matériel, il faut ajouter une valeur de flag.

    Le mieux, comme indiqué précédemment, est de savoir exactement ce qu'il faut faire.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Relation entre mes tables
    Par Jigsaw80 dans le forum Modélisation
    Réponses: 8
    Dernier message: 20/03/2013, 09h17
  2. [AC-2010] besoin d'aide pour valider mes relations entre les tables de ma bdd svp
    Par paulux67 dans le forum Modélisation
    Réponses: 13
    Dernier message: 28/05/2012, 23h59
  3. Besoin d'aide sur les relations entre mes tables
    Par Jenojen dans le forum Bases de données
    Réponses: 102
    Dernier message: 06/09/2008, 12h27
  4. Probleme de relation entre deux tables
    Par Mimisio dans le forum Modélisation
    Réponses: 5
    Dernier message: 17/07/2007, 14h30
  5. [Conception] Quelles relations entre mes tables ?
    Par jeromepiwees dans le forum Modélisation
    Réponses: 4
    Dernier message: 26/03/2007, 12h12

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