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 :

Héritages communs à 2 type-entités ?


Sujet :

Schéma

  1. #1
    Invité
    Invité(e)
    Par défaut Héritages communs à 2 type-entités ?
    Est-il possible qu'un héritage soient communs à deux tables ?
    Images attachées Images attachées  

  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
    Ton schéma semble vouloir dire qu'un traducteur peut être une personne ou une structure. C'est le cas ?

    Ne serait-ce pas plutôt qu'une personne peut être un traducteur et qu'elle appartient à une structure ?
    Traducteur -(1,1)----Etre----0,1- Personne -1,1----Appartenir----0,n- Structure

    Ou bien que lorsqu'une personne est un traducteur, elle appartient à une structure ?
    Traducteur -(1,1)----Etre----0,1- Personne
    |---------1,1----Appartenir----0,n- Structure
    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
    Invité
    Invité(e)
    Par défaut
    Effectivement, Traducteurs peut appartenir au deux.
    La base comprend des personnes qui font de la traduction, comme des structures qui font aussi de la traduction.
    Mais ma précédente question n'est pas applicable dans ce cas, car pour une personne il n'y a pas de date de création.
    Faut-il dans ce cas envisager un héritage Traducteurs pour Personnes et un héritage Traduction pour Structures?

  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
    J'ai plutôt l'impression qu'il ne s'agit pas du tout d'un héritage !

    Un héritage se justifie quand l'entité-type fille hérite des attributs de l'entité-type mère ou quand l'entité-type fille a des associations que n'ont pas forcément toutes les instances de l'entité-type mère. C'est une spécialisation issue d'une généralité.

    Ici, on pourrait imaginer que Traducteur soit en association avec une entité-type Langue.
    Traducteur -1,n----Peut_traduire----0,n- Langue

    Mais avec ton dernier message, j'ai plutôt l'impression qu'il s'agit de deux associations distinctes :
    Structure -0,n----Faire---0,n- Traduction -1,1----A_Traduire----0,n- Langue
    Personne -0,n----Faire----0,n-------| |-------1,1----Traduire_en----0,n------|

    Ce qui pourrait donner cette structure de tables :
    Langue (l_id, l_nom...)
    Personne (p_id, p_nom, p_prenom...)
    Structure (s_id, s_nom...)
    Traduction (t_id, t_id_langue_depart, t_id_langue_arrivée)
    Personne_Traduction (pt_id_personne, pt_id_traduction...)
    Structure_Traduction (st_id_structure, st_id_traduction....)

    Ou plus simplement :
    Langue -0,n-(De)----Traduire----0,n- Structure
    |------------0,n-(À)------------|

    Langue -0,n-(De)----Traduire----0,n- Personne
    |------------0,n-(À)------------|

    Ce qui donnerait les tables :
    Langue (l_id, l_nom...)
    Personne (p_id, p_nom, p_prenom...)
    Structure (s_id, s_nom...)
    Personne_Traduire_Langue (ptl_id_personne, ptl_id_langue_depart, ptl_id_langue_arrivee)
    Structure_Traduire_Langue (stl_id_structure, stl_id_langue_depart, stl_id_langue_arrivee)

    Soit une table de moins. À toi de voir si mes schémas correspondent à ce que tu veux modéliser. Sinon donne nous les règles de gestion.
    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
    Invité
    Invité(e)
    Par défaut
    Oui c'est ca, mais avec un héritage. Il est pourtant correct d'utiliser un héritage sans attributs. On peut toujours envisagé que des attributs seront ajoutés par la suite.

  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 dxerty Voir le message
    Oui c'est ca, mais avec un héritage.
    Qu'est-ce qui justifie absolument que tu doives utiliser un héritage ?
    Donne nous tes règles de gestion.

    Il est pourtant correct d'utiliser un héritage sans attributs.
    Oui. Je travaille justement sur un de ces cas que j'ai exposé récemment. L'héritage y est justifié par le fait que mes étudiants ont des associations différentes des autres utilisateurs, ainsi que des attributs supplémentaires. Il est possible que dans le futur l'application serve à d'autres catégories d'utilisateurs qui auront elles aussi leurs propres attributs et/ou associations mais comme je n'en sais rien aujourd'hui, je ne le modélise pas.

    On peut toujours envisager que des attributs seront ajoutés par la suite.
    Pendant que tu y es, tu peux envisager que dans le futur le traducteur pourra être un Twileck ou un droïde de protocole !

    Modélise correctement l'univers actuel ! Il sera toujours temps de faire un héritage plus tard quand ce sera nécessaire.
    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 régulier
    Homme Profil pro
    Relationland initiate
    Inscrit en
    Novembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Relationland initiate

    Informations forums :
    Inscription : Novembre 2006
    Messages : 83
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Il m'est arrivé de créer ce type de d'entités pour mutualiser des associations indépendamment de la spécialisation.

    Par exemple, une adresse et des coordonnées peuvent être associées à un tiers.
    Ce tiers sera de sous-type Personne Physique ou Personne Morale avec aucune caractéristique en commun.
    J'appelle cela, à tort ou à raison, un héritage de services (ici services d'adresse et de coordonnées).

    On pourrait tout aussi bien créer autant de d'associations que de sous-types (qui n'en seraient plus, du coup).
    Mais je ne sais pas trancher objectivement. Je suis perplexe, là.
    Fais mourir ton ennemi de plaisir ! Si tu le rates, il mourra d'ennui...
    __________________

    Pensez à cliquer sur

  8. #8
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonsoir,

    Citation Envoyé par dxerty Voir le message
    Est-il possible qu'un héritage soient communs à deux tables ?
    Oui, c'est possible. En tout cas, certains auteurs se sont aventurés jusque là.

    En se repositionnant au bon niveau d'abstraction (tu présentes un MCD mais tu parles de tables...) on dit qu'une entité peut être la spécialisation de plusieurs entités générales. On parle alors de généralisation composée.

    Ce terme générique se décline en plusieurs types selon les règles d'intersection entre les 3 entités : les deux entités générale, G1 et G2 (par exemple) et l'entité spécialisée S. On parle de :
    - généralisation alternative lorsque S est-un G1 ou bien un G2 (ou exclusif)
    - généralisation multiple lorsque S est-un G1 et un G2 (et)
    - généralisation sélective lorsque S est-un G1, un G2 ou les deux (ou inclusif)

    D'après les précédents échanges, il semble que l'on se trouve dans le cas d'une généralisation alternative (ouf ! c'est la moins complexe) :
    Un TRADUCTEUR est soit une PERSONNE soit une STRUCTURE (et donc pas les deux à la fois).

    Dans ce cas, l'entité spécialisée TRADUCTEUR hérite des propriétés et des associations communes aux deux entités générales PERSONNE et STRUCTURE. Par propriétés communes, on entend celles qui ont même domaine sémantique dans les deux entités générales. En effet, on ne s'attend pas à ce qu'il existe les mêmes propriétés stricto sensu dans PERSONNE et STRUCTURE, ce serait une erreur de modélisation (dans un MCD, une propriété est unique).
    Corollaire : TRADUCTEUR n'hérite pas des propriétés de domaine sémantique différent dans les entités générales.

    (Rappel : L'héritage ne se manifeste qu'au niveau logique. Au niveau conceptuel, il est seulement implicite.)

    Exemple : nom_de_personne dans PERSONNE et désignation_structure dans STRUCTURE ont même domaine sémantique. TRADUCTEUR peut hériter de cette propriété, qu'il sera judicieux de renommer (en désignation_traducteur, par exemple).


    Bien entendu, la spécialisation en TRADUCTEUR doit être justifiée. Cette entité doit détenir des propriétés ou des associations spécifiques.
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

Discussions similaires

  1. [2.x] [Form] Type entité
    Par houcine88 dans le forum Symfony
    Réponses: 0
    Dernier message: 24/04/2013, 12h45
  2. [2.x] Ajouter champs type entité valeur "Autre"
    Par ziemelitis dans le forum Symfony
    Réponses: 3
    Dernier message: 09/01/2012, 09h21
  3. [PHP 5.0] Héritage, Interfaces et Type Hinting
    Par alejandro dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2010, 22h18
  4. Réponses: 19
    Dernier message: 12/12/2007, 15h00
  5. Erreur d'Héritage : Nom de Type Attendu
    Par Julien_C++ dans le forum C++Builder
    Réponses: 5
    Dernier message: 01/09/2006, 12h06

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