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 :

Quel logiciel télécharger pour réaliser un MCD


Sujet :

Schéma

  1. #81
    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
    Ave !

    Encore merci, Paprick, pour ta réactivité et ton investissement.


    Citation Envoyé par Paprick Voir le message
    L'argumentation de François étant (comme toujours) indémontable
    J’en suis navré ! Irrésistiblement, le principe de la non démontrabilité me fait penser à Kurt Gödel et « comme toujours » à Jacques Brel, un des héros de mes 20 ans...


    Citation Envoyé par Paprick Voir le message
    « PF_ / FK_ »
    Lire « PK_ / FK_ » ?


    Citation Envoyé par Paprick Voir le message
    Concernant les clés alternatives, Looping ne les génèrent pas sous forme de contraintes à part, mais directement en suivant la définition de la rubrique avec la propriété "UNIQUE" (donc pas de AK).
    "UNIQUE" étant synonyme de clé alternative, ça ne devrait pas être bien compliqué de remplacer :

    CREATE TABLE CLIENT
        ...
        , NumeroSiret   CHAR(14)      NOT NULL   UNIQUE
        ...
    
    Par :

    CREATE TABLE CLIENT
        ...
        , NumeroSiret   CHAR(14)      NOT NULL   
        ...
        , CONSTRAINT CLIENT_AK UNIQUE (NumeroSiret)
        ...
    
    Où "AK" peut être remplacé par "AK1", "AK2", etc. en cas de clés alternatives multiples pour la table donnée.


    Citation Envoyé par Paprick Voir le message
    Les clés alternatives composées ne peuvent donc se définir dans Looping qu'avec une règle et le code SQL qui va avec, comme François nous l'a déjà montré dans des posts précédents avec les courses hippiques.
    A la conjonction « donc » près, je conviens, sachant que je reprendrai volontiers quand tu auras pu souffler un peu la mise en oeuvre des
    clés candidates, à savoir Miss Clé primaire et ses dauphines...

    Nom : Miss_clé_primaire.png
Affichages : 1126
Taille : 148,7 Ko

    Bon courage !

     
    (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.

  2. #82
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonsoir,

    Citation Envoyé par fsmrel Voir le message
    J’en suis navré ! Irrésistiblement, le principe de la non démontrabilité me fait penser à Kurt Gödel et « comme toujours » à Jacques Brel, un des héros de mes 20 ans...
    J'ai écrit "indémontable" et non "indémontrable" !!! sans ce petit "r" qui sonnerait comme un manque de respect pour ton expertise !


    Citation Envoyé par fsmrel Voir le message
    Lire « PK_ / FK_ » ?
    Bien vu ! En fait, c'était juste pour voir si tu suivais bien ...


    Citation Envoyé par fsmrel Voir le message
    "UNIQUE" étant synonyme de clé alternative, ça ne devrait pas être bien compliqué de remplacer :
    En effet, au même titre que le NOT NULL qui pourrait aussi faire l'objet d'une contrainte nommée.
    Mais ce ne serait qu'une solution à une toute partie de la problématique des clés alternative dont l'intérêt réside souvent dans la mise en oeuvre de clés composées.
    Et la définition de clés alternatives composées n'étant pas actuellement prévue, je n'aime pas faire les choses à moitié.
    Par ailleurs, je conserve quelques doutes sur une façon simple de définir ces clés alternatives composées dans certaines situations (impliquant par exemple des clés étrangères)... A suivre...
    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

  3. #83
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut Looping : nouvelle version 2.4
    Bonjour à tous,

    La nouvelle version 2.4 de Looping est disponible sur https://www.looping-mcd.fr

    Au rayon des nouveautés :
    - Une interface légèrement revisitée pour passer plus naturellement des schéma E/A à UML... et préparer le terrain pour le passage au MLD graphique.
    - Nouvelle fonction Zoom permettant d'ajuster le modèle à la taille de la fenêtre.
    - Gestion des chevauchements de liens (en particulier pour les associations réflexives).
    - Récupération des propriétés d'un modèle existant lors de la création d'un nouveau modèle.
    - Possibilité de définir des noms logiques pour les tables et les rubriques différents des noms conceptuels.
    - Rajout de rôles venant suffixer dans le MLD les clés primaires des sous-classes d'héritage.
    - Export du MLD en mode texte.
    - Définition de nouveaux SGBD (SQL Server, Sybase, DB2) et possibilité pour l'utilisateur de définir lui-même les types de données de son SGBD.
    - Intégration de nouveaux types de données (BigInt, chaines binaires, Xml, ...).
    - Possibilité de positionner en début de script le code SQL défini dans certaines règles (pour définir, par exemple, des domaines SQL).
    - Possibilité de nommer les contraintes de clés primaires et étrangères lors de la création des tables SQL (CONSTRAINT).


    La version 2.5 avec le MLD graphique devrait suivre prochainement.
    Merci à François (fsmrel), escartefigue, Frédéric (SQLpro) et Philippe (CinePhil) qui, par leur intérêt, leurs idées (et aussi leurs critiques constructives !), ont largement contribué à l'évolution de Looping.
    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

  4. #84
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Merci pour cette nouvelle version
    Je ne peux rien installer sur mon poste pro, mais je la testerai à la maison dès que possible

  5. #85
    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
    Merci Paprick !

    Dès que je peux, je secoue !

     
    (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. #86
    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 Paprick,


    Encore merci !

    Quelques remarques :


    Citation Envoyé par Paprick Voir le message
    Une interface légèrement revisitée pour passer plus naturellement des schéma E/A à UML...
    Je ne vois plus la case à cocher « UML »...


    Citation Envoyé par Paprick Voir le message
    Gestion des chevauchements de liens (en particulier pour les associations réflexives).
    Ça va faire plaisir au Capitaine (Escartefigue) !
    A noter que dans les réflexives les noms des contraintes sont les mêmes...


    Citation Envoyé par Paprick Voir le message
    Possibilité de définir des noms logiques pour les tables et les rubriques différents des noms conceptuels.
    Ça va faire plaisir à Philippe (CinePhil) !



    Si je définis des rôles dans les associations, j’aimerais pouvoir les visualiser comme en V2.3, sans que les noms des colonnes des tables (ainsi que les noms des contraintes) soient impactés...

    Nom : v2.4_assoc_role.png
Affichages : 1031
Taille : 3,8 Ko

    V2.4 :

     CREATE TABLE E1
    (
       e1Id INTEGER,
       e2Id_rôle_2 INTEGER NOT NULL,
       CONSTRAINT E1_PK PRIMARY KEY(e1Id),
       CONSTRAINT E2_E1_rôle_2 _FK FOREIGN KEY(e2Id_rôle_2) REFERENCES E2(e2Id)
    );

    Pouvoir comme avec la V2.3 obtenir :

     CREATE TABLE E1
    (
       e1Id INTEGER,
       e2Id INTEGER NOT NULL,
       CONSTRAINT E1_PK PRIMARY KEY(e1Id),
       CONSTRAINT E2_E1_FK FOREIGN KEY(e2Id) REFERENCES E2(e2Id)
    );
    A noter l’espace en trop (à la suite de "rôle_2") dans le nom de contrainte "E2_E1_rôle_2 _FK".


    A suivre...

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

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

  7. #87
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonsoir François,


    Je ne vois plus la case à cocher « UML »...
    Tu as un gros bouton UML en haut à gauche (juste à coté de E/A) pour passer en UML... et plus tard au MLD graphique avec le bouton d'à coté !

    A noter que dans les réflexives les noms des contraintes sont les mêmes...
    Exact, c'est vrai que j'ai l'habitude de mettre des rôles qui provoquent la différence ; mais sinon, il faut que je rajoute un "_1" à l'une des contraintes.

    Si je définis des rôles dans les associations, j’aimerais pouvoir les visualiser comme en V2.3, sans que les noms des colonnes des tables (ainsi que les noms des contraintes) soient impactés...
    Dans la V2.3, les rôles venaient déjà suffixer les clés étrangères : c'est d'ailleurs, pour moi, leur principal objectif, en permettant de mieux nommer la clé étrangère... et c'est très utile pour les réflexives, principales pourvoyeuses de rôles.
    Et pour les noms de contraintes, c'est la même idée.
    En fait, à part pour les réflexives, les rôles sont très peu utilisés dans les MCD ; ils sont par contre parfois intéressants pour préciser le schéma relationnel (d'où ton idée de pouvoir ne pas les afficher dans le MCD).

    A noter l’espace en trop (à la suite de "rôle_2") dans le nom de contrainte "E2_E1_rôle_2 _FK".
    C'est noté, et ce sera corrigé !

    A suivre...
    J'attends avec impatience
    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

  8. #88
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonsoir Paprick

    Je viens de faire un test rapide, c'est très positif

    Déjà, l'ergonomie reste très intuitive, ce qui est bien sur très bien, les assos reflexives ne posent plus de problème

    L'ajout des noms logiques est une bonne chose, j'ai testé les allers retours (changements de noms) ça fonctionne sans souci
    Les nouveaux types aussi sont appréciables ainsi que les nouvelles définitions des types entiers (définis par leur taille, c'est plus clair)
    L'option "ne pas générer" pour les entités fictives, bien pratique aussi

    Le bouton MLD m'a bien sûr tenté mais je saurai être patient

    Merci encore pour cette nouvelle version

  9. #89
    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 Paprick Voir le message
    Tu as un gros bouton UML en haut à gauche
    D’accord. Comme on disait lors de mon service militaire et qu’on tirait au canon sur cible : « Vu l’arbre en boule à 20 cm ! »


    Citation Envoyé par Paprick Voir le message

    Dans la V2.3, les rôles venaient déjà suffixer les clés étrangères : c'est d'ailleurs, pour moi, leur principal objectif, en permettant de mieux nommer la clé étrangère...
    Hum... Que doit-on entendre par « mieux nommer la clé étrangère » ? Quel est le but précis recherché ?

    Prenons l’exemple de la 2e table E1 de mon précédent message :

     CREATE TABLE E1
    (
       e1Id INTEGER,
       e2Id INTEGER NOT NULL,
       CONSTRAINT E1_PK PRIMARY KEY(e1Id),
       CONSTRAINT E2_E1_FK FOREIGN KEY(e2Id) REFERENCES E2(e2Id)
    );
    Dans cette table, le nom de la clé étrangère est celui de la contrainte, à savoir "E2_E1_FK". Si certains préfèrent préfixer ou suffixer, pourquoi pas, mais pour ma part "E2_E1_FK" me suffit et je passerai au fil du rasoir d’Ockham "E2_E1_FK_rôle_2". Même chose en ce qui concerne les noms des attributs.

    je ne verrais aucun inconvénient (euphémisme...) à la mise en place d’une case à cocher permettant d’éviter le renommage automatique (attributs et contraintes) quand on utilise la visualisation des rôles...


    Autre sujet :

    Incidemment, que penser de la pertinence de ma proposition ici de choix d’outil pour la modélisation et la génération du SQL (pour SQL Server) ?  

     
    (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.

  10. #90
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonsoir François,

    Dans cette table, le nom de la clé étrangère est celui de la contrainte, à savoir "E2_E1_FK". Si certains préfèrent préfixer ou suffixer, pourquoi pas, mais pour ma part "E2_E1_FK" me suffit et je passerai au fil du rasoir d’Ockham "E2_E1_FK_rôle_2". Même chose en ce qui concerne les noms des attributs.
    Je ne suis pas sûr de te comprendre... Pour moi, le nom de la clé étrangère est "e2Id", le nommage de la contrainte (E2_E1_FK) étant ensuite utile, par exemple, dans des cas d'ALTER et de DROP.
    Suffixer les clés étrangères (et les noms de contraintes) avec le rôle est surtout nécessaire pour les associations réflexives. Quel usage fais-tu concrètement des rôles pour les associations entre classes d'entités ?
    Pour ma part, je trouve que ces rôles sont utiles lorsque le nom de clés primaires n'est pas jugé suffisamment explicite une fois qu'il se retrouve en clé étrangère dans la table associée.

    Incidemment, que penser de la pertinence de ma proposition ici de choix d’outil pour la modélisation et la génération du SQL (pour SQL Server)
    J'avoue ne pas maîtriser l’Anchor Modeling et j'ignore si Looping saura s'adapter à ses exigences...
    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. #91
    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
    Salve Paprick,


    Citation Envoyé par Paprick Voir le message
    Pour moi, le nom de la clé étrangère est "e2Id"
    Par souci de précision et de clarté, je rappelle qu’au Relationland (cf. mon avatar), une clé étrangère est un ensemble (au sens de la théorie des ensembles), et se note donc avec des accolades ; les éléments de cet ensemble sont les noms des attributs entrant dans sa composition : {A1, A2, ..., Am}.
    Ici, la clé étrangère est donc {e2Id} et migrant dans le SQLland je donne un nom à cet ensemble : "E2_E1_FK" en l’occurrence, tandis que "e2Id" n’est que le nom d’un attribut.


    Citation Envoyé par Paprick Voir le message
    le nommage de la contrainte (E2_E1_FK) étant ensuite utile, par exemple, dans des cas d'ALTER et de DROP.
    Du temps où je fus opérationnel (dont 33 ans dans la même SSII...), j’ai souvent fait le DBA, chez mes nombreux clients (banques, assurances, industrie, distribution, etc.) et les bases de données comportaient facilement entre 1000 et 2000 tables. Face à de telles volumétries, il est évident qu’à chaque fois il fallait une discipline de fer, mettre en place des normes de nommage de l’ensemble des objets composant la base et les contraintes (dont les clés étrangères) faisaient évidemment partie du lot. Il était hors de question que les AGL viennent altérer les noms conformes aux normes définies par l’entreprise.


    Citation Envoyé par Paprick Voir le message
    Quel usage fais-tu concrètement des rôles pour les associations entre classes d'entités ?
    Toujours chez mes clients, si cela n’avait tenu qu’à moi, je n’aurais guère eu à m’en servir (sauf bien sûr pour les réflexives). Mais voilà, certains concepteurs s’en servaient pour justement mieux préciser le rôle de ces classes, l’une par rapport à l’autre, dans le genre « est parent », « est enfant », voire en termes de textes plus bavards. Là encore, il était hors de question que les AGL viennent altérer les noms (normés) des attributs, indépendance oblige.


    Citation Envoyé par Paprick Voir le message
    je trouve que ces rôles sont utiles lorsque le nom de clés primaires n'est pas jugé suffisamment explicite une fois qu'il se retrouve en clé étrangère dans la table associée.
    A nouveau, c’est aux concepteurs et aux DBA de nommer les objets, en respectant les normes de l’entreprise, et si les noms paraissent hermétiques, du genre "GA2002", "PEE007", qu’il s’agisse de noms de tables, de contraintes, d’attributs, etc., les équipes de développement s’y font très vite, et gare à l’AGL qui toucherait à ces noms qui leurs sont devenus familiers (du reste, en ces temps lointains, je n’ai connu aucun AGL l’ayant fait).

    Bref, j’ai été marqué par les normes systématiquement édictées par les nombreuses entreprises où je suis intervenu, et ceci explique cela, l’indépendance de ces normes vis-à-vis de règles éventuellement suggérées par les AGL...

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

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

  12. #92
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Re-bonsoir François,

    Je comprends bien ton souci de maîtriser le nom des objets, mais je ne trouve pas le lien avec la solution que tu proposes pour Looping...
    Le fait de ne pas rajouter le rôle au nom des contraintes ne change rien au fait que c'est l'AGL qui décide, dans notre cas, de générer un nom composé des deux tables associées (suffixé ou préfixé par FK)...
    Pour avoir un contrôle total sur le nom des contraintes, il faudrait au contraire que ce nom reprenne carrément et seulement le libellé du rôle... s'il existe...
    Peux-tu me préciser exactement comment tu vois les choses pour ce nommage en reprenant ton petit exemple ?
    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

  13. #93
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Après réflexion, la solution suivante (qui reprend un de tes posts précédents) pourrait être mise en oeuvre sans remettre en cause les principes de Looping :
    On rajoute une case à cocher "Suffixer les clés étrangères" quand le rôle est saisi ; et si on la décoche, le suffixe n'est rajouté ni au nom de l'attribut, ni au nom de l'éventuel nom de contrainte.
    Qu'en penses-tu ?
    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

  14. #94
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonjour à tous,

    Suite à quelques remarques pertinentes, vous trouverez une une légère release de la version 2.4 de Looping disponible sur https://www.looping-mcd.fr

    François
    :
    je ne verrais aucun inconvénient (euphémisme...) à la mise en place d’une case à cocher permettant d’éviter le renommage automatique (attributs et contraintes) quand on utilise la visualisation des rôles...
    Toujours respectueux de ton avis , je suis en train d'intégrer la case à cocher "Suffixer les clés étrangères" en cas de rôle (que tu pourras donc décocher !)
    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

  15. #95
    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 Paprick,


    Excuse-moi de répondre si tard, mais ma journée fut complètement occupée par mon activité musicale ♪ ♫ (cf. mon avatar). En tout cas je te remercie de continuer de tenir compte avec grande patience de nos doléances et remarques...

    Ce jeudi sera sans réaction de ma part, car cette fois-ci je n’y verrai rien, intervention ophtalmo oblige...

    Je suis obligé d’en rester là, mais compte sur moi pour m’y remettre vendredi.

    Bon courage à toi et que nos bombardiers, Philippe et le Capitaine, ne restent pas inactifs !

     
    (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.

  16. #96
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonsoir François,
    Citation Envoyé par fsmrel Voir le message
    Excuse-moi de répondre si tard, mais ma journée fut complètement occupée par mon activité musicale ♪ ♫ (cf. mon avatar). En tout cas je te remercie de continuer de tenir compte avec grande patience de nos doléances et remarques...
    Ce jeudi sera sans réaction de ma part, car cette fois-ci je n’y verrai rien, intervention ophtalmo oblige...
    Je suis obligé d’en rester là, mais compte sur moi pour m’y remettre vendredi. 
    Pas de problème, je travaille sur une version que même ta vision affûtée ne saurait mettre à mal ! ... on peut toujours rêver !
    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

  17. #97
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    bonjour,

    Il m'est arrivé une chose étrange avec looping 2.3 (je n'ai pas la possibilité d'installer la 2.4 ici), je l'expose même si elle est peut être corrigée dans la dernière version, au cas où :

    sur un schéma dans lequel j'ai positionné une contrainte d'inclusion entre deux associations, j'ai double cliqué sur le lien entre l'une des associations et la CIF.
    Pour préciser le contexte : j'avais d'abord un peu galéré dans l'utilisation des liens (ne sachant pas s'il fallait utiliser les liens des associations, les flèches ou les lignes) j'ai donc commencé à tort avec une flèche

    La boite de dialogue permettant de modifier l'apparence de la flèche s'est ouverte et je l'ai validée sans changement.

    Et là Pan ! plantage de looping avec fermeture du modèle en cours
    Ce fut finalement sans conséquences, car Looping m'a proposé de récupérer le document, j'ai accepté et retrouvé mon document a priori sans dommages.
    J'ai renouvelé l'opération pour essayer de reproduire l'incident, mais en vain

    Incident ponctuel donc et non reproductible... Quelqu'un l'a -t-il déjà rencontré ?

    J'ai essayé de reproduire la situation avec le MCD ci-dessous (la flèche sous la CIF utilisée à tort en lieu et place d'un lien)
    Pièce jointe 533367

  18. #98
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Incident ponctuel donc et non reproductible... Quelqu'un l'a -t-il déjà rencontré ?
    Bonjour,
    Ce genre de déboire ne m'est jamais arrivé... Et si on n'arrive pas à trouver une séquence qui provoque systématiquement le plantage, ça va être compliqué à arranger...
    Donc, n'hésitez-pas à m'informer si vous avez une "séquence plantage" : quand c'est reproductible, c'est facile à corriger !
    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

  19. #99
    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 à tous,


    Plutôt que tenter de recourir à des subterfuges, à savoir concaténer des noms d’objets de nature différente, appelons un chat un chat !

    Je remets les compteurs à zéro et laisse de côté ce que j’ai écrit au sujet de « Rôle » et « Contrainte » : à la réflexion, ces deux concepts sont indépendants l’un de l’autre. En effet :

    — Le rôle porté par une patte d’association est seulement là pour mieux faire parler le MCD (et n’influence en rien le code SQL), en conséquence de quoi il doit forcément être affiché dans le diagramme si dans la fenêtre « Cardinalité » le cartouche « Rôle » est renseigné. Dans ces conditions la case à cocher « Afficher dans le modèle » est rendue de facto inutile, elle passe donc au rasoir d’Ockham (y-compris dans le cas des réflexives). A noter que le rôle devrait logiquement se propager jusqu’au MLD graphique, là encore seulement pour faire parler le diagramme (avec la possibilité qu’on puisse l’effacer si par exemple le diagramme devient trop chargé...)

    — Le nom de la contrainte portée par cette patte n’est pas là pour faire parler le MCD, mais permet d’anticiper sur le nom à donner aux contraintes de clés étrangères (notamment dans le cas des réflexives), et se propage donc jusqu’au code SQL (CREATE/ALTER TABLE). Inutile d’en demander l’affichage dans le MCD puisqu’en aval c’est fondamentalement le code SQL qui est concerné. En l’absence de clé étrangère à générer (c’est-à-dire du côté x,N de la patte), en toute logique pas de cartouche ad-hoc.


    1er exemple :

    Soit la partie suivante du MCD (laquelle reprend le diagramme figurant dans le post #86, aux rôles près qui changent de nom) :

    
        [E1{e1Id}]------1,1------(R)------0,N------[E2{e2Id}]
    
    

    Côté 1,1 :

    Nom : fenetre cardinalite role e1_e2_fk_1,1_0,n(côté e1).png
Affichages : 1048
Taille : 6,3 Ko

    Côté 0,N :

    Nom : fenetre cardinalite role e1_e2_fk_1,1_0,n(côté e2).png
Affichages : 985
Taille : 6,1 Ko

    En notant que dans le cas d’une x,1/y,N le nom de contrainte côté N est sans objet (donc que le cartouche « Nom de contrainte » n’a alors pas d’utilité, comme déjà signalé...)

    =>

    MCD

    
        [E1{e1Id}]------1,1------(R)------0,N------[E2{e2Id}]
                       Enfant            Parent
    
    
    Code SQL

    CREATE TABLE E1
    (
       e1Id INT NOT NULL,
       e2Id INT NOT NULL,
       PRIMARY KEY(e1Id),
       CONSTRAINT E1_E2_FK FOREIGN KEY(e2Id) REFERENCES E2(e2Id)
    );

    2e exemple

    Soit la représentation suivante :

    [E1{e1Id}]------0,N------(R)------0,N------[E2{e2Id}]

    Côté E1 :

    Nom : fenetre cardinalite role e1_e2_fk_0,n_0,n(côté e1).png
Affichages : 989
Taille : 6,4 Ko

    Côté E2 :

    Nom : fenetre cardinalite role e1_e2_fk_0,n_0,n(côté e2).png
Affichages : 1014
Taille : 6,1 Ko

    Passage à SQL :

    CREATE TABLE R
    (
       e1Id INT NOT NULL,
       e2Id INT NOT NULL,
       PRIMARY KEY(e1Id, e2Id),
       CONSTRAINT R_E1_FK FOREIGN KEY(e1Id) REFERENCES E1(e1Id),
       CONSTRAINT R_E2_FK FOREIGN KEY(e2Id) REFERENCES E2(e2Id)
    ); 
    A signaler que dans le cas des réflexives, les diagrammes sont plus parlants si dans la fenêtre « Cardinalité » on renseigne systématiquement les rôles.

    Cas des noms des attributs :

    Comme je l’ai déjà écrit, les noms des attributs (ou plutôt des colonnes) SQL ne devraient pas être transformés au stade MCD. Le code SQL précédent se substitue normalement à celui qui est actuellement généré (voir quand même ci-dessous la remarque de CinePhil) :

    CREATE TABLE R
    (
       e1Id_Désignation INT,
       e2Id INT,
       PRIMARY KEY(e1Id_Désignation, e2Id),
       FOREIGN KEY(e1Id_Désignation) REFERENCES E1(e1Id),
       FOREIGN KEY(e2Id) REFERENCES E2(e2Id)
    ); 
    

    Cas des noms des contraintes de clé primaire :

    Dans la série « appelons un chat un chat », puisqu’une table SQL a une seule clé primaire, pour mon exemple précédent, une évolution de la fenêtre « Association » du genre de ce qui suit me conviendrait bien :

    Nom : fenetre association contrainte pk.png
Affichages : 1002
Taille : 6,5 Ko


    Cas des noms des contraintes des clés alternatives :

    En suspens…


    Cas de la génération évoquée par CinePhil (cf. son post #75) :


    Citation Envoyé par CinePhil Voir le message
    Pour ma part, je nomme mes clés étrangères selon le nom de la colonne qui en fait l'objet...

    Exemple :

    te_personne_prs (prs_id, prs_id_civilite, prs_nom, prs_prenom...)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT fk_prs_id_civilite FOREIGN KEY...

    Et comme par son nom on sait que la colonne prs_id_civilite fait partie de la table te_personne_prs, on sait que la contrainte concerne aussi cette table.
    Philippe, pour les noms des contraintes, le système ci-dessus devrait te convenir :

    Nom : fenetre cardinalite_cinephil.png
Affichages : 989
Taille : 6,3 Ko

    Cela donne lieu a :

    CONSTRAINT fk_prs_id_civilite FOREIGN KEY...
    En revanche, pour renommer les colonnes entrant dans la composition des clés étrangères (cf. les colonnes prs_id_civilite, pcr_id_diplome_ensfea, pcr_numero_mention), c’est une autre paire de manches... Ne crois-tu pas que ça mérite une grosse réflexion avec Paprick  ? 

    En effet, on est dans le genre de situation où quand la génération du code SQL est faite à partir du MLD, renommer les colonnes, notamment pour les tables issues d’associations, peut se faire the fingers in the nose, ici ça devient plus qu’acrobatique et là, Paprick va tousser grave et peut-être bien vouloir taper !!!

    En attendant, je mets mon casque lourd et me tapis au fond de la tranchée, car il pourrait pleuvoir pleins de trucs, comme à Gravelotte... Comme dit Paprick,

     
    (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.

  20. #100
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonsoir,

    Merci François pour cette analyse en profondeur des possibilités de nommage des contraintes.

    Je vais pour ma part présenter les choses sous un autre angle, qui se rapproche plus des posts précédent de François plutôt que de son dernier !

    Faisons tout d'abord le point sur la fonction première et l'intérêt des rôles, ainsi que la façon dont ils peuvent être utiles :
    - Ils viennent préciser l'association, ce qui est surtout nécessaire pour les associations réflexives asymétriques, tant au niveau conceptuel pour la compréhension du MCD, qu'au niveau du MLD pour distinguer les clés étrangères.
    - Cette précision peut également s'appliquer aux associations inter-entités, même si un nom bien choisi pour l'association suffira le plus souvent au niveau conceptuel ; au niveau logique, suffixer la clé peut avoir un intérêt pour mieux spécifier le rôle que remplira la clé étrangère ainsi exportée dans la table associée, sachant que Looping fait le choix (non négociable !) de reprendre, pour les clés étrangères, le même nom que la clé primaire (éventuellement préfixé). Il est alors légitime de définir un rôle sans forcément le voir apparaître au niveau conceptuel.
    - Inversement, le rôle peut avoir un intérêt pour mieux expliciter l'association au niveau conceptuel, sans que cela viennent forcément encombrer le schéma relationnel, surtout s'il s'agit d'un rôle à rallonge ! Il est alors légitime de définir un rôle sans forcément le voir suffixer la clé étrangère au niveau logique.

    De cette réflexion peuvent alors naître les 2 cases à cocher proposées initialement par François dès qu'un rôle est spécifié : "Afficher dans le MCD" et "Suffixer la clé étrangère".

    Concernant le nom donné aux contraintes, distinguons le nom de base et l'usage éventuel des rôles dans ce nom :
    - Tout d'abord, l'automatisation de la proposition de CinePhil, qui consiste à reprendre le nom des clés concernées, ne parait guère envisageable dans le cas de clés composées.
    - Proposer une zone de saisie libre et ne pas automatiser la base de ce nommage serait, pour moi, la porte ouverte à de nombreuses dérives... il faut des règles, un formalisme ; sinon, je crains le pire...
    - Le choix de reprendre le nom des tables associés me parait donc, de très loin, le plus légitime ; ensuite, préfixer ou suffixer avec FK : à chacun son choix... moi, je suis plutôt pour les préfixes, mais Looping propose les 2 (uniquement pour faire plaisir à François ! ).
    - Concernant la reprise des rôles en suffixe de ces noms, nous devons rester exactement dans la même logique que pour les clés étrangères (puisque ces contraintes les concernent) : en cela, je rejoins donc un peu l'approche de CinePhil en reprenant le rôle s'il est présent dans le nom de la clé étrangère (donc la même case a cocher concerne les deux noms : la clé étrangère et le nom de la contrainte).
    - Pour les noms de contraintes des clés primaires, la solution la plus simple est de loin la meilleure : on reprend le nom de la table concernée suffixé ou préfixé par PK.

    En résumé, on laisse les rôles agir, soit sur le conceptuel, soit sur le logique, soit sur les deux (soit sur aucun, mais là ça devient des commentaires internes à l'auteur ! ).
    Les contraintes sont nommées selon un formalisme strict, celui proposé aujourd'hui pas Looping me paraissant le plus consensuel.

    Enfin, pour les noms de clés alternatives composées, pas de problème puisque Looping ne gère ces clés alternatives qu'à travers le code SQL librement inséré dans les règles par l'utilisateur : le nom des contraintes correspondantes est donc tout aussi libre ! Et ne gérant pas les composées, je préfère ne pas faire les choses à moitié et laisser le UNIQUE (pouvant spécifier les clés alternatives simples) au niveau du NOT NULL, derrière le nom de la rubrique.
    J'espère que cette approche conviendra au plus grand nombre : ce n'est peut-être pas la meilleure, mais c'est celle qui s'inscrit le mieux dans la logique de Looping.
    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

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Recherche logiciels pour réaliser des MCD
    Par quaresma dans le forum Outils
    Réponses: 5
    Dernier message: 08/02/2008, 17h07
  3. Quel logiciel utiliser pour shématiser une bdd relationnel
    Par MrEddy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 22/07/2005, 16h42
  4. Quel logiciel utiliser pour un serveur ftp
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 11
    Dernier message: 01/04/2005, 20h09
  5. Réponses: 3
    Dernier message: 27/08/2003, 21h14

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