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 :

Une base pour ma chérie


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Une base pour ma chérie
    Bonjour à vous tous,
    Il y a quelques années, ma chérie a ouvert un cabinet en libéral... Elle a reçu ses patients et je lui ai bricolé un classeur Calc pour qu'elle puisse y tenir sa compta et suivre ses rendez-vous. Puis elle a commencé à donner des formations et j'ai remis les mains dans le cambouis. Bon, ça marche mais ça fait un peu usine à gaz et puis maintenant il y a la certification qui devient obligatoire... alors je me suis dit ben tiens, je vais faire une base de données... Et voilà que je me lance direct dans Base, bon, pas longtemps, j’apprends un peu de mes erreurs Et je suis tombé sur ce forum que je lis depuis une semaine. Ça fait plaisir de trouver des personnes d'une telle culture et qui cherche à nous rendre un peu plus lucide. Je dis un peu plus parce que je suis encore très loin de comprendre les échanges de haut vol qui se déroule ici. Je ne suis qu'un modeste bricoleur mais qui a envie d'apprendre et de bien faire.
    Je vous propose ici une tentative de modélisation logique d'un cabinet libéral qui reçoit des patients (ce n'est pas nécessairement eux qui règlent la consultation) et qui propose des formations (pour l'instant uniquement à des organisations) soit au titre de sa profession, soit au titre d'un organisme de formation.



    La partie compta est quasiment pas modélisée, j'aimerai que ce soit le plus automatique possible Mais je n'ai pas encore trouvé.
    Je bosse sur ce projet avec MySQL Workbench, étant sous Linux, je regrette de ne pas pouvoir utiliser Looping (En plus c'est un voisin qui le développe).
    Je joins le SQL que je viens de générer pour ceux que cela intéresse :



    J'attends vos critiques,
    Merci de votre attention.
    Christophe

  2. #2
    Expert éminent sénior
    Bonjour,

    Puisque vous avez consulté d'autres sujets dans cette section, vous avez certainement vu que ceux qui ont trouvé réponse sont ceux qui ont fourni les règles de gestion.
    Les règles de gestion sont une étape incontournable, rédigez-les et numérotez-les.
    Expliquez aussi les termes utilisés et éliminez les synonymes qui sont source d'erreurs : 1 concept ==> 1 et 1 seul terme
    Dans un premier temps, concentrez-vous sur le cœur de métier : les patients et les consultations.

    Si vous ne pouvez pas installer looping, essayez d'autres logiciels de modélisation gratuits qui vous permettront de commencer par le MCD.
    Commencer directement par le MLD, ce qu'impose MySQL Workbench, est souvent source d'erreurs, surtout si le modèle est complexe.

    Attention : vous trouverez sans doute ici de bons conseils pour ce qui concerne la modélisation, mais peut-être pas sur l'aspect réglementaire lié aux professions médicales. Renseignez-vous bien sur ce sujet

  3. #3
    Futur Membre du Club
    Merci pour vos conseils.
    Le fait de passer directement au MLD a deux raisons. La première c'est mon travers bricoleur et de faire sans cesse des allers retours entre l'idée et sa concrétisation. La seconde c'est que je n'ai pas trouvé de logiciel libre fonctionnant sous Linux pour m'aider dans cette tâche de conceptualisation. J'ai essayé en UML avec Papyrus et les diagrammes de classes. Après, il aurait fallu passer d'UML à MLD, ça ne m'a pas rassuré. Je suis preneur d'un logiciel MCD libre sous Linux.
    Le contexte :
    Il s'agit de gérer un cabinet de psychologue qui est aussi reconnu comme organisme de formation.
    Au sujet du vocabulaire et des règles de gestion :
    1) une Personne est une entité avec laquelle le cabinet entretient ou souhaite entretenir une relation.
    2) Cette Personne possède une Qualité (prospect, client, patient, OPCO...) à un moment donné. Cette Qualité pouvant évoluer dans le temps.
    3) Cette Personne est une Personne Physique OU une Personne Morale.
    4) Cette Personne possède 0 ou plusieurs adresses et devient une Personne Localisée.
    Cette Personne Localisée peut déposer une ou plusieurs demandes.
    5) La Demande est l'acte qu'adresse une Personne Localisée au cabinet ou à l'organisme de formation (qui sont juridiquement identique)
    5) Cette Demande possède un Statut. Pour l'instant j'en vois deux, Devis ou Commande.
    6) Cette Demande comprend une ou plusieurs Prestations.
    7) Chaque Prestation est fournie par un seul Prestataire, en tout cas pour l'instant.
    8) Le Prestataire est une Personne qui possède une casquette (psychologue clinicienne, psychologue formatrice, Organisme de Formation...)
    9) Le taux de TVA est lié au Prestataire, bon aussi à la Prestation mais en jouant sur le Prestataire on peut éliminer la Prestation. Un OF ne fera jamais de consultation par exemple.
    10) Dans le cas où la Prestation est une session de formation, le client (Personne ayant la Qualité de client) inscrit d'autres Personnes, représentées par l'entité Session_Insciption et dont il faut suivre la présence.
    La partie Comptabilité n'est pas modélisée.
    Je viens de voir une erreur dans le schéma, c'est la Personne Localisée qui dépose une Demande, pas juste la Personne. De même pour la facturation. Sinon, il me semble que je perde l'information.

  4. #4
    Modérateur

    je n'ai pas trouvé de logiciel libre fonctionnant sous Linux
    J'arrive à faire fonctionner Looping avec Wine 32 bits.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Futur Membre du Club
    J'ai Wine à la maison mais en 64 me semble-t-il. Je vais essayer ce soir.

  6. #6
    Expert éminent sénior
    Bonjour Funngo,


    Vous avez suivi le conseil d’escartefigue et donc fourni des règles de gestion de données, c’est une très bonne chose, ainsi on y voit plus clair.

    Afin qu’on puisse y faire référence, il faudrait numéroter ces règles. Par exemple :

    RG01 - A une date donnée, une personne a au moins une et une seule qualité.
    RG02 - Une qualité peut concerner plusieurs personnes.

    Vous noterez que de façon plus ou moins informelle, on a fait intervenir la notion de cardinalité minimale et celle de cardinalité maximale (si vous avez utilisé UML, on parle alors de pluralité, peu importe) :

    — plus formellement « au moins et plus » se traduit par « 1,1 »

    — « peut concerner plusieurs » se traduit par « 0,N ».

    Vous noterez que RG01 et RG02 se complètent, la présence des deux règles est indispensable dans la modélisation sinon on reste dans le brouillard.

    En ce qui concerne le diagramme, celui-ci doit être cohérent, à savoir conforme aux règles.

    Vous avez représenté les choses ainsi :

    [PERSONNE]-||--------||-[QUALITE_PERSONNE]


    Où les doubles barres « ||» signifient qu’une personne a au moins et au plus une qualité (correct), mais qu’une qualité concerne au moins et au plus une personne, ce qui est pour le moins réducteur

    Concernant les cardinalités au niveau conceptuel, je vous engage vivement à étudier le chapitre 6 de l’ouvrage Modélisation Conceptuelle de Données de Patrick Bergougnoux (le papa de Looping), où sont expliquées les choses de façon simple, pragmatique et éclairante.

    Concernant MySQL Workbench, je vous engage à (re)voir les paragraphes 4 à 6 de l’article Modéliser les données avec MySQL Workbench.

    En résumé : pour le moment, formaliser les règles de gestion des données et rendre le digramme Workbench cohérent avec ces règles (à moins que vous n'arriviez à basculer à Looping).

    N.B. La règle RG01 est légèrement plus compliquée à modéliser qu’elle n’en a l’air, car le temps intervient. Dans l’ouvrage de Paprick, ceci est traité au chapitre 14, paragraphe « Les contraintes d’intégrité fonctionnelle ». Au besoin, on pourra voir comment on résout les problèmes temporels avec MySQL Workbench (historiques...)

    Je viens de voir que CinePhil arrive à faire fonctionner Looping avec Wine 32 bits, bonne nouvelle.

     
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

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

  7. #7
    Futur Membre du Club
    Concernant les cardinalités, je ne m'en suis pas encore occupé. Merci pour le lien que je vais potasser.
    Mettre du formalisme, j'en comprends l'intérêt. C'est un peu difficile pour moi, toujours ce côté bricolo... Je vais essayer de progresser en suivant vos conseils. En plus, comme je suis fainéant, j'aurais pas à me creuser la tête quand je devrais revenir sur la base en me demandant ce que j'avais voulu dire par là.
    Je vais essayer Looping ce soir. Il me semble avoir lu que l'on ne pouvait pas importer du SQL. Vingt fois sur le métier remettez votre ouvrage... Qu'il disait.
    En tout cas merci de votre attention.

  8. #8
    Membre confirmé
    Bonsoir,
    Juste un petit mot pour confirmer le fonctionnement de Looping avec Wine 32 bits (pas 64 !), que ce soit sous Linux ou sous macOS.
    Pour l'import SQL, effectivement il n'est pas présent dans Looping : en effet, s'il est plutôt aisé de générer du SQL à partir d'un MCD, l'inverse n'est pas toujours évident (et parfois impossible !)
    Cependant, et je pense que mes collègues ne me contrediront pas, la reprise sous Looping d'un modèle comme le vôtre ne devrait pas prendre plus d'une trentaine de minutes.
    Bonne continuation !
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  9. #9
    Futur Membre du Club
    Effectivement, Looping fonctionne. Quand j'ai installé Wine, je pense que j'ai dû cocher enable 32-bit.
    Une demi-heure, vous me surestimez. Il faut que j'intègre le langage... Moi pas parler Merise encore, je babille à peine.
    Voilà mon premier MCD qui doit être plein d'erreurs.



    Reste encore les règles et j'ai vu qu'il y avait aussi des histoires de CIF. Enfin ce soir j'ai largement explosé ma demi-heure, mais j'y ai pris du plaisir.

  10. #10
    Membre confirmé
    Sans rentrer dans le détail de votre système d'information (je n'ai pas regardé de près vos règles des gestion), voici quelques éléments relatifs à la construction de votre modèle :
    • Une association concerne le plus souvent 2 classes d'entités (parfois 3, mais très rarement plus) : votre association "Habite" doit donc être associée à une classe d'entité "Adresse" qui doit intégrer le CP et la commune. Si vous tenez absolument à créer une classe d'entités "Commune", elle doit être associée à "Adresse" (même raisonnement pour CP).
    • L'identifiant d'une association multiple de part et d'autre est la concaténation des clés étrangères issues des classes d'entités associées : inutile donc de définir un "Id".
    • Une tri-patte (association de 3 classes d'entités) contenant une patte simple 1,1 (dans votre cas "Est" et "Beneficie") doit être décomposée en 2 associations 1,1 / 1,n.
    • Dans le cas de votre association "Est", si vous voulez garder l'historique des qualités des personnes, la cardinalité 1,1 est plutôt 1,n : la tri-patte peut alors se justifier (mais une CIF s'imposera !) ; idem pour "Beneficie".
    • Un identifiant devient clé primaire dans le MLD et la BDD : les clés primaires devenant clés étrangères dans les tables associées, il convient de leur donner un nom significatif pour n'importe quelle classe du modèle (Id_Personne, Id_Qualité, ...).


    Votre premier modèle est tout de même une bonne base de départ, et il faut persévérer avant de passer à l'étape MLD et schéma relationnel de la BDD.
    Pour cela, il faut approfondir le MCD pour vérifier qu'il corresponde bien à votre système d'information, mais fsmrel et escartefigue ont déjà commencé le boulot et vous pouvez leur faire confiance pour ne rien lâcher !
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  11. #11
    Futur Membre du Club
    Merci de votre retour,
    Les règles que j'imagine pour une personne :
    RG01 : Une PERSONNE est une et une seule PERSONNE_PHYSIQUE ou une et une seule PERSONNE_MORALE (XT => Trigger)
    RG02 : une PERSONNE_PHYSIQUE est une et une seule PERSONNE, idem pour PERSONNE_MORALE
    RG03 : une PERSONNE_PHYSIQUE peut être Salariée d'une ou plusieurs PERSONNE_MORALE
    RG04 : une PERSONNE_MORALE doit Salarier au moins une PERSONNE_PHYSIQUE

    Pour cette relation Habite, j'ai essayé de m'inspirer du modèle Course Hippique lu au cours de la discussion au sujet du choix d'un logiciel de conception des schémas. La discussion étant de très haut vol, j'ai dû louper pas mal de choses
    RG05 : une PERSONNE peut Habiter quelque part => PERSONNE---(0,n)---Habiter
    RG06 : Si une PERSONNE Habite quelque part alors nous devons connaître au minimum sa COMMUNE et son CP
    RG07 : un CP correspond à une ou plusieurs COMMUNE
    RG08 : une COMMUNE a un ou plusieurs CP

    Concernant la relation Est, il s'agit de qualifier une PERSONNE et de garder une trace des différentes QUALITE que cette PERSONNE a pu avoir
    RG09 : une PERSONNE a une QUALITE et une seule
    RG10 : une QUALITE concerne aucune ou plusieurs PERSONNE
    RG11 : la QUALITE d'une PERSONNE peut évoluer dans le temps (un patient peut se sentir guéri), nous devons en garder une trace

    Concernant la relation Beneficie, il s'agit de qualifier la CONDITION_TARIFAIRE d'une PERSONNE et de garder une trace des différentes CONDITION_TARIFAIRE que cette PERSONNE a pu avoir
    RG09 : une PERSONNE a une CONDITION_TARIFAIRE et une seule
    RG10 : une CONDITION_TARIFAIRE concerne aucune ou plusieurs PERSONNE
    RG11 : la CONDITION_TARIFAIRE d'une PERSONNE peut évoluer dans le temps (un patient peut se sentir guéri), nous devons en garder une trace

    Prochaine étape... Discussion de ce premier jet, merci

    PS : Concernant le nommage des identifiants, en utilisant MySQL Workbench, il me préfixait par défaut les clés étrangères avec le nom de la table et comme dans un premier temps, j'avais rajouté le nom de la table à l'identifiant, ça me faisait un nom de clé à rallonge et redondant. D'où la simplification de mes noms d'identifiant. On doit pouvoir supprimer les comportements par défaut je suppose et cela doit être préférable notamment si l'on change de logiciel et qu'il n'a pas le même comportement par défaut.

  12. #12
    Expert éminent sénior
    Bonjour,

    Pour les adresses, les règles sont :
    RGww : une adresse est située dans une seule commune
    RGxx : dans une commune peuvent être situées plusieurs adresses
    RGyy : une commune possède un et un seul code postal
    RGzz : un code postal est possédé par au moins une commune

    Ce qui donne le MCD :
    [ADRESSE] 1,1 --- (situer) --- 0,n [COMMUNE] 1,1 --- (posseder) --- 1,n [CODE_POSTAL]

    Sachant que la correspondance commune <-> code postal peut être obtenue gratuitement ici
    https://www.data.gouv.fr/fr/datasets...des-postaux/#_

    Pour les personnes morales, il est fort possible que vous ayez besoin de gérer différents types d'adresse : de correspondance, de facturation... à vérifier

  13. #13
    Modérateur

    RGyy : une commune possède un et un seul code postal
    Faux !

    Les grandes villes ont plusieurs codes postaux. Sans compter même les codes spéciaux pour les CEDEX.
    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 !

  14. #14
    Expert éminent sénior
    Non : les grandes villes sont, pour la poste, découpées en arrondissements, chaque arrondissement ayant son code postal

    D'où une ville ==> 1 et un seul code postal.
    Pour la poste, Paris Xe est différent de Paris XIIe
    Cf. le lien que j'ai publié dans ma réponse précédente

    Ne pas confondre le code postal avec le CEDEX qui est facultatif et qui peut prendre plusieurs valeurs dans une même ville.

    Bien sûr, s'il y a des personnes qui résident à l'étranger, la norme postale ne s'applique pas.

    EDIT : ah ben si finalement , Aix en Provence par exemple, pour la Poste c'est plusieurs codes postaux (13080, 13090, 13100), j'avais vérifié Paris et Marseille et extrapolé à tort pour les autres grandes villes.

    Ce qui donne
    [ADRESSE] 1,1 --- (situer) --- 0,n [COMMUNE] 1,n --- (posseder) --- 1,n [CODE_POSTAL]
    ..........................................................&#9474;
    ..........................................................&#9492;------ 0,n --- (avoir) --- 1,1 [CEDEX]

    Merci Philippe pour cette précision

  15. #15
    Expert éminent sénior
    @Funngo : je m'interroge sur la cardinalité maxi 1 de [PERSONNE] vers [QUALITE_PERSONNE], quelles sont les valeurs possibles des occurrences de [QUALITE_PERSONNE] ?
    Un peu plus haut, vous dites qu'une personne peut changer de qualité pour passer à "guéri" mais n'y a-t-il pas des personnes inscrites pour plusieurs affections, auquel cas elles peuvent être guéries de l'une et pas des autres. À préciser.

  16. #16
    Futur Membre du Club
    J'ai lu avec attention la discussion sur l'adressage. Il y a quelque chose qui me chiffonne. Les solutions que vous proposez sont logiques mais elles dépendent, me semble-t-il du contexte. On n'adresse pas de la même façon en Europe ou à Haïti. La piste que je cherchais à explorer, et je ne sais pas si c'est jouable, c'est de conceptualiser la relation Habiter. C'est quelque chose qui me plairait vraiment.
    @escartefigue à propos de la cardinalité PERSONNE est QUALITE, j'y pensais ce matin sur mon vélo en allant bosser. Les qualités possibles, en tout cas celles auxquelles j'ai pensé sont : client (celui qui bénéficie de la prestation (en cas de consultation) ou qui la demande(en cas de formation)), débiteur (celui qui paie), client-débiteur(profite et paie la prestation), prospect, lead, apprenant (inscrit sur une formation sans en être le demandeur donc sans en être le client). En réfléchissant à cette liste je me suis dit qu'un apprenant pouvait être client ou débiteur d'une consultation. Je sens que ça va compliquer le schéma ! En ayant ces deux qualités, il peut bénéficier de deux CONDITION_TARIFAIRE différentes un tarif classique en tant qu'apprenant et un tarif social pour les consultations parce que ses conditions de vie ne lui permettent pas de financer une thérapie au tarif habituel. Ma chérie peut faire des tarifs adaptés aux possibilités des patients.
    Bon je crois que l'on pourrait traiter une question après l'autre. Celle qui me tarabuste serait de savoir si l'on peut modéliser le concept habiter.

  17. #17
    Modérateur

    Concept "habiter"... ou "résider" car on ne dit pas d'une personne morale qu'elle habite à une adresse.

    Règles de gestion :
    R1 : Une ville est située dans un pays et un pays peut situer plusieurs villes.
    R2 : Une ville française est une ville et une ville peut être une ville française.
    R3 : Un code postal couvre au moins une ville française et une ville française est couverte par au moins un code postal. <== Ceci si vous souhaitez enregistrer le référentiel des codes postaux
    R4 : Une adresse est située dans une ville et une ville peut situer plusieurs adresses.
    R5 : Une personne réside à au moins une adresse et une adresse est la résidence d'au moins une personne.

    Je vous laisse dessiner ce morceau de MCD et je reviens plus tard...
    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 !

  18. #18
    Futur Membre du Club
    Il me semble que je confonde deux notions l'association et l'héritage, notamment l'héritage en totalité. Je m'en suis aperçu en regardant le MLD généré, les données signifiantes se retrouvaient dans les tables associatives du MLD. Voilà le nouveau schéma



    Cela implique la réécriture des règles de gestion :
    RG01 : Une PERSONNE est une et une seule PERSONNE_PHYSIQUE ou une et une seule PERSONNE_MORALE (XT => Trigger)
    RG02 : une PERSONNE_PHYSIQUE est une et une seule PERSONNE, idem pour PERSONNE_MORALE
    RG03 : une PERSONNE_PHYSIQUE peut être Salariée d'une ou plusieurs PERSONNE_MORALE
    RG04 : une PERSONNE_MORALE doit Salarier au moins une PERSONNE_PHYSIQUE
    RG05 : Une PERSONNE_QUALIFIEE est une et une seule PERSONNE
    RG06 : Une PERSONNE est au moins une PERSONNE_QUALIFIEE

    RG07 : une PERSONNE_QUALIFIEE doit posséder une et une seule ADRESSE (définir une ADRESSE par défaut parce qu’en réalité, la personne n'est pas obligée de fournir une adresse)
    RG08 : une ADRESSE peut concerner plusieurs PERSONNE_QUALIFIEE
    RG09 : une ADRESSE doit être située sur une COMMUNE
    RG10 : une COMMUNE peut comporter plusieurs ADRESSE
    RG11 : une COMMUNE possède un CP
    RG12 : un CP concerne une ou plusieurs COMMUNE
    RG13 : une ADRESSE peut avoir un CEDEX
    RG14 : un CEDEX concerne une ou plusieurs ADRESSE, à Toulouse par exemple, le CEDEX 9 concerne au moins la CPAM (CPAM. 31093 Toulouse cedex 9) et l'Hôpital Paule de Viguier (330, avenue de Grande-Bretagne – TSA 70034 – 31059 Toulouse cedex 9)

    RG15 : une PERSONNE_QUALIFIEE doit posséder une et une seule QUALITE
    RG16 : une QUALITE peut concerner plusieurs PERSONNE_QUALIFIEE
    RG17 : Nous devons pouvoir conserver l'historique des QUALITE d'une PERSONNE

    RG18 : une PERSONNE_QUALIFIEE doit posséder une et une seule CONDITION_TARIFAIRE
    RG19 : une CONDITION_TARIFAIRE peut concerner plusieurs PERSONNE_QUALIFIEE
    RG20 : Nous devons pouvoir conserver l'historique des CONDITION_TARIFAIRE d'une PERSONNE

  19. #19
    Modérateur

    1) Pourquoi avoir associé l'adresse à personne qualifiée ?
    Vous ne souhaitez enregistrer les adresses que des personnes qualifiées ?

    2) Vous devriez externaliser les fonctions des salariés pour éviter la saisie multiple de la même fonction :
    R1 : Un salarié occupe une seule fonction et une fonction peut être occupée par plusieurs salariés.
    ou bien
    R1 : Un salarié occupe au moins une fonction et une fonction peut être occupée par plusieurs salariés.

    3) Vous avez parlé dans un message précédent de l'étranger :
    On n'adresse pas de la même façon en Europe ou à Haïti.
    C'est pour ça que dans mon précédent message, j'ai donné les règles de gestion en imaginant la possibilité d'adresses à l'étranger ; la notion de code postal n'étant pas présente dans tous les pays.
    Si vous vous limitez à la France et si vous récupérez le référentiel des codes postaux (attention aux mises à jour !), alors il conviendrait de transformer l'association "Possede_CP" en table associative issue d'une notion que l'on pourrait appeler par exemple "secteur postal" :
    Ville_Francaise -1,n----couvrir----(1,1)- Secteur_Postal -(1,1)----comprendre----1,n- Code_Postal
    Adresse -1,1----situer-----------------------0,n-------|

    Pour bien modéliser les adresses, je vous renvoie à la norme d'adressage en France.

    4) Une personne peut avoir plusieurs numéros de téléphone et pas seulement deux. Et on peut typer les numéros de téléphones (fixe, mobile, pro... et pour les personnes morales accueil, direction, comptabilité...).
    Personne -0,n----avoir----1,1- Telephone -1,1----typer----0,n- Type_Telephone

    5) Idem pour les "mail" (e-mail in english, ou je préfère adrel en français )

    6)
    Il me semble que je confonde deux notions l'association et l'héritage
    Effectivement !
    Une personne qualifiée est une personne => héritage
    Une personne qualifiée est qualifiée par une qualite_personne et une qualite_personne peut qualifier plusieurs personnes. => association classique

    Idem pour la condition tarifaire.

    J'ai cependant un doute sur la pertinence de cet ensemble. Avec votre modèle, vous n'enregistrez que la qualification et la condition tarifaire en cours, vous n'avez pas l'historique. Est-ce volontaire ? A quoi servent alors les dates dans personne qualifiée ?
    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 !

  20. #20
    Futur Membre du Club
    La PERSONNE_QUALIFIEE me sert à identifier précisément qui va déposer une demande, parce qu'une personne peut avoir plusieurs casquettes (QUALITE : lead, prospect, client...). Cette entité agrège différentes données (ADRESSE, QUALITE, CONDITION_TARIFAIRE). N'est-ce pas ce que l'on appelle une vue. Est cohérent de la modéliser ? Y a-t-il d'autres moyens de modéliser cela ? Les dates me permettront, quand je me situe au niveau de l'entité PERSONNE d'en historiciser ses différentes qualifications. Je me fait peut-être des nœuds.
    En externalisant les téléphones, courriels et fonctions, j'obtiens le modèle suivant :