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 :

permettre la traçabilité d'une récolte


Sujet :

Schéma

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut permettre la traçabilité d'une récolte
    Bonjour à tous,
    Je suis étudiant en faculté et je dois concevoir un schéma Entité-Association relatif à un énoncé, seulement voilà, j'ai quelques problèmes quant à certains points. C'est donc pour celà que j'en appel à votre science afin de pouvoir me sortir de ce bourbier.
    Je joins déjà l'énoncé, malheureusement assez long, mon problème réside essentiellement, je pense, dans les deux derniers paragraphes.

    Vous êtes chargé de concevoir le schéma du sous-système d’information destiné à la traçabilité du miel produit dans une mièlerie. Ce système a pour objectif de représenter de manière la plus fidèle possible toutes les opérations effectuées dans la mièlerie. Ainsi, pour chaque pot de miel mis à la vente, la mièlerie pourra donner les informations sur sa date de conditionnement, sa provenance ainsi que sur la flore butinée par les abeilles ayant produit le miel. Pour le contrôle sanitaire, il s’agit aussi de pouvoir contrôler les produits avec lesquels ont été en contact les ruches et les abeilles ayant produit le miel. Le compte rendu d’enquête donné ci-dessous vous aidera à élaborer le schéma de ce sous-système d’information.

    La première richesse de la mièlerie est bien entendu ses essaims d’abeilles. Chaque essaim est référencé. De plus on enregistre pour chaque essaim sa provenance (locale ou fournisseur extérieur), la date de sa constitution et la race de sa reine (exemple : reine Cecropia, reine Carnica). Dans le cas d’un essaim de provenance locale, on enregistre toujours de quel essaim il est issu. Dans le cas d’un essaim provenant d’un fournisseur extérieur, on a besoin de pouvoir identifier le fournisseur. Chaque essaim est affecté à une ruche. Occasionnellement il peut arriver qu’un essaim soit changé de ruche pour une intervention sur la ruche d’origine.

    La mièlerie utilise exclusivement des ruches « Dadant » issues du même fabriquant pour faciliter les travaux de maintenance et favoriser l’interchangeabilité des cadres intervenant dans leur constitution. Chaque ruche ainsi que chaque cadre est référencé. Pour la traçabilité, il est important de garder l’historique des cadres insérés dans chaque ruche. Des interventions sont effectuées périodiquement sur les ruches. Chaque intervention est enregistrée avec un numéro, une date et son objet (nourrissement de l’essaim, traitement de l’essaim, essaimage, entretien de la ruche). Certaines interventions nécessitent l’utilisation de produits et de matériels adaptés à l’application de ces produits (exemple : fumigène appliqué avec un enfumoir). Chaque matériel est enregistré avec une référence et son descriptif (exemple : enfumoir numéro 2). Chaque produit utilisé est décrit par son fournisseur, sa référence, un libellé et sa constitution (enregistrée sous forme de texte). Pour assurer la traçabilité, la mièlerie enregistre les livraisons des produits en attribuant un numéro de lot et en enregistrant la date de livraison ainsi que le numéro du lot attribué par le fournisseur. Pour chaque intervention on enregistre le lot du produit utilisé ainsi que le matériel ayant servi à l’appliquer.

    Afin de produire du miel de qualité, les ruches sont déplacées aux périodes propices sur des emplacements incitant les abeilles à butiner une flore particulière. La mièlerie enregistre pour chaque emplacement ses coordonnées géographiques, l’altitude à laquelle il se situe et la flore prédominante. Pour la traçabilité du miel il est indispensable d’enregistrer pour chaque ruche l’historique des emplacements dans lesquels elle a été placée.

    Le miel est récolté par période dans des clarificateurs. Un clarificateur est une cuve en acier inox pourvue dans sa partie supérieure d'un tamis en inox très fin qui retient les impuretés et pourvue à sa base d'un robinet pour récupérer le miel décanté. La mièlerie dispose de plusieurs clarificateurs de contenances différentes identifiés chacun par une référence. Une récolte est constitué du miel issu de plusieurs ruches ayant séjournées dans des emplacements compatibles avec la qualité du miel recherché (miel de châtaigner, miel de sapin, miel de fleurs …). On enregistre pour chaque ruche la date et le poids récolté. On précise aussi la référence du clarificateur utilisé pour stocker et filtrer la récolte.

    Afin d’emballer le produit fini, la mièlerie achète des pots chez divers fournisseurs. Pour satisfaire au mieux sa clientèle elle utilise différents types de pots caractérisés par une référence, un nom, un matériau (verre ou carton), une contenance, une hauteur, un diamètre et un nombre de pots par palette. Chaque palette livrée est enregistrée avec un numéro de lot et le fournisseur correspondant. A la mise en pot, la mièlerie enregistre pour chaque pot la récolte dont provient le miel, le lot d’où provient le pot, ainsi que la date et l’heure et attribue une référence unique au pot.

    Chaque fournisseur est enregistré avec son numéro de Siret, sa raison sociale et son adresse.

    Je vous joins également le schéma fait. Si vous trouvez d'autres erreurs, n'hésitez pas à me les communiquer

    D'avance, merci d'avoir pris le temps de me lire voire, si vous avez pu, de m'avoir répondu.

    Jérémy
    Images attachées Images attachées  

  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 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 Ruches et essaims
    Bonjour,


    Un premier lot d’observations.

    Du nom des entités-types : Une entité-type (essaim, fournisseur, etc.), symbolise une entité, une proposition, une instance d’une classe. Autrement dit, le nom de cette entité-type s’écrit au singulier : Essaim et non pas Essaims, etc.


    Citation Envoyé par Jérémy31 Voir le message
    on enregistre pour chaque essaim sa provenance (locale ou fournisseur extérieur)
    Selon votre représentation, le même essaim peut provenir simultanément de fournisseurs différents.


    Citation Envoyé par Jérémy31 Voir le message
    on enregistre pour chaque essaim [...] la race de sa reine (exemple : reine Cecropia, reine Carnica).
    Ceci mérite la mise en œuvre d’une entité-type pour la race de la reine, à moins que les valeurs "Cecropia", "Carnica", etc. fassent l’objet d’un type énuméré.


    Citation Envoyé par Jérémy31 Voir le message
    Dans le cas d’un essaim de provenance locale, on enregistre toujours de quel essaim il est issu.
    Selon votre représentation, le même essaim peut être issu de plusieurs essaims. Une des cardinalités de l’association-type Issu devrait être 0,1.


    Citation Envoyé par Jérémy31 Voir le message
    Chaque essaim est affecté à une ruche.
    Selon votre représentation, un essaim peut être affecté simultanément à plusieurs ruches. La cardinalité 1,N (association-type Affecter) devrait être remplacée par une cardinalité 1,1 (synonyme d’affectation en cours). Si l’on doit conserver la trace des affectations précédentes d’un essaim dans différentes ruches, alors mettre en œuvre une association-type porteuse (disons AffecterHisto) des périodes (dates de début et de fin) de ces affectations passées, en tenant compte du fait que pendant une période donnée, un essaim ne peut être affecté qu’à une seule ruche.

    D’après l’association-type Affecter, une ruche peut accueillir plus d’un essaim à la fois : ça doit être un joyeux b... là-dedans. La cardinalité 0,N (association-type Affecter) doit être remplacée par une cardinalité 0,1, synonyme d’affectation en cours.

    Si chronologiquement une ruche peut héberger des essaims successifs, il faudrait prévoir une association-type ayant pour objet d’historiser les périodes d’accueil successives de ces essaims (dates de début et de fin) : l’association-type AffecterHisto mentionnée ci-dessus devrait faire l’affaire, en tenant compte du fait que pendant une période donnée, une ruche ne peut héberger qu'un essaim.


    Citation Envoyé par Jérémy31 Voir le message
    Occasionnellement il peut arriver qu’un essaim soit changé de ruche pour une intervention sur la ruche d’origine.
    Mettre en œuvre une association-type entre Essaim et Ruche, ayant pour objet l’hébergement provisoire lors des interventions. Cette association-type devrait être porteuse de la période d’hébergement provisoire (date de début et date de fin).


    N.B. Signaler à l’auteur de l’énoncé qu’un système n’étant pas un être animé, capable d’initiatives, il ne peut pas avoir d’objectif, il peut seulement avoir pour objet.
    (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.

  3. #3
    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,
    Citation Envoyé par Jérémy31 Voir le message
    [...] mon problème réside essentiellement, je pense, dans les deux derniers paragraphes.

    Alors, que peut-on dire des deux derniers paragraphes.

    Citation Envoyé par Jérémy31 Voir le message
    Une récolte est constitué du miel issu de plusieurs ruches ayant séjournées dans des emplacements compatibles avec la qualité du miel recherché (miel de châtaigner, miel de sapin, miel de fleurs ...).
    Le "triangle" associatif Placer/Récolter/Situer est "trop riche" par rapport au texte. En effet, via l'entité Récolte, on s'expose à la mise en relation d'une Ruche et d'un Emplacement alors que cette Ruche n'a jamais été Placée à cet Emplacement.

    Exemple
    Placer contient (Ruche1, Emplacement1)
    Récolter contient (Ruche1, Récolte1)
    Rien n'interdit que Situer contienne (Récolte1, Emplacement2) et pas (Récolte1, Emplacement1). Il suffit que l'occurrence Emplacement2 existe dans Emplacement. Pour éviter ce genre d'incohérences dans la future application informatique, il faudra mettre en oeuvre des contrôles au moment de la création des occurrences de l'association Situer.

    Pour casser ce triangle infernal, il faut supprimer l'une des associations. Comme on ne peut se passer de Placer ni de Récolter, c'est donc Situer qu'il faut supprimer.

    Se pose alors une question cruciale : comment savoir quel est l'emplacement auquel se trouve la Ruche au moment de la récolte ? Pour la traçabilité, c'est incontournable. La réponse peut consister à comparer la date de la récolte avec les périodes d'emplacement de la ruche (association Placer)... ce qui n'est pas immédiat, et n'est peut-être pas correct. Pour être certain de l'emplacement, il vaut mieux le désigner directement sans passer par une comparaison de dates.

    La solution consiste à dire que la récolte porte sur "une ruche ayant séjourné dans un emplacement" (tiens, c'est le texte du cahier des charges !) c'est-à-dire que la récolte porte sur des couples (Ruche, Emplacement), donc sur l'association Placer. L'association Récolter doit associer l'entité Récolte à l'association Placer et non pas à l'entité Ruche.

    (Oui, on peut associer une association et une entité ! A ma connaissance, aucun outil du marché ne sait le faire ; c'est pourtant l'une des plus grandes avancées post version 1 du MCD Merise. Ceux qui ont eu le courage de lire certains de mes messages dans d'autres sujets savent que ce n'est pas première fois que j'en parle ).

    ( Placer )--1,1----( Récolter )----0,n->[ Récolte ]

    L'alternative est de faire de Placer (ou de Récolter) une association ternaire entre Ruche, Emplacement et Récolte mais cette option comporte des inconvénients :
    - perte sémantique : une seule association pour exprimer 2 concepts
    - dénormalisation : l'association ne serait pas en BCNF (dans le modèle relationnel, on pourrait dire que c'est à cause de la présence de la dépendance fonctionnelle {CodeR, CodeEmp} -> {CodeRec} )

    Une remarque supplémentaire
    L'association Placer contient une faiblesse : une Ruche, dans toute sa vie de ruche, ne peut pas se trouver plus d'une fois au même Emplacement. Il faut associer une période à Placer. Cette association devient "tripatte" en associant donc les 3 entités Ruche, Emplacement et Période.


    La suite au prochain épisode...


    JPhi33
    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

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses, je vais me pencher dessus pour m'en sortir, si d'autres ont des remarques, n'hésitez pas

  5. #5
    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 Des produits et des matériels
    Bonsoir,


    Les observations du jour (si je puis dire).


    L’énoncé qui vous a été proposé énumère certains types d’interventions : nourrissement de l’essaim, traitement de l’essaim, essaimage, entretien de la ruche. Il serait opportun de définir une entité-type ad-hoc, disons TypeIntervention.


    Citation Envoyé par Jérémy31 Voir le message
    Pour la traçabilité, il est important de garder l’historique des cadres insérés dans chaque ruche.
    En ce sens, on devrait donc avoir deux associations-types entre Ruche et Cadre :
    La 1re décrivant les cadres en cours d’utilisation pour une ruche donnée, depuis une date donnée pour chaque cadre.
    La 2e, décrivant l’historique des utilisations des cadres pour une ruche donnée, pendant une période donnée (date de début et date de fin).
    Vous me direz : pourquoi ne pas fondre ces deux associations-types en une seule ? Disons que la description des données à l’altitude 10 000 est une chose, mais il y a aussi leur manipulation, dans la soute. Si l’on n’y prend garde, cette manipulation devient très compliquée dès que l’on amalgame les deux aspects temporels suivants :
    Quelque chose est en cours, ce qui se traduit par la mise en œuvre d’une date de début ;
    Quelque chose est terminé, ce qui se traduit par la mise en œuvre d’un intervalle (date de début et date de fin).
    A noter qu’à l’occasion de mon 1er message, je vous avais suggéré cette approche de séparation du présent et du passé pour l’affectation des essaims aux ruches.


    Citation Envoyé par Jérémy31 Voir le message
    Des interventions sont effectuées périodiquement sur les ruches.
    Selon votre représentation graphique, si pour une intervention donnée on utilise au moins un produit, alors on utilise au moins un matériel : Soit. Toutefois, selon cette représentation, rien n’interdit d’utiliser un matériel qui n’a rien à voir avec le produit, par exemple un couteau tartempion avec un fumigène. Pour éviter cela, on est conduit à mettre en œuvre un catalogue des couples (produit, matériel) pertinents et chaque intervention doit faire référence à ce catalogue.
    Toujours selon votre représentation, rien n’empêche que le produit utilisé n’ait rien à voir avec le lot référencé (propriété LotProduitUtilisé de l’association-type Necessiter). Autrement dit, il faut blinder, et l’association-type Necessiter doit référencer l’entité-type LotProduit.
    Vous me direz encore : si fonctionnellement cela est juste, Merise ne me permet pas de le représenter de façon naturelle. Je répondrai que l’on peut sacrifier la pureté du MCD, en transformant certaines associations-types en entités-types, ou bien utiliser la représentation E/R plutôt que la représentation merisienne (ce qui revient un peu au même, c'est-à-dire déguiser des associations-types en entités-types), ou encore ne toucher à rien et attendre le passage au MLD pour mettre en œuvre les contraintes (ce qui n’est pas à recommander, puisque l’on gère deux modèles très différents, avec les problèmes de maintenance inhérents). Ce qui serait bien, c’est que l’on dispose d’un AGL orienté OOM (Orientation Objet dans Merise), allant ainsi dans le sens de ce qu’exprime JPhi33, je cite :
    Citation Envoyé par JPhi33 Voir le message
    « Oui, on peut associer une association et une entité ! »
    J'aimerais être contredit, mais, à ma connaissance, un tel AGL reste à développer...
    (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.

  6. #6
    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,

    J'avais dit qu'il y aurait une suite, la voici.

    Citation Envoyé par Jérémy31 Voir le message
    On enregistre pour chaque ruche la date et le poids récolté.
    L'endroit où se situent ces informations ne peut donc pas être l'entité Récolte. La date de récolte et le poids récolté doivent être des propriétés de Placer qui, selon la modélisation décrite dans mon précédent message, est une association entre Ruche, Emplacement et Période.

    Il y aurait des choses à dire sur cette entité Période (ou plutôt PériodePlacement par exemple) que j'ai introduite de manière un peu lapidaire dans le souci de mettre en évidence que l'association Placer, telle que définie dans le schéma de Jérémy, n'est pas suffisante. Il y aurait des choses à dire, d'une part pour tenir compte des remarques de fsmrel concernant la modélisation l'historique (dualité actuel / terminé), d'autre part, parce qu'il existe une autre technique de modélisation des historiques "à période".


    JPhi33
    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

  7. #7
    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,

    La suite sur l'entité Période.

    L'association de cette entité avec Ruche et Emplacement dépend de son "pouvoir associatif". Cela signifie qu'avant d'associer une telle entité, il faut d'abord se demander si chaque période (chaque occurrence de l'entité) est commune à plusieurs ruches (1) ou si, au contraire, une période donnée est caractéristique du placement d'une ruche donnée (2) et 2 ruches séjournant pendant la même période (au même endroit ou non) ne serait qu'une coïncidence.

    Dans le cas (1), la modélisation est celle que j'ai indiquée précédemment.

    Dans le cas (2), la technique de modélisation à mettre en oeuvre est celle de l'identification rélative. En effet, les périodes de séjour d'une ruche lui étant spécifiques, on peut les identifier par rapport à la ruche, ce qui garantit l'indépendance des périodes d'une ruche par rapport aux périodes des autres ruches, mêmes lorsqu'elles coïncident. Pour chaque période, la ruche séjourne à un emplacement donné.

    [Emplacement]<-0,n----( )----1,1--[Période]-(1,1)---( )----0,n->[Ruche]

    (la notation (1,1) est celle de l'identification relative de PowerAMC)

    Il y a 3 possibilités pour identifier Période :
    • la période : CodeR, DateDeb, DateFin
    • la date de début : CodeR, DateDeb
    • un numéro non significatif : CodeR, numeroPeriode

    Quel que soit le type d'identification utilisé, il y aura lieu, dans l'application informatique, de mettre en oeuvre des contrôles de non chevauchement des périodes pour une ruche donnée.


    La mièlerie étant une entreprise, il est probable que les ruches sont déplacées par groupes en même temps et donc qu'une période de séjour concerne plusieurs ruches. En conséquence, il faudrait utiliser la modélisation (1).


    JPhi33
    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

  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 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 Propos du jour
    Bonsoir,


    Citation Envoyé par JPhi33 Voir le message
    L'association Récolter doit associer l'entité Récolte à l'association Placer et non pas à l'entité Ruche.
    ( Placer )--1,1----( Récolter )----0,n->[ Récolte ]
    Bien vu. Cette solution est évidemment préférable à celle du "triangle" associatif Placer/Récolter/Situer, laquelle, comme vous le faites remarquer, autoriserait la récolte du miel de ruches absentes des emplacements où l’on récoltera.

    Une remarque toutefois concernant le niveau logique, en l’occurrence la structure des tables et leur manipulation. Lors du passage du MCD au MLD, l’association-type Récolter devra faire l’objet de la génération d’une table Récolter (ayant une clé de structure identique à celle de la table Placer). En effet, à supposer que l’on sache tout sur une récolte (table Récolte), pour leur part, le poids et la date de la récolte par ruche ne seront de toute façon pas connus tant que cette récolte n’aura pas eu lieu. Si la table Placer absorbait la table Récolter, les attributs correspondants (disons PoidsRec et DateRec) devraient être marqués NULL ou héberger des valeurs spéciales, provisoires, en attendant que la récolte ait lieu. Ceci introduirait des lourdeurs et des risques d’erreur dans la manipulation des données (instruction SQL SELECT).


    Citation Envoyé par JPhi33 Voir le message
    Citation Envoyé par Jérémy31 Voir le message
    On enregistre pour chaque ruche la date et le poids récolté.
    L'endroit où se situent ces informations ne peut donc pas être l'entité Récolte. La date de récolte et le poids récolté doivent être des propriétés de Placer qui, selon la modélisation décrite dans mon précédent message, est une association entre Ruche, Emplacement et Période.
    Comme je viens de l’écrire, l’association-type Récolter devrait de préférence faire l’objet d’une table lors du processus de dérivation du MCD en MLD. Ainsi, on peut ne valoriser la table Recolter qu’une fois la récolte effectuée. La représentation tabulaire graphique devrait ressembler à ceci (Power AMC) :



    Dans cette représentation, j’ai implicitement défini un type EmpPeriode pour l'attribut du même nom, mais on peut préférer remplacer ce dernier par une paire {DateDebut, DateFin}.


    Citation Envoyé par JPhi33 Voir le message
    Quel que soit le type d'identification utilisé, il y aura lieu, dans l'application informatique, de mettre en oeuvre des contrôles de non chevauchement des périodes pour une ruche donnée.
    Certes, mais ces contrôles de non chevauchement doivent être pris directement en charge par le SGBD et surtout pas par les programmes, c'est-à-dire que dès que l’on crée ou modifie une date, le contrôle devra être automatiquement déclenché par le SGBD. La norme SQL propose en ce sens l’instruction CREATE ASSERTION, mais si le SGBD ne la propose pas, on peut mettre en œuvre un trigger (c'est plus lourd, mais ça marche bien).


    Exemple (non testé) d’assertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE ASSERTION Rx CHECK (NOT EXISTS ( 
      SELECT  x.CodeRuche
      FROM    Placer x, Placer y
      WHERE   x.CodeRuche = y.CodeRuche
        And   (x.CodeEmp < y.CodeEmp Or x.CodeEmp = y.CodeEmp And x.DateDebut < y.DateDebut)
        And   x.DateFin >= y.DateDebut And x.DateDebut <= y.DateFin)) ;
    Pour un exemple de trigger de test de non recouvrement des dates, voir ici.


    Citation Envoyé par JPhi33 Voir le message
    L'alternative est de faire de Placer (ou de Récolter) une association ternaire entre Ruche, Emplacement et Récolte mais cette option comporte des inconvénients :
    - perte sémantique : une seule association pour exprimer 2 concepts
    - dénormalisation : l'association ne serait pas en BCNF (dans le modèle relationnel, on pourrait dire que c'est à cause de la présence de la dépendance fonctionnelle {CodeR, CodeEmp} -> {CodeRec} )
    Permettez-moi de ne pas être d’accord en ce qui concerne le respect de la BCNF (Jérémy, ne vous sentez pas obligé de suivre, je vais devoir faire un peu de théorie et sortir du périmètre de votre étude). Passons donc au niveau relationnel et intéressons-nous à la relation Placer (le terme relation étant pris au sens de la théorie relationnelle), issue par dérivation de l’association-type Placer considérée comme ternaire et qui a absorbé au passage la relation Récolter. L’en-tête de la relation Placer est le suivant :
    {CodeR, CodeEmp, CodeRec, PoidsRec, DateRec}
    En-tête dans lequel les attributs PoidsRec et DateRec représentent respectivement le poids et la date de récolte du miel d’une ruche donnée, attributs absorbés en même temps que la relation Récolter. Je fais abstraction de l’attribut HistoriqueEmp qui n’est pas pertinent en l’état et dont l’absence n’influe pas sur ce qui suit.

    Un AGL déclarera le trio {CodeR, CodeEmp, CodeRec} comme étant clé de la relation Placer, mais ceci est une erreur.

    Avant d’aller plus loin, je suis obligé de rappeler quelques définitions. Je commence par celle de la clé (plus précisément candidate) :
    Une clé candidate est un sous-ensemble d’attributs K de l’en-tête d’une relation R, respectant les deux contraintes suivantes :
    Unicité. Deux tuples distincts de R ne peuvent avoir même valeur de K.

    Irréductibilité (ou minimalité). Il n’existe pas de sous-ensemble strict de K garantissant la règle d’unicité.
    Je dois rappeler aussi la définition de ce qu’est une surclé :
    Une surclé est un sous-ensemble d’attributs K de l’en-tête d’une relation R, astreint à respecter seulement la contrainte d’unicité. (La clé candidate peut être vue comme une spécialisation de la surclé).
    Le trio {CodeR, CodeEmp, CodeRec} constitue une surclé, mais certainement pas une clé candidate, car s’il respecte la contrainte d’unicité, il ne respecte pas la contrainte d’irréductibilité, ceci à cause de la dépendance fonctionnelle dont vous avez fait mention ci-dessus :
    DF01 : {CodeR, CodeEmp} {CodeRec}
    Qui signifie que (dans un contexte intemporel), une ruche située à un emplacement donné ne peut faire l’objet que d’une récolte.

    Il existe d’autres dépendances fonctionnelles. En effet (toujours dans un contexte intemporel), la récolte d’une ruche donnée ne peut se faire qu’à un seul emplacement :
    DF02 : {CodeR, CodeRec} {CodeEmp}
    En outre, puisque selon l’énoncé initial « On enregistre pour chaque ruche la date et le poids récolté », il existe les dépendances fonctionnelles
    DF03 : {CodeR, CodeRec} {PoidsRec}
    DF04 : {CodeR, CodeRec} {DateRec}
    En appliquant la règle d’augmentation (voir les axiomes d’Armstrong) appliquée à DF01, on produit :
    DF05 : {CodeR, CodeEmp} {CodeR, CodeRec}
    Et par transitivité appliquée à DF05 et DF03 :
    DF06 : {CodeR, CodeEmp} {PoidsRec}
    Même principe avec DF04 :
    DF07 : {CodeR, CodeEmp} {DateRec}
    Si l’on applique la règle de réflexivité (axiomes d’Armstrong), on produit les DF :
    DF08 : {CodeR, CodeRec} {CodeR}
    DF09 : {CodeR, CodeRec} {CodeRec}
    DF10 : {CodeR, CodeEmp} {CodeR}
    DF11 : {CodeR, CodeEmp} {CodeEmp}
    Autrement dit, il existe les dépendances fonctionnelles suivantes, auxquelles participent l’ensemble des attributs de la relation :
    DF12 : {CodeR, CodeRec} {CodeR, CodeRec, CodeEmp, PoidsRec, DateRec}
    DF13 : {CodeR, CodeEmp} {CodeR, CodeRec, CodeEmp, PoidsRec, DateRec}
    Ce qui revient à dire que les paires {CodeR, CodeRec} et {CodeR, CodeEmp} sont clés candidates (et l’on montre que ce sont les seules, en partant du principe qu’une récolte et un emplacement concernent plus d’une ruche).

    Je dois rappeler au passage la définition de la dépendance fonctionnelle triviale :
    Soit R une relation et X et Y deux sous-ensembles quelconques d’attributs de l’en-tête de R. La dépendance fonctionnelle X Y est dite triviale si Y est inclus dans X (inclusion ensembliste, au sens large).
    Je rappelle enfin la définition de la BCNF :
    Une relation R est en forme normale de Boyce-Codd (BCNF) si et seulement si les seules dépendances fonctionnelles non triviales auxquelles elle satisfait sont de la forme X Y, où X représente une surclé et Y un sous-ensemble d’attributs de l’en-tête de R.
    Les seules dépendances fonctionnelles non triviales de la relation Placer sont celles qui ont été énumérées ci-dessus (DF01 à DF07) et les déterminants (parties gauches) de ces DF sont des clés candidates, donc a fortiori des surclés : la relation Placer vérifie la BCNF.


    Citation Envoyé par JPhi33 Voir le message
    L'association Placer contient une faiblesse : une Ruche, dans toute sa vie de ruche, ne peut pas se trouver plus d'une fois au même Emplacement. Il faut associer une période à Placer. Cette association devient "tripatte" en associant donc les 3 entités Ruche, Emplacement et Période.
    En effet. Maintenant, toujours dans l'intérêt des manipulations SQL, il faudrait peut-être encore distinguer ce qui est en cours de ce qui est historisé.

    Une ruche est actuellement à tel emplacement : établir une association-type avec Emplacement à cet effet.
    Une ruche a pu précédemment être à tel ou tel emplacement : on retrouve l’association-type Placer.

    La barre est montée d’un cran : Jérémy peut préférer éviter les migraines et ne pas faire tout de suite cette distinction.

    Pour en revenir à l’exercice ayant trait au respect de la BCNF : les clés candidates de la relation Placer, ainsi que les dépendances fonctionnelles associées, sont à aménager pour prendre en compte la dimension temporelle.

    Ainsi, la paire {CodeR, CodeEmp} n’est plus clé. Il faut aussi tenir compte des contraintes : à une date donnée (attribut EmpPeriode), une ruche est à un seul emplacement et fait à cette date l’objet d’une seule récolte. Cela revient à dire que la relation a pour clé la paire {CodeR, EmpPeriode).
    (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.

  9. #9
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Apiculteur amateur débutant, il me semble utile d'éclairer cette réflexion de modélisation de quelques remarques issues de la pratique.
    Dans la réalité, notamment pour les ruches de type Dadant, il existe deux types de cadres. Les cadres de corps de ruches, qui servent à accueillir la colonie (couvain et réserve hivernale) et qui, de ce fait, ne participent pas à la récolte. Le miel et le pollen qu'ils contiennent servant à la survie hivernale de la colonie, pour faire simple.
    Au passage, on parle d'essaim quand une reine et ses ouvrières ont quitté la rûche ou non pas encore intégré de local fixe. Dès qu'un essaim est 'fixé', que les cirières on créé des alvéoles et que la reine a commencé à pondre, on parle de colonie.
    Quand les cadres du corps de rûche sont pleins, de couvain, de miel et/ou de pollen, on place au dessus du corps de rûche une hausse (puis deux, trois .. voire cinq) dont les cadres sont d'une hauteur correspondant à la moitié de celle des cadres du corps de la rûche.
    C'est de ces cadres que la récolte sera extraite une fois le miel suffisamment déshydraté et la période de floraison terminée.
    Au passage, encore, avant d'être stocké dans des maturateurs à filtre et décantation, le miel est extrait des cadres désoperculés puis placés dans des sortes de centrifugeuses (tangentielles ou radiales).
    En termes de traçabilité, tout cela me semble faire sens.
    Je ne sais pas dans quelle mesure ces précisions peuvent influer sur la modélisation, mais l'association rûche->récolte m'apparaît un peu .... réductrice.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  10. #10
    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,

    Citation Envoyé par Maljuna Kris Voir le message
    Apiculteur amateur débutant, il me semble utile d'éclairer cette réflexion de modélisation de quelques remarques issues de la pratique.
    Jérémy31 étant étudiant, il doit se conformer à l'énoncé. Vos précisions pourront peut-être aider le rédacteur du sujet à concevoir un énoncé plus proche de la réalité.

    Citation Envoyé par Maljuna Kris Voir le message
    [...] mais l'association rûche->récolte m'apparaît un peu .... réductrice.
    Oui, c'est pourquoi fsmrel et moi-même écrivons (abondamment) sur ce sujet .


    JPhi33
    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

  11. #11
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Du nom des entités-types : Une entité-type (essaim, fournisseur, etc.), symbolise une entité, une proposition, une instance d’une classe. Autrement dit, le nom de cette entité-type s’écrit au singulier : Essaim et non pas Essaims, etc.
    Voilà un point de vue que je suis loin de partager.

    L'expérience m'a prouvé que, pour le client de base, l'apiculteur dans le cas précis, (mais j'ai aussi modélisé la traçabilité d'oignons et d'échalotes, ou des dossiers patients dans le cadre du PMSI d'un CHU entre autres) il est beaucoup plus parlant de lui dire qu'on cherche à modéliser ses essaims en inventoriant leurs propriétés communes dans une structure au sein de laquelle chaque essaim restera identifiable.
    C'est ainsi que j'ai pour habitude de nommer les classes au pluriel, puisque justement elles représentent l'ensemble des instances, et de donner à la colonne identifiant le nom de la classe au singulier.
    Cela donne l'essaim 234 parmi les essaims.

    Des approches campées sur un formalisme rigoriste, me font peur. J'ai l'impression que, dès les études, on cherche à faire des futurs développeurs des sortes d'énarques de l'informatique.
    Je sais bien qu'il ne s'agit ici que d'un exercice proposé à un groupe d'étudiants, mais cet exercice a pour objet (ai-je bien retenu la leçon sémantique ?) de les former, pas de les formater.
    Cela me rappelle les débuts controversés de MERISE qui ont fait brocardé cette méthode, dont le nom n'est pas un acronyme, en Méthode Eprouvée pour Ralentir Indéfiniment et Systématiquement les Études.

    Il ne faudrait pas oublier, comme le disait André Leroi-Gourhan, que "l'outil n'est, réellement, que par le geste qui le rend techniquement efficace", et que l'appropriation d'une méthode est une phase indispensable à l'efficience de son utilisateur.

    D'autant que je connais, sans la moindre connotation péjorative, de nombreux décideurs sans culture systémique notamment quelques 'happy-culteurs", mais qui restent des donneurs d'ordres, ceux qui payent la prestation, et qui ,au moment de valider une modélisation de leur miellerie, n'entendrons pas payer du "jus de cervelle", mais quelque chose dont ils auront compris que cela va leur permettre de répondre aux critères de traçabilité exigés par leur client de la grande distribution.

    Ne jamais perdre de vue que l'on modélise un domaine qui a une existence réelle, concrète et des acteurs qui eux, ont des objectifs.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  12. #12
    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
    Du nom des entités-types : Une entité-type (essaim, fournisseur, etc.), symbolise une entité, une proposition, une instance d’une classe. Autrement dit, le nom de cette entité-type s’écrit au singulier : Essaim et non pas Essaims, etc.
    Citation Envoyé par Maljuna Kris
    Voilà un point de vue que je suis loin de partager.
    Je suis plutôt d'accord avec Maljuna Kris.

    D'un côté, le MCD est issu de règles de gestion de la forme :
    "1 chose peut dépendre de plusieurs trucs et 1 truc peut rendre dépendant plusieurs choses."

    On part à chaque fois d'une unité vers un ensemble (ou vers une unité s'il y a une cardinalité 1,1).

    Il serait donc logique d'écrire les noms des entités au singulier comme le préconise fsmrel.

    Sauf que par la suite, cette entité se transformera en une table, laquelle est bel et bien un ensemble de choses ou de trucs et il me semble plus logique d'écrire son nom au pluriel.

    Et comme les logiciels de modélisation conservent les noms dans le passage du MCD au MLD puis aux requêtes SQL de création des tables, il me semble plus pratique de nommer les entités avec des noms au pluriel en pensant déjà aux noms des futurs tables.

    Dans les exemples que je donne sur le forum, je donne souvent des morceaux de MCD sous forme textuelle dans lesquels les entités sont au singulier :
    Personne -0,n----Travailler----0,n- Entreprise

    Et je passe à la description des tables avec mon standard de nommage et le pluriel :
    Personnes (P_Id, P_Nom, P_Prenom, ...)
    Entreprises (E_Id, E_Nom, ...)
    Travailler (T_IdPersonne, T_Id_Entreprise, ...)

    Mais quand j'utilise un logiciel demodélisation, je pense aussi au résultat final dès le MCD et je nomme les entités au pluriel.

    Au singulier ou au pluriel, ne soyons pas trop rigoristes là-dessus car l'important est quand même que le MCD soit juste non ?
    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 !

  13. #13
    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
    Bonsoir,


    Citation Envoyé par Maljuna Kris Voir le message
    Citation Envoyé par fsmrel Voir le message
    Du nom des entités-types : Une entité-type (essaim, fournisseur, etc.), symbolise une entité, une proposition, une instance d’une classe. Autrement dit, le nom de cette entité-type s’écrit au singulier : Essaim et non pas Essaims, etc.
    Voilà un point de vue que je suis loin de partager.
    Vous me forcez à développer un sujet pourtant relativement mineur, car à partir d’un conseil que j’ai donné à Jérémy et qui tient en deux lignes, vous en arrivez à évoquer la fabrication d’«énarques de l’informatique » (sic) et le « formatage » (re-sic) des jeunes gens. Fichtre ! On sort du sujet et je reviens au point de discussion contesté.

    Tout d’abord l’emploi du singulier me paraît pertinent parce qu’on donne un nom à ce qu’en Merise on appelle le plus souvent — de façon elliptique — entité, mais que des auteurs majeurs comme Dominique Nanci, Hubert Tardieu ou Arnold Rochfeld appellent un type d’entité (ou entité-type ou type d’individu ou individu-type), ce qui, par définition, est un type. En ce sens, je cite l’ouvrage de référence sur Merise et sans doute le plus cité : H. Tardieu, A. Rochfeld, R. Colletti. La Méthode MERISE, Tome 1 Principes et outils. (Les Éditions d’organisation) :
    Un type est une classe d’objets similaires. Les trois abstractions de base dans le formalisme individuel sont : le type d’individu, le type de relation et le type de propriété.
    Pour imager, on peut considérer un type d’entité comme un stencil, un patron (pattern, template), un prototype pour l’ensemble des entités (c'est-à-dire les valeurs prises par un type d’entité, valeurs que l’on peut encore appeler instances, n-uplets, occurrences...) ayant la même structure (propriétés, attributs typés). De leur côté, les systèmes mettent à notre disposition des types de base, par exemple le type INTEGER (et non pas, je vous prie de noter, INTEGERS), et ces systèmes permettent aussi à l’utilisateur de définir ses propres types, par exemple le type POLYGONE, le type ELLIPSE qui en est un sous-type, le type CERCLE qui est un sous-type d’ELLIPSE, etc. Dans le domaine de la gestion, nous pouvons définir le type PERSONNE ainsi que ses sous-types INDIVIDU, ENTREPRISE, ÉTABLISSEMENT, etc. Tout cela doit de préférence être au singulier, à l’instar des types de base proposés par la norme SQL : INTEGER, CHARACTER, DATE, etc.

    A cette occasion, je fais encore observer que si l’on met en œuvre un type et un sous-type (par exemple, pour changer, MAMMIFÈRE et HOMME), il est universellement admis que le nom implicite de la relation d’héritage est IS A (EST UN) et non pas ARE (SONT). On n’écrit donc pas HOMMES EST UN MAMMIFÈRES, au plan de la syntaxe ça serait incorrect.

    Incidemment, vous observerez que dans la classification des organismes, il est fait usage d’une taxonomie selon laquelle les noms sont au singulier (Règne, Sous-règne, Tribu, Famille, Sous-famille, etc.)

    Qu’en est-il au niveau des modèles sémantiques (Merise, et Cie) ? Il se trouve qu’on est dans le domaine du non-dit, ce qui nous conduit à observer les règles implicitement utilisées par les auteurs reconnus.

    Cas de Merise

    Je me rallie aux pères de la Méthode.
    Parmi ceux-ci figure Dominique Nanci, co-auteur du premier ouvrage français traitant de la modélisation conceptuelle des données (H. Tardieu, D. Nanci , D. Pascot. Conception d'un système d'information – Construction de la base de données (Éditions d'Organisation, 1979)). Je n’ai pas en ma possession cet ouvrage, mais j’observe que dans le dernier qu’il a fait paraître, Ingénierie des systèmes d’information Merise 2e génération, D. Nanci utilise le singulier pour nommer les types d’entités. Voyez encore ce qu’il a écrit dans la FAQ Merise. Vous pouvez aussi le consulter via Developpez.com pour lui demander son avis.

    Dans l’acte de naissance de Merise, à savoir le document officiel du CTI (Ministère de l'Industrie, Mission à l'Informatique, Centre Technique Informatique, Méthode de Définition d'un Système d'Informations, Fascicule 4. Juin 1979), le nom de chaque type d’entité est au singulier : FOURNISSEUR, PRODUIT, CLIENT, POLICE, AGENT, ASSURÉ, ÉDITEUR, LIVRE, ÉCRIVAIN, etc. Il en va de même pour l’ouvrage de référence sur Merise que j’ai mentionné et cité au début.

    Vous pourrez vérifier que, bien qu’il ne fasse pas partie de l’équipe des fondateurs, Michel Diviné se conforme à l’usage.

    Cas de l’approche Entité/Relation

    Passons à la référence mondiale de l’approche Entité/Relation, à savoir Peter Chen et reportez-vous à la page 19 de son article fondateur The Entity-Relationship Model -Toward a Unified View of Data : on y trouve LE diagramme de référence et vous noterez qu’une fois de plus le nom de chaque type d’entité est au singulier.

    Cas d’UML

    Dans les ouvrages dont je dispose, le nom d’une classe est au singulier. Pour savoir si l’emploi du pluriel est préférable, vous pouvez vous renseigner auprès de Christian Soutou (membre de Developpez.com).

    Toujours chez Developpez.com, voyez des exemples de diagrammes de classes, dus à Laurent Audibert. Si l’on survole l’article qu’il a rédigé, on voit manifestement qu’il en reste au singulier.

    Cas du Modèle Relationnel de Données

    Quittons le niveau de la modélisation sémantique pour celui du Modèle Relationnel de Données. Dans son célèbre article fondateur de 1970, Ted Codd décrit la relation employee (au sens relationnel, c'est-à-dire la table au niveau SQL), et il n’écrit jamais employees pour nommer la relation. Même chose pour ses autres relations : component, part, salary history, etc.

    Dans son ouvrage An Introduction to Database Systems, tiré à plus de 700 000 exemplaires, Chris Date — qui est quand même la référence mondiale en ce qui concerne le Modèle Relationnel de Données— n’utilise que des noms de relations (et de tables) au singulier.

    Des pointures telles que Ron Fagin et Carlo Zaniolo utilisent eux aussi le singulier.

    Certes, tel ou tel auteur utilise de manière fugace le pluriel. Ainsi, Jeff Ullman décrit la relation SUPPLIERS. et David Maier la relation FLIGHTS (vite renommée sched), mais il faut vraiment fouiller, car ce sont des mathématiciens, et ils utilisent de préférence des lettres de variables, du genre R, S, T.

    Un détour du côté des prédicats

    Une relation (au sens du Modèle Relationnel de Données), par exemple Être membre de Developpez.com, ce que l’on écrit de façon plus concise Membre, est dotée d’un en-tête (schéma de table au sens SQL) qui est un prédicat au sens de la logique. Un prédicat est un énoncé vérifonctionnel, une fonction de vérité, c'est-à-dire pouvant prendre les valeurs VRAI ou FAUX. Les attributs de l’en-tête de la relation sont les paramètres de la fonction. Chaque tuple (n-uplet, ligne) du corps de la relation représente une proposition vraie. En insérant un tuple, on instancie le prédicat.

    Par exemple, une représentation (partielle) du membre-type chez Developpez.com pourrait être la suivante :
    Membre {MbrId, Pseudo, DateInscr, Localisation}
    Qui se lit :
    Le membre MbrId a pour pseudo Pseudo, s’est inscrit le DateInscr et le lieu où on peut le situer est Localisation.
    Les paramètres du prédicat sont les attributs de la relation. Les propositions vraies sont les suivantes :
    Le membre 314159 a pour pseudo CinePhil, il s’est inscrit le 10 août 2006 et le lieu où on peut le situer est Toulouse.
    Le membre 314000 a pour pseudo Maljuna Kris, il s’est inscrit le 17 novembre 2005 et le lieu où on peut le situer est Plomodiern.
    Le membre 314370 a pour pseudo JPhi33, il s’est inscrit le 31 août 2007 et le lieu où on peut le situer est Bordeaux.
    Le membre 314182 a pour pseudo fsmrel, il s’est inscrit le 8 septembre 2006 et le lieu où on peut le situer est Relationland.
    Etc.
    J’ai nommé le prédicat : Membre et non pas Membres, car j’ai écrit
    Le membre MbrId a pour pseudo Pseudo, il s’est inscrit le DateInscr et le lieu où on peut le situer est Localisation
    Et non pas — parce qu’en logique des propositions et des prédicats par construction on ne procède pas ainsi :
    Les membres MbrId ont pour pseudo Pseudo , ils se sont inscrits le DateInscr et le lieu où on peut les situer est Localisation.

    Le point de vue de la production informatique

    A partir d’une certaine taille, une entreprise est dotée d’une direction de l’informatique, comprenant elle-même une direction des études et une direction de la production, et c’est cette dernière qui au final a la responsabilité de la production de résultats valides, dans des délais fixés. Bref, l’organisation de cette direction se doit d’être particulièrement rigoureuse et ceci a un impact sur la structure des noms des entités-types. En effet, les tables (et tous autres objets tels que les index), leurs sauvegardes et autres copies sont hébergées par des fichiers qui eux-mêmes ont chacun un nom, dans lequel on retrouve quelque part le nom de la table correspondante.

    Autrement dit, avant même que la rédaction des dossiers de conception soit entreprise, la production et les études (dont font partie les concepteurs) se coordonnent pour définir les règles de nommage des tables, et par contrecoup des entités-types, et c’est la production qui est pilote ès matière. En effet, de ces règles dépend la bonne organisation des automates de déclenchement des centaines de traitements impliquant des milliers d’objets, non seulement dans l’environnement de production proprement dit, mais aussi dans ceux de validation, de prototypage, de développement, et j’en passe. Ainsi, il n’y aura peut-être pas d’entités-types nommées ENTREPRISE ou DOSSIER_SINISTRE (voire ENTREPRISES ou DOSSIERS_SINISTRE), mais plus prosaïquement PEE0016 et GA2002. D’expérience, on s’y fait très vite.

    En résumé

    Je ne condamne pas l’emploi du pluriel, mais je conseille aux plus jeunes de s’inspirer de la façon de nommer de l’immense majorité des auteurs reconnus par leurs pairs et de se souvenir qu’une fois sur le terrain, ils devront se conformer aux règles de nommage des entités-types qui auront été édictées par qui de droit.


    Citation Envoyé par Maljuna Kris Voir le message
    L'expérience m'a prouvé que, pour le client de base, l'apiculteur dans le cas précis, (mais j'ai aussi modélisé la traçabilité d'oignons et d'échalotes, ou des dossiers patients dans le cadre du PMSI d'un CHU entre autres) il est beaucoup plus parlant de lui dire qu'on cherche à modéliser ses essaims en inventoriant leurs propriétés communes dans une structure au sein de laquelle chaque essaim restera identifiable.
    C'est ainsi que j'ai pour habitude de nommer les classes au pluriel, puisque justement elles représentent l'ensemble des instances, et de donner à la colonne identifiant le nom de la classe au singulier.
    Cela donne l'essaim 234 parmi les essaims.
    Je suis désolé, mais votre démonstration relève du non sequitur. S’il est évident qu’il faut parler à l’apiculteur de l'essaim 234 parmi l’ensemble des essaims, ça n’est pas pour autant qu’il faille produire des diagrammes de classes ou des diagrammes E/R avec des noms de classes ou de types d’entités au pluriel, du genre ESSAIMS plutôt qu’ESSAIM (et inversement). Les métiers d’apiculteur et de concepteur sont quand même indépendants et n’ont pas à se contraindre l’un l’autre. Pour ma part, pendant plus de vingt ans, J’ai expliqué des MCD à nombre de mes clients (qu’il s’agisse de la maîtrise d’ouvrage ou de la maîtrise d’œuvre) qui voulaient savoir de quoi il en retournait : je n’ai pas le souvenir d’avoir eu à traiter du format des noms des entités-types.

    En revanche, si l’on prend le cas par exemple d’un responsable d’une grande surface, il est manifeste que celui-ci est surtout intéressé par l’optimisation de la composition des palettes, qu’elles accueillent des packs d’eau minérale, des boîtes de petits pois ou des abris de jardin, et l’on en discute à l’aide d’exemples bien concrets. Que l’entité-type correspondante s’appelle PALETTE ou PALETTES, peu lui chaut. D’un autre côté, tel équipementier me recommandera d’appeler DOCKET (ou DOCKETS si ça me chante) telle entité-type particulière dans la bande dessinée, mais là encore, l’emploi du singulier ou du pluriel ne l’intéressera pas (mais moi, oui). Le tout est de rester dans les clous du métier des gens, d’utiliser leur jargon. Chez untel on parle d’unité d’achat, chez tel autre de variante d’achat : il suffit de s’adapter et de produire des MCD en conséquence, point barre. L’art de la modélisation ne doit subir aucune influence qui ne le concerne pas.

    Maintenant, si vous représentez un type d’association par un ovale (ce qui est le cas normal en Merise) et que votre interlocuteur (VIP) se pique de connaître votre métier et préfère voir un rectangle, faites-lui cette concession (surtout s’il y va de votre participation à la suite du projet), car une fois accomplie l’étape de conception, il n’y a plus par la suite que des tables, et pour sa part la production informatique ne sera pas traumatisée par un choix graphique dont elle n’a strictement rien à faire. En revanche, on a vu qu’elle avait son mot à dire quant à la façon de nommer ces tables, et par contrecoup les entités-types.


    Citation Envoyé par Maljuna Kris Voir le message
    Des approches campées sur un formalisme rigoriste, me font peur. J'ai l'impression que, dès les études, on cherche à faire des futurs développeurs des sortes d'énarques de l'informatique.
    C'est-à-dire ? Me reprocheriez-vous d’avoir conseillé à un plus jeune de nommer une entité-type Essaim plutôt qu’Essaims ? Et que vient faire cette histoire d’énarchie ? Ça part en vrille...
    Pour ma part, j’ai débuté dans le métier à une époque où l’informatique n’était pas encore enseignée à l’université, aussi je me sens complètement étranger à ce que vous avancez. Nous n’avions que le langage assembleur pour développer, des cartes perforées et des bandes magnétiques pour gérer la persistance des données, et à défaut d’être rigoristes, nous devions être rigoureux (je rends hommage à cette occasion au regretté Robert Mallet inventeur de CORIG, méthode qui me fut d’un grand secours pendant ces années durant lesquelles nous étions livrés à nous-mêmes).


    Citation Envoyé par Maljuna Kris Voir le message
    Je sais bien qu'il ne s'agit ici que d'un exercice proposé à un groupe d'étudiants, mais cet exercice a pour objet (ai-je bien retenu la leçon sémantique ?) de les former, pas de les formater.
    Que vient faire cette histoire de formatage ? Jérémy a droit à un exercice qui change des sempiternelles réservations de chambres d’hôtel. Il s’agit pour lui d’appréhender l’art difficile de la modélisation et il serait malvenu de mettre en cause l’auteur d’un exercice dont l’objet n’est pas l’apprentissage de l’apiculture. Tenez plutôt compte de la remarque de bon sens faite par JPhi33.

    Ne perdez pas de vue que lorsque nous intervenons sur ce forum, notre souci premier est d’aider — de façon purement bénévole — ceux qui cherchent à progresser ou ont des difficultés avec la méthode, quitte seulement ensuite à marquer tel ou tel point de désaccord. Au fait, quelles solutions avez-vous proposées à Jérémy dans toute cette affaire ? A défaut, il est encore temps.


    Citation Envoyé par Maljuna Kris Voir le message
    D'autant que je connais, sans la moindre connotation péjorative, de nombreux décideurs sans culture systémique notamment quelques 'happy-culteurs", mais qui restent des donneurs d'ordres, ceux qui payent la prestation, et qui, au moment de valider une modélisation de leur miellerie, n'entendrons pas payer du "jus de cervelle", mais quelque chose dont ils auront compris que cela va leur permettre de répondre aux critères de traçabilité exigés par leur client de la grande distribution.
    Ne jamais perdre de vue que l'on modélise un domaine qui a une existence réelle, concrète et des acteurs qui eux, ont des objectifs.
    Je le répète, Jérémy apprend à modéliser et votre éclairage technique l’intéresserait plus que votre opinion sur le comportement des autres. Plus tard, il aura le loisir de voir comment cela se passe réellement dans le monde de la banque, de l’assurance, de l’industrie, de la grande distribution, de la retraite, des services, etc. Pour avoir bourlingué pendant plus de 40 ans dans ces univers, et en engageant ma société en termes de résultats (attention aux pénalités financières...), je suis bien placé pour le dire, mais je ne pense pas que Jérémy soit pour le moment intéressé par tout cela, à moins qu’il ait envie d’en savoir plus sur le quotidien du concepteur dans l’entreprise...



    Citation Envoyé par CinePhil Voir le message
    On part à chaque fois d'une unité vers un ensemble (ou vers une unité s'il y a une cardinalité 1,1)
    Qu’entendez-vous par unité ? Un ensemble ? Un élément d’un ensemble ? Autre chose ?


    Citation Envoyé par CinePhil Voir le message
    Sauf que par la suite, cette entité se transformera en une table, laquelle est bel et bien un ensemble de choses ou de trucs et il me semble plus logique d'écrire son nom au pluriel.
    Un peu plus haut, j’ai cité Codd et Date et évoqué leur façon de nommer les relations (et les tables). Seraient-ils donc à côté de la plaque ?

    Une table n’est pas qu’un ensemble de choses. Par conformité à la théorie relationnelle, elle doit toujours elle-même être un ensemble (SQL permet, hélas ! qu’elle ne soit qu’un sac (bag), c'est-à-dire qu’elle contienne des lignes en double, mais bon). Et je ne vois pas pour quelle raison le nom d’un ensemble serait à mettre au pluriel, par exemple parce qu’il comporte plus d’un élément. On parle de l’ensemble N des entiers naturels, de l’ensemble des ensembles qui ne se contiennent pas eux-mêmes, mais chaque ensemble ou sous-ensemble est unique, singulier, quel que soit son cardinal. A ensemble unique, nom unique. L’Homme est peut-être un ensemble de choses et de trucs (une tête, des bras, des jambes, etc.) mais ça n’est pas pour autant que je parlerai systématiquement des Hommes. Souvenez-vous du dessin animé de votre jeunesse « Il était une fois... l’Homme ». Titre singulier, non ?

    Veuillez m'excuser d’avoir été un peu long et parfois polémique. J'aurais préféré répondre à de nouvelles questions qu'aurait pu poser Jérémy.
    (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. #14
    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
    Citation Envoyé par CinePhil
    On part à chaque fois d'une unité vers un ensemble (ou vers une unité s'il y a une cardinalité 1,1)
    Qu’entendez-vous par unité ? Un ensemble ? Un élément d’un ensemble ? Autre chose ?
    La phrase extraite était précédée d'un exemple qui donne la réponse à cette question (je surligne dans la reprise ci-dessous) :
    Citation Envoyé par CinePhil
    D'un côté, le MCD est issu de règles de gestion de la forme :
    "1 chose peut dépendre de plusieurs trucs et 1 truc peut rendre dépendant plusieurs choses."

    On part à chaque fois d'une unité vers un ensemble (ou vers une unité s'il y a une cardinalité 1,1).
    Citation Envoyé par fsmrel
    Un peu plus haut, j’ai cité Codd et Date et évoqué leur façon de nommer les relations (et les tables). Seraient-ils donc à côté de la plaque ?
    Je n'irais pas jusque là.

    Citation Envoyé par fsmrel
    Une table n’est pas qu’un ensemble de choses.
    Là encore, il faut relier 'ensemble de choses' à l'exemple cité plus haut.

    Citation Envoyé par fsmrel
    On parle de l’ensemble N des entiers naturels
    Tiens ! Voilà un pluriel !

    Je me souviens qu'en 2003, lors de mes premiers cours CNAM sur les bases de données, j'étais quelque peu perturbé par le fait que l'entité soit au singulier, tout comme ses instances. Deux concepts différents portaient le même nom ou presque (entité Personne, instances Personne1, Personne2...).

    Étant de nature plutôt pragmatique, je dirais que c'est à chacun de faire comme bon lui semble (au plus pratique et/ou au plus clair pour sa compréhension) tant qu'une hiérarchie ou un client ou tout autre entité ayant autorité n'impose pas autre chose.

    Je comprends bien tous vos arguments (et j'ai évolué depuis 2003 ! ) mais il me semble toujours plus clair de nommer les 'ensembles de choses', c'est à dire les entités (dans les MCD qui généreront par la suite des tables) ou les tables par des noms au pluriel.

    Pour en finir sur ce sujet, je serais quand même curieux de connaître la justification de cette manière bizarre de nommer les entités :
    Citation Envoyé par fsmrel
    Ainsi, il n’y aura peut-être pas d’entités-types nommées ENTREPRISE ou DOSSIER_SINISTRE (voire ENTREPRISES ou DOSSIERS_SINISTRE), mais plus prosaïquement PEE0016 et GA2002. D’expérience, on s’y fait très vite.
    Parce que là pour ce qui est de la sémantique, il me semble qu'on en est quand même très loin !
    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. #15
    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
    Bonsoir,


    Citation Envoyé par CinePhil Voir le message
    Citation Envoyé par fsmrel
    Citation Envoyé par CinePhil
    On part à chaque fois d'une unité vers un ensemble (ou vers une unité s'il y a une cardinalité 1,1)
    Qu’entendez-vous par unité ? Un ensemble ? Un élément d’un ensemble ? Autre chose ?
    La phrase extraite était précédée d'un exemple qui donne la réponse à cette question (je surligne dans la reprise ci-dessous) :
    D'un côté, le MCD est issu de règles de gestion de la forme :
    "1 chose peut dépendre de plusieurs trucs et 1 truc peut rendre dépendant plusieurs choses."
    Soit. Si je comprends bien, si une chose peut dépendre de plusieurs trucs, alors il y a une relation possible entre une chose et plusieurs trucs :



    De la même façon, si un truc peut rendre dépendant plusieurs choses, alors il y a une relation possible entre un truc et plusieurs choses :




    Et le diagramme merisien pour exprimer tout cela est donc le suivant (relation de plusieurs à plusieurs) :




    Citation Envoyé par CinePhil Voir le message
    On part à chaque fois d'une unité vers un ensemble (ou vers une unité s'il y a une cardinalité 1,1).
    J’en déduis qu’en toute rigueur, par unité il faut entendre singleton, c'est-à-dire un ensemble E comportant un seul élément a, à savoir : E = {a}. Ou encore, puisque vous parlez de cardinalité 1,1 (ce qui, dans la citation précédente, conduit à remplacer « peut » par « doit) »), déduire que tout élément du premier ensemble est en relation avec exactement un élément du second, autrement dit qu’il y a une application du premier dans le second.
    De la même façon, toujours par référence à la citation précédente, je suppose que par Dépendre vous voulez signifier plus généralement Être en relation.



    Citation Envoyé par CinePhil Voir le message
    Il serait donc logique d'écrire les noms des entités au singulier comme le préconise fsmrel.
    J’avoue ne pas voir la relation entre les prémisses et la conclusion.



    Citation Envoyé par CinePhil Voir le message
    Citation Envoyé par fsmrel
    Une table n’est pas qu’un ensemble de choses.
    Là encore, il faut relier 'ensemble de choses' à l'exemple cité plus haut.
    Une table ne se définit pas comme un ensemble de choses (sinon tout serait table).

    Je rappelle la toute première définition donnée par Ted Codd en 1969, dans son article Derivability, Redundancy, and Consistency of Relations Stored in Large Data Banks et repris dans son célèbre article de 1970 A Relational Model of Data for Large Shared Data Banks. Toute choses égales par ailleurs, dans cette définition, vous pouvez lire table au lieu de relation :
    The term relation is used here in its accepted mathematical sense. Given sets S1, S2, ..., Sn (not necessarily distinct), R is a relation on these n sets if it is a set of n-tuples each of which has its first element from S1, second element from S2, and so on. We shall refer to Sj as the jth domain of R. More concisely, R is a subset of the Cartesian product S1 X S2 X Sn.
    Pour information, je reprends en gros, mais sans la déformer, la définition de Chris Date (toujours en remplaçant relation par table, attribut par colonne, tuple par ligne, etc.)

    Une table T est composée :
    1) d’un en-tête (header, ou schéma de table, ou intension), qui est lui-même un ensemble (au sens de la théorie des ensembles) de couples appelés colonnes, chaque colonne Ci étant de la forme <NCi,NTi>, où NCi représente le nom de la colonne, et NTi celui d’un nom de type (Integer, Char, Ligne, Polygone, etc.) Le nombre de colonnes de l’en-tête est appelé degré de la table T.

    2) D’un corps (body), ensemble dont les éléments sont appelés lignes, telle que chaque ligne Lj est un ensemble de triplets de la forme <NCi,NTi,vi>, dont les éléments NCi et NTi correspondent au couple formant la colonne Ci dans l’en-tête de T, et où vi est une valeur appartenant au type NTi. Le nombre de lignes de T en est le cardinal.

    Etc.


    Citation Envoyé par CinePhil Voir le message
    Citation Envoyé par fsmrel
    On parle de l’ensemble N des entiers naturels
    Tiens ! Voilà un pluriel !
    Certes, mais qui s’applique aux éléments de l’ensemble N et non pas à l’ensemble lui-même, sinon on parlerait des ensembles des entiers naturels (ce qui serait pour le moins surprenant).



    Citation Envoyé par CinePhil Voir le message
    Je me souviens qu'en 2003, lors de mes premiers cours CNAM sur les bases de données, j'étais quelque peu perturbé par le fait que l'entité soit au singulier, tout comme ses instances. Deux concepts différents portaient le même nom ou presque (entité Personne, instances Personne1, Personne2...).
    Si Personne1 et Personne2 sont deux instances de Personne, alors considérez Personne comme le prototype de toute personne, son abstraction, la personne type, que sais-je. Relisez ce que j’ai écrit à ce sujet (paragraphe Un détour du côté des prédicats).


    Citation Envoyé par CinePhil Voir le message
    [...]Il me semble toujours plus clair de nommer les 'ensembles de choses', c'est à dire les entités (dans les MCD qui généreront par la suite des tables) ou les tables par des noms au pluriel.
    Libre à vous bien sûr de ne pas procéder comme les auteurs que j’ai cités (et auxquels on peut ajouter Y. Tabourier), mais quelque chose m’échappe dans le fait que vous ayez du mal à utiliser le singulier.

    Évidemment, entre dire que Les futurs ingénieurs CNAM sont des bûcheurs ou que Le futur ingénieur CNAM est un bûcheur, il n’y a pas de différence évidente. Mais quoi qu’il en soit, pour reprendre l’exemple de la table Membre, il me paraît opportun de considérer cette table comme ayant pour prédicat :
    Le membre MbrId a pour pseudo Pseudo, s’est inscrit le DateInscr et le lieu où on peut le situer est Localisation.
    Lequel prédicat est instancié par les propositions qui l’accompagnent :
    Le membre 314159 a pour pseudo CinePhil, il s’est inscrit le 10 août 2006 et le lieu où on peut le situer est Toulouse.
    Le membre 314182 a pour pseudo fsmrel, il s’est inscrit le 8 septembre 2006 et le lieu où on peut le situer est Relationland.
    ...


    Citation Envoyé par CinePhil Voir le message
    [...]je serais quand même curieux de connaître la justification de cette manière bizarre de nommer les entités :
    Citation Envoyé par fsmrel
    Ainsi, il n’y aura peut-être pas d’entités-types nommées ENTREPRISE ou DOSSIER_SINISTRE (voire ENTREPRISES ou DOSSIERS_SINISTRE), mais plus prosaïquement PEE0016 et GA2002. D’expérience, on s’y fait très vite.
    Parce que là pour ce qui est de la sémantique, il me semble qu'on en est quand même très loin !
    Je récapépète...
    La sémantique est une chose, les impératifs de production en sont une autre. La première est obligée de s’effacer devant la seconde.
    Je vous ai déjà expliqué le pourquoi du comment. Je recommence : prenons l’exemple d’une production informatique qui doit gérer des milliers, voire des dizaines de milliers d’objets, dont les tables, par centaines, sinon par milliers. D’une part, du point de vue de la production, le nom d’une table est, d’une façon ou d’une autre, intégré dans le nom du fichier (ou des fichiers) qui l’héberge ; d’autre part, l’O/S fournit son lot de contraintes quant au nommage des fichiers. Par exemple, avec z/OS (l’O/S des mainframes IBM, et qui date du début des années soixante), ce nom est segmenté en éléments de 8 caractères séparés par des points. Par commodité, la production pourra en conséquence exiger qu’un nom d’objet soit limité à 8 caractères. Parmi les objets il y a non seulement les tables, mais aussi les index qui s’y raccrochent et dont le nom est une extension de celui des tables. Bref, la production pourra imposer que le nom d’une table soit limité à 7 caractères, le 8e étant réservé pour ses index. En outre, intervient l’urbanisation du système d’information et la production devra prendre en compte le découpage en référentiels imposé cette fois-ci par la maîtrise d’oeuvre : référentiel des personnes, référentiel des contrats, référentiel des produits, référentiel des organismes partenaires, référentiel des habilitations, de l’éditique, etc. De même, un référentiel est découpé en sous-référentiels : le référentiel des personnes fait l’objet de sous-référentiels des entreprises, des individus, des rôles des acteurs, etc. Là encore, la production décidera de réorganiser les tables de tel sous-référentiel selon telle périodicité et non pas tous les référentiels et sous-référentiels en même temps. En conséquence, chaque table, (donc chaque fichier) se voit contrainte à être porteuse du nom abrégé de son référentiel (« PE » pour celui des personnes), avec extension aux sous-référentiels (« PEE » pour celui des entreprises, « PER » pour celui des rôles, « PEI » pour celui des individus, etc.). Les chefs de projets auront la liberté de faire ce qu’ils veulent des 4 derniers caractères restants, ce qui d’un point de vue sémantique est évidemment un peu court... Ainsi, l’entité-type ENTREPRISE deviendra PEEENTR ou PEE0016, ou ce que vous voulez d’autre, à condition de respecter la structure PEExyzt. Toutes les productions informatiques ne s’organisent pas nécessairement à l’image de ce que je viens de décrire, mais en tout cas, celle que j’ai prise en exemple tourne comme une horloge.
    (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. bouton pour permettre le téléchargement d'une photo
    Par princesse95 dans le forum Langage
    Réponses: 7
    Dernier message: 27/02/2009, 16h32
  2. Comment permettre la saisie dans une liste de sélection
    Par idamarco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/02/2009, 00h51
  3. Réponses: 4
    Dernier message: 07/07/2008, 16h43
  4. Réponses: 4
    Dernier message: 19/06/2006, 14h52
  5. Permettre la modofication d'une horloge
    Par cari dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/01/2006, 17h01

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