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 :

Date, entité ou attribut ?


Sujet :

Schéma

  1. #21
    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
    Bonjour,

    Vous avez dérivé sur les clés mais je reviens sur la question de la date.

    Citation Envoyé par JulienDuSud Voir le message
    Cependant, conceptuellement, Date est bien une entité et il doit donc être considéré comme telle lors de l'implémentation, peu importe la manière spécifique dont c'est représenté logiquement.
    Et bien non, c'est fsmrel qui a raison...

    Citation Envoyé par fsmrel
    Non. Ce n'est qu'un type que l'on déguise en entité-type dans le contexte Merise, quand la dimension des associations-types est supérieure ou égale à 3. Sinon, si l’on vous suit, à chaque fois qu’une entité-type ou une association-type est porteuse d’un attribut de type Date (ou plusieurs, par exemple DateDébut, DateFin), il faudra l'en débarrasser et la connecter autant de fois que nécessaire sur la prétendue entité-type Date. Étonnant...
    ... mais je vais compléter son argumentaire.

    On (A. FLORY, J. MOREJON) distingue des propriétés servant à indiquer une référence à l'espace ou au temps que l'on nomme "propriétés spatio-temporelles". Cette définition permet d'étendre la notion d'association en lui procurant un identifiant supplémentaire n'apparaissant pas comme identifiant d'une entité.
    Ainsi, il est possible de faire participer une date (par exemple) à l'identification d'une association sans que la date soit elle-même identifiant d'une entité ; il s'agit d'une simple propriété. Graphiquement, une PST est représentée dans un simple rectangle : une boîte d'entité sans le rectangle nom de l'entité, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    +--------------+
    | DateCréation |
    +--------------+
    L'erreur de choix des pères de Merise, que fsmrel a mentionnée, a été rectifiée par leurs successeurs.
    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

  2. #22
    Invité
    Invité(e)
    Par défaut
    J'ai pas tout suivi...désolé

  3. #23
    Invité
    Invité(e)
    Par défaut
    Si une variable relationnelle est en 3NF et si chacune de ses clés candidates ne comporte qu'un seul attribut, alors cette variable relationnelle est en 5NF.

    Un seul attribut, c'est à dire une clé qui ne soit multiple (code1,code2,attribut) ?
    Dernière modification par Invité ; 24/06/2010 à 12h23.

  4. #24
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Si une variable relationnelle est en 3NF et si chacune de ses clés candidates ne comporte qu'un seul attribut, alors cette variable relationnelle est en 5NF.

    Un seul attribut, c'est à dire une clé qui ne soit multiple (code1,code2,attribut) ?
    La paire {code1, code2} comporte deux attributs au lieu d'un seul : le théorème ne s'applique pas et il faudra en passer par le processus de normalisation classique en 5NF (ou PJ/NF), mais pour le moment, cela risque d'être hors de votre portée, à moins que vous n'assimiliez parfaitement ce qu'a écrit Fagin dans Normal forms and relational database operators.
    (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. #25
    Invité
    Invité(e)
    Par défaut
    Merci pour le lien, mais il ne semble pas y avoir de chapitre sur le formes normales ?

  6. #26
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    La paire {code1, code2} comporte deux attributs au lieu d'un seul : le théorème ne s'applique pas et il faudra en passer par le processus de normalisation classique en 5NF (ou PJ/NF), mais pour le moment, cela risque d'être hors de votre portée, à moins que vous n'assimiliez parfaitement ce qu'a écrit Fagin dans Normal forms and relational database operators.
    Merci, disons qu'il va falloir approfondir mes connaissances sérieusement. Dans ce cas des listes de valeurs du genre (id,nom) sont en 5nf (minimum de dépendance) ?

  7. #27
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par dxerty
    Merci pour le lien, mais il ne semble pas y avoir de chapitre sur les formes normales ?
    La théorie de la normalisation est une branche des mathématiques appliquées qui ne fait pas partie de la méthode Merise mais de la théorie relationnelle. L’ouvrage de Diviné traite donc de Merise mais pas de la théorie relationnelle. Pour que qui concerne les formes normales, reportez-vous à l’article de Fagin. Pour quelque chose de plus abordable, voyez l’ouvrage de Chris Date : An Introduction to Database Systems.


    Citation Envoyé par dxerty
    Dans ce cas des listes de valeurs du genre (id, nom) sont en 5nf (minimum de dépendance) ?
    Je ne sais pas ce que vous voulez dire par « minimum de dépendance », mais je répète que si chaque clé candidate d’une variable relationnelle R est singleton (ne contient qu’un seul attribut), alors R respecte la 5NF. Dans votre exemple, c’est le cas.
    (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.

  8. #28
    Invité
    Invité(e)
    Par défaut
    Merci à tous pour vos réponses et votre patience.

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Citation Fsmrel :
    Pour reprendre votre exemple, puisque les règles de gestion des données sont les suivantes :

    Un étudiant peut être promu plusieurs fois la même année pour différents cours,
    Un étudiant ne peut être promu qu'une seule fois par an et par cours.

    Alors la représentation conceptuelle suivante est nécessaire et suffisante :

    cf. MCD que je n'ai pas pu copier/coller. Il se trouve page 1, contribution n°10

    Dans ce MCD, il me semble que la date devrait être soulignée, pour montrer qu'il s'agit d'une partie de l'identifiant de la relation.

    Pour éviter l'entité-type Date, il me semble plus opportun d'indiquer la clé de la relation en entier et de la souligner. Il s'agirait de la concaténation des identifiants des deux entités participants à la relation, auxquels s'ajoute la fameuse date.

    Je ne suis pas un spécialiste de cette question, mais j'aimerai bien l'avis d'un spécialiste.

  10. #30
    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
    C'est effectivement ce que je fais. Je trouve ça plus pratique.
    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 !

  11. #31
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par MacFly58
    cf. MCD que je n'ai pas pu copier/coller. Il se trouve page 1, contribution n°10
    Vous accédez aux propriétés de l’image, vous récupérez son adresse et vous utilisez la balise [IMG] :



    =>




    Citation Envoyé par MacFly58
    Dans ce MCD, il me semble que la date devrait être soulignée, pour montrer qu'il s'agit d'une partie de l'identifiant de la relation.
    Comme le chantait le poète :
    Chanté par Georges Brassens :
    « L’avait l’ don, c’est vrai, j’en conviens,
    L’avait l’ génie,
    Mais sans technique, un don n’est rien
    Qu’un’ sal’ manie... »
    Modéliser à l’instinct ne suffit pas. Puisque vous affirmez que l’attribut PromoDate participe à l’identification de la relation PROMOTION, l’identifiant complet en est le suivant : {Eid, Cid, PromoDate}. Autrement dit vous changez les règles de gestion.

    Ainsi la règle :
    Un étudiant ne peut être promu qu'une seule fois par an et par cours
    devient
    Un étudiant peut être promu plusieurs fois par an et par cours
    Auquel cas, du point de vue du système, la contrainte est devenue la suivante : les triplets de valeurs {Eid, Cid, PromoDate} doivent être uniques, et l’exemple ci-dessous est conforme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Eid   PromoDate   Cid
    e1       d1       c1 
    e1       d2       c1
    Par contre, si la règle est bien qu’un étudiant ne puisse être promu qu'une seule fois par an et par cours, les paires de valeurs {Eid, Cid} doivent être uniques et le système interdira que la paire {e1, c1} soit présente deux fois dans la base de données, contrairement à ce qui se produit avec l’exemple ci-dessus.

    Citation Envoyé par CinePhil
    C'est effectivement ce que je fais. Je trouve ça plus pratique.
    Mais pas forcément valide...
    (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.

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    J'ai lu ce sujet en diagonal et le schéma de Juliendusud m'a induit en erreur.


    J'ajoute le lien relatif à cette contribution car l'image ci-dessus ne s'agrandie pas Grrrrr^^
    http://www.developpez.net/forums/d94...t/#post5300871


    J'ai bêtement cru que le schéma de Fsmrel en découlait, et donc qu'un étudiant pouvait être promu plusieurs fois par an et par cours.

    Autant pour moi.



    Par ailleurs j'aimerai bien une petite précision :

    Envoyé par FsmRel
    Envoyé par CinePhil
    C'est effectivement ce que je fais. Je trouve ça plus pratique.
    Mais pas forcément valide...
    Pour quelle(s) raison(s) ce ne serait pas valide ? (en se basant sur le schéma de Juliendusud)
    Comment procédez-vous dans ce cas ? vous laissez l'entité-type "Date"

  13. #33
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Règles contradictoires
    Citation Envoyé par JulienDuSud Voir le message
    Oups, une erreur s'est glissée dans le diagramme, il faut ignorer la flèche descendante de Cours
    La représentation graphique proposée par Julien est donc la suivante :



    Citation Envoyé par MacFly58
    Pour quelle(s) raison(s) ce ne serait pas valide ? (en se basant sur le schéma de Juliendusud)
    Comment procédez-vous dans ce cas ? vous laissez l'entité-type "Date"
    La représentation graphique proposée par Julien correspond à la règle de gestion suivante :
    RG01 - Un étudiant peut être promu plusieurs fois par an et par cours
    Mais relisez son message :
    Citation Envoyé par JulienDuSud Voir le message
    Dans une école, on a des étudiants, des cours que ces étudiants reçoivent, et chaque année, il y a la promotion des étudiants. Chaque étudiant ne peut être promu qu'une seule fois par an et par cours , mais il peut être promu plusieurs fois au fil de ses études, et il peut être promu plusieurs fois sur une même année pour différents cours.

    Il y a contradiction entre la règle correspondant à la représentation graphique et la règle écrite :
    RG02 - Chaque étudiant ne peut être promu qu'une seule fois par an et par cours
    Règle qui, comme je l’ai déjà dit, fait l’objet de la représentation graphique suivante :



    Maintenant, si vous estimez que c’est la règle RG01 qui est valide, alors la date participe à l’identification de l’association-type PROMOTION et Merise vous contraint à mettre en œuvre une entité-type factice DATE (ou ANNEE ou ce que vous voulez), comme l'a fait Julien, ou encore à utiliser la représentation proposée par JPhi33.

    Si vous estimez que c’est la règle RG02 qui est valide, alors la date ne peut pas participer à l’identification et elle fait l’objet d’une propriété portée par l’association-type PROMOTION.

    That’s all.
    (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.

  14. #34
    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 fsmrel Voir le message
    La représentation graphique proposée par Julien est donc la suivante :





    La représentation graphique proposée par Julien correspond à la règle de gestion suivante :
    RG01 - Un étudiant peut être promu plusieurs fois par an et par cours
    Ah bon ?
    Selon moi l'identifiant de la table issue de l'association sera composé des 3 identifiants des trois tables issues des entités entrant en jeu dans l'association.
    Les triplets {Etudiant, cours, année} seront donc uniques. On ne pourra pas avoir deux fois l'étudiant Fsmrel pour le cours Merise en 2010.

    RG02 - Chaque étudiant ne peut être promu qu'une seule fois par an et par cours
    Il me semble que cette représentation répond donc parfaitement à la règle de gestion.
    Règle qui, comme je l’ai déjà dit, fait l’objet de la représentation graphique suivante :


    Ce MCD veut dire selon moi qu'un étudiant ne peut être promu qu'une seule fois pour un cours et que l'association porte les données relatives à la date de la promotion et à la mention obtenue, ces données ne participant pas à l'identification de l'association.
    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 !

  15. #35
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    J'ai relu tout ce sujet. Je pense qu'il comporte plusieurs erreurs qui découlent de l'erreur originelle suivante :

    Fsmrel :
    Un étudiant peut être promu plusieurs fois la même année pour différents cours,
    Un étudiant ne peut être promu qu'une seule fois par an et par cours.

    Alors la représentation conceptuelle suivante est nécessaire et suffisante :

    Il me semble que ma première idée était justes et qu'il faudrait souligner la date dans le schéma de Fsmrel (ou créé une entité-type Date, ce qui revient au schéma de Julien).

    Ce schéma me semble erroné car nous n'avons pas deux règles de gestion mais trois :

    RG1 Chaque étudiant ne peut être promu qu'une seule fois par an et par cours
    RG2 Chaque étudiant peut être promu plusieurs fois au fil de ses études
    RG3 Chaque étudiant peut être promu plusieurs fois sur une même année pour différents cours

  16. #36
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut CiinePhil a raison
    Citation Envoyé par CinePhil Voir le message
    Selon moi l'identifiant de la table issue de l'association sera composé des 3 identifiants des trois tables issues des entités entrant en jeu dans l'association.
    Fichtre ! Vous avez parfaitement raison. Ce que j’ai exprimé graphiquement est une règle trop restrictive, selon laquelle un étudiant ne peut être promu qu’une fois par cours. Je bats ma coulpe.



    Citation Envoyé par MacFly58 Voir le message
    Ce schéma me semble erroné car nous n'avons pas deux règles de gestion mais trois
    RG1 Chaque étudiant ne peut être promu qu'une seule fois par an et par cours
    RG2 Chaque étudiant peut être promu plusieurs fois au fil de ses études
    RG3 Chaque étudiant peut être promu plusieurs fois sur une même année pour différents cours
    Supposons qu’un étudiant ne puisse être promu qu’une fois par cours (la règle trop restrictive). Il n’en demeure pas moins que les règles RG2 et RG3 sont respectées car la patte connectant l’entité-type ETUDIANT et l’association-type PROMOTION est porteuse d’une cardinalité maximale N, ce qui veut dire qu’une occurrence ETUDIANT peut participer plusieurs fois à l’association-type PROMOTION, donc qu’un étudiant peut être promu plusieurs fois.
    (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.

Discussions similaires

  1. [MCD] entité Date ou attribut date
    Par wafiwafi dans le forum Schéma
    Réponses: 20
    Dernier message: 21/09/2012, 09h55
  2. [HQL] Filtrer la date sur un attribut datetime
    Par Laurent.B dans le forum Hibernate
    Réponses: 3
    Dernier message: 08/09/2010, 22h12
  3. [MCD] Différence entre un Attribut Date et une Entité Date ?
    Par hugouu dans le forum Schéma
    Réponses: 9
    Dernier message: 20/12/2009, 23h52
  4. 3 tables, 1 attribut date par table > avoir la date MAX
    Par Amon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/05/2004, 13h54
  5. Entité dans la définition d'un attribut ?
    Par iceman dans le forum Valider
    Réponses: 3
    Dernier message: 09/03/2004, 16h16

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