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 héritage du modèle conceptuel dans le modèle relationnel [Modèle Relationnel]


Sujet :

Schéma

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Traduction héritage du modèle conceptuel dans le modèle relationnel
    Bonjour tout le monde,

    Voici le MCD que j'ai :
    Article--(1,1)----0,n--TypeArticle--0,n------1,1--Attribut--0,n------1,1--ValeurAttribut
    Il ya également une association entre ValeurAttribut et Article qui nous donne : Article--0,n----------(1,1)--ValeurAttribut.
    ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.
    Si je me trompe pas en MLD cela me donne :
    Article(id, libelle, prix, id_TypeArticle#)
    TypeArticle(id, libelle)
    Atribut(id, nom, id_TypeArticle#)
    ValeurAttribut(id, id_Article#, id_TypeArticle#, id_Atribut#)
    =>les propriétés soulignés sont les clés primaires.

    Par contre pour les sous entités, je sais qu'il existe plusieurs manière de faire, mais si je souhaite utiliser la suivante : Dupliquer la totalité du surtype dans les sous types.
    Que devienne mes sous entités dans mon modèle relationnel??
    Je voit pas trop comment faire avec id_Attribut de la super entité car c'est une clé étrangère seulement donc je ne peux pas la mettre en clé étrangère dans mes sous tables de mon modèle relationnelle??
    Puis id, id_Article et id_TypeArticle ne sont pas clés primaire dans mes sous tables??

    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 102
    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 : 8 102
    Points : 31 543
    Points
    31 543
    Billets dans le blog
    16
    Par défaut
    Il faudrait commencer par expliquer pourquoi certaines cardinalités 1,1 sont mises entre parenthèses et pas les autres.

    Faites-vous référence au mode de représentation utilisé par Power AMC pour distinguer les entités-types faibles des entités-types fortes ?
    Si tel est le cas, la table Article aurait pour structure :
    Article(id, libelle, prix, id_TypeArticle#)
    Sinon, l’attribut TypeArticle ne peut pas se propager jusqu’à la table ValeurAttribut, puisqu'il ne fait partie de la clé primaire de la table Article.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    Article(id, libelle, prix, id_TypeArticle#)
    Effectivement, c'est moi qui c'est trompé lorsque j'ai écrit les tables, bien entendu Article comporte une clé primaire double.

    Il faudrait commencer par expliquer pourquoi certaines cardinalités 1,1 sont mises entre parenthèses et pas les autres.
    Tout simplement parce qu'il y a entité faible, par exemple, si on supprime un type d'article alors tout ses articles seront supprimés.

    Je souhaiterais surtout savoir, ce que devienne mes sous-entités?? comment sont-elles remplit si j'utilise la manière suivante :
    Dupliquer la totalité du surtype dans les sous types.

    Cordialement!!

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 102
    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 : 8 102
    Points : 31 543
    Points
    31 543
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    Citation Envoyé par loic20h28 Voir le message
    Par contre pour les sous entités, je sais qu'il existe plusieurs manière de faire, mais si je souhaite utiliser la suivante : Dupliquer la totalité du surtype dans les sous types.
    1) Vous ne nous simplifiez pas le travail. Il faudrait que votre terminologie soit homogène. Le terme "sous entité" est-il synonyme de "sous-type" ?

    2) Concernant surtype et sous-type (au sens relationnel) : un sous-type est une spécialisation d’un surtype et un surtype est une généralisation de sous-types. Par exemple, par le mécanisme de la généralisation/spécialisation, le cercle est une ellipse (mais l’ellipse n’est que parfois un cercle) et l’ellipse est une figure plane. De la même façon, le carré est un rectangle, le rectangle est un polygone et le polygone est une figure plane. Ainsi, on commence à parler d’héritage de type.



    3) manifestement vous confondez avec la composition ou la désignation, car un article n’est pas un type d’article (un article appartient à une catégorie, à un type d’article) et une valeur d’attribut n’est pas non plus un article.


    Citation Envoyé par loic20h28 Voir le message
    Je souhaiterais surtout savoir, ce que devienne mes sous-entités?? comment sont-elles remplit si j'utilise la manière suivante :
    Dupliquer la totalité du surtype dans les sous types.
    Quelle entité-type joue le rôle de surtype ? Il faudrait préciser par l’écrit ce que vous avez en tête. Faisons des hypothèses. En relation avec ce que je viens d’écrire, considérons, puisque vous avez l’air d’y tenir, que l’entité-type Article soit faible par rapport à l’entité-type TypeArticle (ce qui fera bondir plus d’un concepteur, car dans la réalité un article est une entité forte, relevant seulement d’une catégorie d’articles, mais on va faire comme si).
    Répliquer l’ensemble des attributs de TypeArticle dans Article revient à violer la 2e forme normale, ce qui n’est pas recommandable du tout, du fait de l’injection de pelletées de redondances avec tous les risques d’anomalies inhérentes.

    Vous multipliez les redondances et les risques en répliquant à leur tour l’ensemble des attributs d’Article dans ValeurAttribut.

    Bref, c’est l’obésité généralisée, une prise de risque inconsidérée et à la clé une dégradation des performances au niveau des opérations portant sur la base de données. J’aimerais donc bien savoir pourquoi vous tenez tant à cette réplication généralisée...

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    Merci pour votre réponse.

    Le terme "sous entité" est-il synonyme de "sous-type" ?
    oui quand je parle de sous entité je veux dire sous-type (désolé!!)

    Article--(1,1)----0,n--TypeArticle--0,n------1,1--Attribut--0,n------1,1--ValeurAttribut
    Il ya également une association entre ValeurAttribut et Article qui nous donne : Article--0,n----------(1,1)--ValeurAttribut.
    ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.
    Je pense que ce schéma montre bien mon MCD.

    Quelle entité-type joue le rôle de surtype ?
    C'est l'entité ValeurAtribut qui joue le rôle de sur-tpe car elle hérite des entité-type "ValeurAttributEntier" et "ValeurAttributTexte".

    Le MCD est fais, ma question concerne la construction du MLD de mes sous-type?? Plus précisément
    Je souhaiterais surtout savoir, ce que devienne mes sous-entités?? comment sont-elles remplit si j'utilise la manière suivante :
    Dupliquer la totalité du surtype dans les sous types.
    en sachant que "ValeurAttribut" est de la forme suivante :
    ValeurAttribut(id, id_Article#, id_TypeArticle#, id_Atribut#)
    Cordialement

    EDIT : un petit exemple pour mieu expliquer mes entités. Imaginon que l'article soit "Levis 501" alors le type d'article est "pantalon" ses attributs seront : la "taille", le "tissu"...... donc les valeurs de l'attributs seron 36, 38 pour la taille (donc c'est une ValeurAttributEntier) et jean pour le tissu(donc c'est une valeurAttributTexte) c'est pour cela que l'on a des sous-type, c'est pour différencier les différent type de valeur (entier, texte).

    Merci d'avance!!

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 102
    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 : 8 102
    Points : 31 543
    Points
    31 543
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par loic20h28 Voir le message
    Article--(1,1)----0,n--TypeArticle--0,n------1,1--Attribut--0,n------1,1--ValeurAttribut
    Il ya également une association entre ValeurAttribut et Article qui nous donne : Article--0,n----------(1,1)--ValeurAttribut.
    ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.
    Je pense que ce schéma montre bien mon MCD.
    C'est l'entité ValeurAtribut qui joue le rôle de sur-tpe car elle hérite des entité-type "ValeurAttributEntier" et "ValeurAttributTexte".
    Soyez complet et rigoureux quant à votre façon de rédiger :

    — Dans votre 1er message, vous auriez dû préciser que vous utilisiez la syntaxe de Power AMC pour votre modèle et en conséquence le rôle des parenthèses pour les cardinalités 1,1. Sinon, comment voulez-vous que ceux qui ne connaissent pas cet outil puissent vous aider ?

    — Il a fallu attendre votre 3e message pour que vous confirmiez que sous-entité et sous-type sont synonymes et que l’un des deux termes est de trop.

    — Comme j’ai plutôt analysé votre MLD :
    Article(id, libelle, prix, id_TypeArticle#)
    TypeArticle(id, libelle)
    Atribut(id, nom, id_TypeArticle#)
    ValeurAttribut(id, id_Article#, id_TypeArticle#, id_Atribut#)
    Je n’avais donc pas repéré cette phrase en amont qui montre que ce MLD est incomplet :
    ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.
    Une fois de plus, il a fallu attendre votre 3e message pour que vous précisiez :
    C'est l'entité ValeurAtribut qui joue le rôle de sur-tpe car elle hérite des entité-type "ValeurAttributEntier" et "ValeurAttributTexte".
    Mais avec une belle contradiction à la clé, car de même que les parents ne sont pas les héritiers de leurs enfants, ValeurAtribut n’hérite ni de ValeurAttributEntier ni de ValeurAttributTexte, c’est exactement l’inverse.

    => N’hésitez pas à utiliser Power AMC — ou tout autre outil — pour présenter des schémas qui permettent de voir exactement quelles sont les entités-types (avec leurs attributs), quelle est la nature de leur relations, éviter les ambiguïtés, les contradictions, etc.

    Vous penserez peut-être que je pinaille, mais si j'insiste sur la rigueur de la présentation des problèmes, cela ne pourra que vous être profitable.


    Citation Envoyé par loic20h28 Voir le message
    Le MCD est fais, ma question concerne la construction du MLD de mes sous-type??
    Plus précisément je souhaiterais surtout savoir, ce que devienne mes sous-entités?? comment sont-elles remplit si j'utilise la manière suivante :
    Dupliquer la totalité du surtype dans les sous types.
    en sachant que "ValeurAttribut" est de la forme suivante :
    ValeurAttribut (id, id_Article#, id_TypeArticle#, id_Atribut#)
    On est au niveau du MLD : Il est d’usage de ne dupliquer que la clé, en l’occurrence celle de la table ValeurAttribut.

    D’après les informations que vous avez fournies, cette clé est la suivante :
    {id, id_Article#, id_TypeArticle#}
    Si vous voulez aussi dupliquer l’attribut id_Atribut#, c’est possible, et Power AMC propose une option pour générer une structure ad-hoc pour les tables ValeurAttributEntier et ValeurAttributTexte. Cela dit, ça sera à vous de contrôler la redondance des valeurs prises par l’attribut id_Atribut# entre ValeurAttribut et ValeurAttributEntier d’une part, et entre ValeurAttribut et ValeurAttributTexte d’autre part. En effet, dans l’état où se trouve votre modèle, on peut valoriser cet attribut par n’importe quoi dans les tables ValeurAttributEntier et ValeurAttributTexte, puisque le système n’a rien à vérifier. Pour assurer le coup, il faudra par exemple prévoir des triggers pour garantir la cohérence, lors des opérations d’Insert/Update.

    Une autre façon de procéder consisterait à remplacer la cardinalité 1,1 par une cardinalité (1,1) pour la relation entre Attribut et ValeurAttribut :
    Attribut--0,n------(1,1)--ValeurAttribut
    Et faire ainsi disparaître l’attribut id de la table ValeurAttribut dont la structure serait alors la suivante au niveau tabulaire :
    ValeurAttribut (id_Article#, id_TypeArticle#, id_Atribut#)
    Ce qui revient à dire qu’au niveau MCD, ValeurAttribut serait une association-type entre Article et Attribut.

    A noter que selon votre modèle, rien n’interdit de mettre en relation un article du type t1 (table Article) et un attribut du type t2 (table Attribut)...

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    bonjour,

    merci pour votre réponse.

    — Dans votre 1er message, vous auriez dû préciser que vous utilisiez la syntaxe de Power AMC pour votre modèle et en conséquence le rôle des parenthèses pour les cardinalités 1,1. Sinon, comment voulez-vous que ceux qui ne connaissent pas cet outil puissent vous aider ?
    Je suis désolé mais je connaissait que cette syntaxe donc je pensé qu'il y avais que celle la.

    Je n’avais donc pas repéré cette phrase en amont qui montre que ce MLD est incomplet :

    ValeurAttribut est une entité parente c'est à dire qu'elle hérite 2 deux autres entités qui sont : ValeurAttributEntier et ValeurAttributTexte.

    Une fois de plus, il a fallu attendre votre 3e message pour que vous précisiez :

    C'est l'entité ValeurAtribut qui joue le rôle de sur-tpe car elle hérite des entité-type "ValeurAttributEntier" et "ValeurAttributTexte".
    Je suis désolé mais je trouvais que ma première phrase indiqué bien le fait que ValeurAttribut étais le sur-type grâce au mot "hérite de". Mais j'avou après reflexion, le mot "hérite de" n'étais probablement pas celui a employer.(désolé)

    On est au niveau du MLD : Il est d’usage de ne dupliquer que la clé, en l’occurrence celle de la table ValeurAttribut.

    D’après les informations que vous avez fournies, cette clé est la suivante :

    {id, id_Article#, id_TypeArticle#}
    Je me demande la chose suivante :
    Cette clé (id, id_Article et id_TypeArticle) dans les sous-type seront que clé étrangère ou également clé primaire par rapport à ValeurAttribut??

    Cordialement

    EDIT : Je vais mieux expliquer ma question car quand je me re-lis je ne me trouve pas assez clair.
    Donc en gros ce que je souhaite savoir c'est si id_Article et id_TypeArticle de mes sous-type(ValeurAttributEntier et ValeurAttributTexte) seront des clés étrangères qui feront référence à id_Article et id_TypeArticle de ma sur-type (ValeurAttribut) ou si elles(id_Article et id_TypeArticle de mes sous-types) feront référence à id et id_TypeArticle de la table Article (tout comme id-Article et id_TypeArticle de ma sur-type)??
    Puis id, id_Article et id_ypeArticle seront clé primaire de mes sous type ou pas du tout vu quelle hérite de ma sur-type??

    Cordialement!!

  8. #8
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 102
    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 : 8 102
    Points : 31 543
    Points
    31 543
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Citation Envoyé par loic20h28 Voir le message
    ce que je souhaite savoir c'est si id_Article et id_TypeArticle de mes sous-type(ValeurAttributEntier et ValeurAttributTexte) seront des clés étrangères qui feront référence à id_Article et id_TypeArticle de ma sur-type (ValeurAttribut) ou si elles(id_Article et id_TypeArticle de mes sous-types) feront référence à id et id_TypeArticle de la table Article (tout comme id-Article et id_TypeArticle de ma sur-type)?
    Intéressons-nous à l’entité-type ValeurAttributEntier (pour ValeurAttributTexte, le raisonnement est évidemment le même).

    Au niveau conceptuel, ValeurAttributEntier est sous-type de ValeurAttribut et hérite par définition de l’identifiant de celle-ci, ce qui veut dire que lors du passage au niveau tabulaire, si la structure de la clé primaire de ValeurAttribut est la suivante :
    {id, id_Article#, id_TypeArticle#}
    alors la structure de la clé primaire de ValeurAttributEntier en sera la copie conforme :
    {id, id_Article#, id_TypeArticle#}
    Ou, pour respecter votre façon de nommer des attributs, en renommant l’attribut id en id_ValeurAttribut# :
    {id_ValeurAttribut#, id_Article#, id_TypeArticle#}
    Maintenant, les attributs qui composent la clé primaire de ValeurAttribut doivent aussi être les attributs de la table ValeurAttributEntier qui composent la clé étrangère établissant la relation entre les deux tables (mécanisme de l’intégrité référentielle).

    En conséquence, le triplet {id_ValeurAttribut#, id_Article#, id_TypeArticle#} est utilisé simultanément pour la clé primaire et pour la clé étrangère qui met en relation les tables ValeurAttribut et ValeurAttributEntier, d'où le code SQL qui suit...
    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
    16
     
    CREATE TABLE ValeurAttribut (
           id ...
         , id_Article# ...  
         , id_TypeArticle# ...   
       , PRIMARY KEY (id, id_Article#, id_TypeArticle#)
         , ... ) ;
     
    CREATE TABLE ValeurAttributEntier (
           id_ValeurAttribut# ...
         , id_Article# ...   
         , id_TypeArticle# ...   
       , PRIMARY KEY (id_ValeurAttribut#, id_Article#, id_TypeArticle#)
       , FOREIGN KEY (id_ValeurAttribut#, id_Article#, id_TypeArticle#)
           REFERENCES ValeurAttribut (id, id_Article#, id_TypeArticle#)
           ON DELETE CASCADE ... ) ;

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    Ok, merci beaucoup pour votre patience et votre aide.

    Je pensait faire comme cela mais je préféré être sûr.

    Merci pour tout!!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/05/2014, 16h15
  2. Réponses: 9
    Dernier message: 29/04/2013, 10h34
  3. [Star Schema] concenvoir un modèle dimmensionnel dans un sgbd relationnel
    Par ammouna24 dans le forum Schéma
    Réponses: 3
    Dernier message: 01/07/2009, 11h40
  4. [Modèle Relationnel] Représenter un héritage dans un modèle relationnel
    Par jinar dans le forum Schéma
    Réponses: 1
    Dernier message: 23/04/2009, 10h11
  5. Réponses: 1
    Dernier message: 01/10/2007, 16h14

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