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 :

Association réflexive [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 33
    Points : 14
    Points
    14
    Par défaut Association réflexive
    bonsoir,
    je veux modéliser la relation existante entre membre famille.(père, fils, mère, marie) est ce que je dois utiliser la notion de réflexive:un personne dont les caractéristiques sont: NSS,nom, prénom, date_naissance..peut être un père,fils..

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Intrinsèquement oui. Mais vous oubliez la nature non permanente des données. Par exemple les mariages, divorces, remariages et enfantement entre temps.

    En sus comment reliez vous les enfants naturels ?

    Donc, pas si simple....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 966
    Points : 30 778
    Points
    30 778
    Billets dans le blog
    16
    Par défaut
    Bonjour,



    Citation Envoyé par twity Voir le message
    je veux modéliser la relation existante entre membre famille.(père, fils, mère, marie) est ce que je dois utiliser la notion de réflexive:un personne dont les caractéristiques sont: NSS,nom, prénom, date_naissance..peut être un père,fils..

    Au lieu d’accumuler les difficultés et de vous coller le moral dans les chaussettes, commençons au moins par ce qui est simple et naturel.

    Considérez la représentation ci-dessous (Modèle Logique de Données) :



    La table PERSONNE parle d’elle-même : chaque personne y figure, quelle qu’elle soit : prénom, nom patronymique, etc. En revanche dans la table FILIATION ne figurent que les enfants :

    Un enfant y est représenté par l’attribut EnfantId, dont la valeur est une valeur de l’attribut PsnId de la table PERSONNE (contrainte référentielle).

    Le papa de cet enfant y est représenté par l’attribut PapaId dont la valeur est une valeur de l’attribut PsnId de la table PERSONNE (contrainte référentielle).

    La maman de cet enfant y est représenté par l’attribut MamamId dont la valeur est une valeur de l’attribut PsnId de la table PERSONNE (contrainte référentielle).


    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    PERSONNE     PsnId    PsnNom          PsnPrenom
    
                     1    Bach            Johann Ambrosius
                     2    Lämmerhirt      Maria Elisabetha
                     3    Bach            Johann Sebastian
                     4    Bach            Maria Barbara
                     5    Wilcke          Anna Magdalena 
                     6    Bach            Catharina Dorothea
                     7    Bach            Wilhelm Friedemann
                     8    Bach            Carl Philipp Emanuel
                     9    Bach            Gottfried Heinrich
                    10    Bach            Johann Christoph Friedrich
                    11    Bach            Elisabetha Juliana Friederica
                    12    Altnikol        Johann 
                    13    Altnikol        Johann
                   ...    ...             ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FILIATION   EnfantId    PapaId      MamanId
    
                       3         1            2
                       6         3            4
                       7         3            4
                       8         3            4
                       9         3            5
                      10         3            5
                      11         3            5
                      13        12           11
                     ...       ...          ...

    Dans chaque table, l'attribut souligné dénote la clé primaire de celle-ci. Ainsi, un enfant est né de seulement un père et une mère (filiation naturellle et normale).
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 966
    Points : 30 778
    Points
    30 778
    Billets dans le blog
    16
    Par défaut
    Supposons que vous vouliez traiter du cas des enfants nés dont le père ou la mère est inconnu. Le MLD peut évoluer ainsi :



    On peut aussi distinguer la filiation légitime (prise en compte de la date du mariage) de celle qui ne l’est pas :



    En collant les morceaux :



    Pour les familles recomposées, etc., voyez les spécialistes...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 33
    Points : 14
    Points
    14
    Par défaut
    bonsoir,
    si vous pouvez mettre MCD au lieu de LMD merci

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 966
    Points : 30 778
    Points
    30 778
    Billets dans le blog
    16
    Par défaut
    Bonsoir twity,


    Un peu de courage !

    N'hésitez pas à proposer d'abord votre MCD, on verra à vous faire les observations d'usage à propos de sa justesse.

    Pour vous aider à commencer, disons que chaque rôle "Est une personne" montre que FILIATION_LEGITIME, FILIATION_ILLEGITIME et FILIATION_MONO_PARENT (qu'il est préférable au niveau MCD de renommer respectivement en ENFANT_LEGITIME, ENFANT_ILLEGITIME et ENFANT_MONO_PARENT) sont en fait des spécialisations de la personne quand celle-ci est enfant : Jean-Sébastien Bach a bien été enfant avant de devenir papa à son tour. Ça sent l'héritage (au sens merisien du terme !)
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 966
    Points : 30 778
    Points
    30 778
    Billets dans le blog
    16
    Par défaut
    Bonsoir twity,


    Pas de MCD en vue ? Bon, voici un coup de pouce, mais n’abusons pas. Il s’agit seulement de la partie « Enfants légitimes » :



    Sinon, en redescendant au niveau SQL, pour retrouver la descendance d’une personne :

    Structure de la table des personnes :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE PERSONNE
    (
            PsnId                 INT            NOT NULL
          , PsnNom                VARCHAR(64)    NOT NULL
          , PsnPrenom             VARCHAR(64)    NOT NULL
          , PsnSexe               CHAR(1)        NOT NULL
          , Commentaire           VARCHAR(64)    NOT NULL DEFAULT ''
        , CONSTRAINT PERSONNE_PK PRIMARY KEY (PsnId)
        , CONSTRAINT PERSONNE_CHK1 CHECK (PsnSexe IN ('H', 'F', '?'))
    ) ;

    Structure de la table des couples mariés (j’ai évacué l’attribut CoupleId qui n’apporte pas grand-chose) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE COUPLE
    (
            EpouxId          INT            NOT NULL
          , EpouseId         INT            NOT NULL
          , AnneeMariage     VARCHAR(4)     NOT NULL DEFAULT '?'
          , Commentaire      VARCHAR(64)    NOT NULL DEFAULT ''
        , CONSTRAINT COUPLE_PK PRIMARY KEY (EpouxId, EpouseId)
        , CONSTRAINT COUPLE_FK1 FOREIGN KEY (EpouxId) REFERENCES PERSONNE
        , CONSTRAINT COUPLE_FK2 FOREIGN KEY (EpouseId) REFERENCES PERSONNE
        , CONSTRAINT COUPLE_CHK1 CHECK (ISNUMERIC(AnneeMariage) = 1 OR AnneeMariage = '?')
        , CONSTRAINT COUPLE_CHK2 CHECK (EpouxId <> EpouseId)
    ) ;

    Table des enfants légitimes :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE FILIATION_LEGITIME
    (
            EnfantId        INT            NOT NULL
          , PapaId          INT            NOT NULL
          , MamanId         INT            NOT NULL
        , CONSTRAINT FILIATION_LEGITIME_PK PRIMARY KEY (EnfantId)
        , CONSTRAINT FILIATION_LEGITIME_FK FOREIGN KEY (PapaId, MamanId) REFERENCES COUPLE
    ) ;

    Recherche des descendants de la personne pour laquelle PsnId = 100 :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    DECLARE @PsnId AS INT ;
    SET @PsnId = 100 ;
     
    WITH W (EnfantId, PapaId) AS
    (
        SELECT EnfantId, PapaId
        FROM   PERSONNE AS x JOIN FILIATION_LEGITIME AS y ON PsnId = PapaId 
        WHERE  PsnId = @PsnId
      UNION ALL
        SELECT y.EnfantId, y.PapaId 
        FROM   W AS x JOIN FILIATION_LEGITIME AS y ON x.EnfantId = y.PapaId 
    )
    SELECT W.EnfantId, y.PsnPrenom AS EnfantPrenom, y.PsnNom AS EnfantNom, z.PsnPrenom AS PapaPrenom, z.PsnNom AS PapaNom   
    FROM   W JOIN PERSONNE AS y ON W.EnfantId = y.PsnId
             JOIN PERSONNE AS z ON W.PapaId = z.PsnId ;

    A plus tard
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

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

Discussions similaires

  1. Association réflexive sous Access
    Par yannick9 dans le forum Modélisation
    Réponses: 7
    Dernier message: 27/07/2007, 12h39
  2. association réflexive 3 pattes
    Par eric leclercq dans le forum Schéma
    Réponses: 4
    Dernier message: 21/05/2007, 13h54
  3. Question sur une association réflexive
    Par H1B4K dans le forum Schéma
    Réponses: 3
    Dernier message: 29/09/2006, 21h03
  4. [MCD] Héritage restreint d'association réflexive sur mère
    Par n00bi dans le forum Schéma
    Réponses: 5
    Dernier message: 19/04/2006, 14h00
  5. [merise]traduire en sql une association réflexive
    Par omega dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/03/2004, 19h10

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