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 :

Traduction de la relation d'héritage. [MPD]


Sujet :

Schéma

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut Traduction de la relation d'héritage.
    Bonjour tout le monde,

    Je travaille sur la conception d'une base de données qui contient une relation d'héritage comme sur la figure ci dessous.

    J'aimerai savoir si je décide d'utiliser la première solution proposée ici, est ce que je dois faire disparaitre la table Questions dans le MPD tout en copiant ses attributs dans chacune des tables filles?

    Merci pour vos éventuelles réponses.
    Images attachées Images attachées  
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Votre schéma de relations ne correspond pas véritablement à un héritage !

    Je le traduis en MCD Merise :
    Question -0,n----Associer1----1,1- Question_directe
    |--------------0,n----Associer2----1,1- Question_indirecte

    Ce qui se traduit par :
    "Une question peut être associée à plusieurs questions directes et/ou indirectes et une question directe ou une question indirecte est associée à une seule question."

    L'héritage correspond à ce MCD :
    Question_directe -(1,1)----Etre----0,1- Question
    Question_indirecte -(1,1)----Etre----0,1------|

    Ce qui se traduit par :
    "Une question directe ou une question indirecte est une question et une question est une question directe ou une question indirecte."

    Quel est le bon schéma dans votre cas ?

    Quoi qu'il en soit, si vous supprimez la table question, vous n'avez plus d'héritage !
    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 du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Vous avez raison, je n'ai pas bien expliqué mon schéma.

    Le bon schéma dans mon cas c'est le deuxième que vous avez donnée c'est-à-dire qu'une question directe ou une question indirecte est une question et une question est une question directe ou une question indirecte.

    Maintenant que me proposez-vous comme solution?
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Je reprends donc le schéma de l'héritage :
    Question_directe -(1,1)----Etre----0,1- Question
    Question_indirecte -(1,1)----Etre----0,1------|
    Il découle de ce schéma les tables suivantes :
    Question (q_id, q_question, ...)
    Question_directe (qd_id_question...)
    Question_indirecte (qi_id_question...)

    L'identifiant des tables filles est en même temps clé étrangère référençant l'identifiant de la question.

    On fait normalement un héritage lorsque les attributs des tables filles sont différents. Je vois sur votre schéma que ce sont les mêmes attributs. Êtes-vous sûr d'avoir besoin d'un héritage ? Un simple typage, comme le laisse supposer la présence de la colonne Type dans la table Questions, ne serait-il pas suffisant ?

    Autrement dit, ce schéma ne serait-il pas suffisant ?
    Type_question -0,n----Typer----1,1- Question

    Tables qui découlent du dernier MCD :
    Type_question (tq_id, tq_libelle)
    Question (q_id, q_id_type, q_question, q_reponse...)
    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 du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Oui je vois de quoi vous parlez et ca me parait logique.

    Cependant vous savais qu'une question directe se répond souvent par oui ou non alors qu'une question indirecte se répond par une phrase.

    Les deux attributs réponses sont de types différents car l'un est de type Oui/Non(Une case à cocher sur un formulaire) et l'autre de type Texte(Un champ Texte dans le formulaire). Mon entreprise utilise Ms Access sgbd et toute l'application que je conçois est basée sur Access.

    C'est pourquoi j'ai utilisé l'héritage afin différencier les deux réponses que l'on peut avoir selon le type de question posée.

    Qu'en pensez-vous?
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    OK pourquoi pas ?

    Les colonnes de vos tables semblent alors bonnes mais ce qu'il faut changer c'est la nature des relations entre la table mère Questions et les tables filles Questions_directes et Questions_indirectes.

    N'ayant plus touché à MS Access depuis longtemps, je crois qu'il faut double-cliquer sur le trait de la relation pour définir son type.
    Il faudra aussi définir les contraintes d'intégrité référentielle je pense.
    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 du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    D'accord je les ai changées.

    Mais j'ai une autre petite question concernant toujours mon modèle. La table Question est en relation avec une autre table Prospections. (Voir l'image jointe)

    Maintenant j'aimerai savoir si les liaisions ne devraient pas se faire entre les tables prospections et questions directes d'une part et entre la même table prospections et questions indirectes d'autres part au lieu de laisser le schéma inctact?
    Images attachées Images attachées  
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Je ne crois pas non.
    Ce que je comprends de ton schéma, c'est qu'à chaque propection il y a plusieurs questions et que chaque question est soit une question directe, soit une question indirecte. Le chemin est donc bien :
    Prospection => Question => question (in)directe
    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 du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Alors ok.

    Merci pour votre aide.
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Salut,

    Ceci est une suite de ma discussion commencée ci-haut.

    Je viens de changer le modèle de ma base de données.

    Une question qui est soit une question directe ou une question indirecte peut être posée par une ou plusieurs personne(s) alors q'une personne pose une ou plusieurs question(s).

    Donc vous voyez que j'ai désormais une relation de plusieurs entre les tables personne et question.

    On sait que mes sous tables questions(question_directe et question_indirecte) posséder chacune une réponse qui est soit une réponse directe (de type Oui/Non dans Access), soit une réponse indirecte (type Texte). Et ça semblait correcte avec le modèle que j'avais.

    Maintenant le soucis, c'est que je dois mettre le champs réponse dans la table de jonction entre les tables personne et question. Mais dans ce cas, quel sera le type de mon champs réponse(Oui/Non, Texte ou les deux)?Dans "ou les deux", entendez par là que j'envisage de créer deux champs dans cette table de jonction.L'un sera réponse_directe ou réponse_indirecte selon le type de la question posée.
    Et dans ce cas là, un des deux champs réponse sera null si la question posée ne fournit pas une réponse de ce type. Est-ce une bonne façon de faire?

    J'espère que je suis clair. Merci de vos éventuelles réponses
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  11. #11
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Slt à tous,

    J'ai changé mon modèle en enlevant la spécialisation de la table Question.
    Maintenant toute question (qu'elle soit directe ou indirecte) possède une réponse qui est de type texte.

    Je crois que ça devient compliqué en voulant spécialiser les questions car cela nécessiterait également la spécialisation des réponses.

    Merci pour votre aide!
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

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

Discussions similaires

  1. mapper une relation d'héritage
    Par DoubleU dans le forum Hibernate
    Réponses: 3
    Dernier message: 29/11/2008, 03h19
  2. [MCD] Comment créer une relation d'héritage dans Access
    Par Marounda dans le forum Schéma
    Réponses: 4
    Dernier message: 11/01/2008, 17h28
  3. relation d'héritage entre acteurs
    Par pigeon11 dans le forum Cas d'utilisation
    Réponses: 8
    Dernier message: 31/08/2007, 19h34
  4. Relations d'héritage dans un SGBD
    Par mawi dans le forum Access
    Réponses: 3
    Dernier message: 18/04/2005, 16h15
  5. Relations d'héritage dans un SGBD
    Par mawi dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 14/04/2005, 00h51

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