IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Nouveau forum consacré au logiciel de modélisation Looping créé par le professeur Patrick Bergougnoux
Par l'équipe de la Rédaction

Le , par CinePhil

905PARTAGES

12  0 
Chers membres du Club,

Le professeur Patrick Bergougnoux, alias Paprick vient de sortir la version 3.0 de son logiciel de modélisation Looping.

Comme Looping est de plus en plus utilisé et abordé dans le forum Schéma et dans les discussions parlant de modélisation des données, la rédaction de DVP a décidé de créer un sous-forum pour Looping dans la rubrique "ALM / Outils".

Vous pourrez ainsi communiquer en direct avec son concepteur et avec les membres aguerris à l'utilisation de Looping. Vous pourrez aussi faire votre lettre au Père Noël en matière d'évolution de Looping.

À bientôt sur nos forums

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 13/11/2020 à 22:18
Très bonne idée ce sous-forum, longue vie à Looping
5  0 
Avatar de fsmrel
Expert éminent sénior https://www.developpez.com
Le 18/11/2020 à 17:49
Salve, Patrick, c’est encore moi !

Remarques relatives aux actions de compensation (ON DELETE / UPDATE)  

Looping 3.0 permet la déclaration au stade MCD des actions de compensation ON DELETE / UPDATE : belle initiative ! Mais quelques remarques.

Soit le diagramme suivant :



A titre d’exemple, l’excellent ouvrage Modélisation Conceptuelle de Données - Une démarche pragmatique utilise les mots-clés "Merise", "MCD", "UML", "MLD", "champ", "CODASYL".

Or pour cet ouvrage "champ" est à remplacer par "rubrique" et "CODASYL" est à supprimer : au stade SQL on interviendra directement sur la table UTILISER :

DELETE FROM UTILISER
    WHERE LivreId = 
       (SELECT LivreId 
        FROM   LIVRE 
        WHERE  Titre = 'Modélisation Conceptuelle de Données - Une démarche pragmatique'
      AND MotCleId = 
       (SELECT MotCleId 
        FROM   MOT_CLE 
        WHERE  MotCleLibelle = 'CODASYL'))
;
UPDATE UTILISER 
    SET MotCleId = 
        (SELECT MotCleId 
         FROM   MOT_CLE 
         WHERE  MotCleLibelle = 'rubrique')
    WHERE LivreId = 
        (SELECT LivreId 
         FROM   LIVRE 
         WHERE  Titre = 'Modélisation Conceptuelle de Données - Une démarche pragmatique'
      AND MotCleId = 
        (SELECT MotCleId 
         FROM   MOT_CLE 
         WHERE  MotCleLibelle = 'champ'))
;
So far, so good. Supposons maintenant qu’on veuille supprimer l’ouvrage Vingt ans dans un mur, la vie d’une brique, lequel utilise aussi des mots-clés. Allons-y tranquillement :

DELETE FROM LIVRE 
    WHERE Titre ='Vingt ans dans un mur, la vie d''une brique' 
;
Las ! Le SGBD refusera la suppression parce que la table UTILISER contient des références à l’ouvrage en cause (table LIVRE).

Pour arriver à nos fins :

Soit on procède en deux temps, en commençant par supprimer ces références puis en supprimant enfin l’ouvrage ;

Soit on définit une action de compensation ON DELETE CASCADE pour l’association UTILISER, auquel cas, sans se préoccuper des références dont il est l’objet, on peut tout de suite supprimer l’ouvrage, le déclenchement de la suppression de ses références sera automatiquement assuré par le SGBD.



Mais ! Symétrie oblige, la suppression d’un mot-clé déclenche aussi la suppression automatique de ses références dans la table UTILISER. Si (par inadvertance...) je supprime le mot-clé "MCD", c’est quand même fâcheux pour les ouvrages traitant de la modélisation des données...

Autrement dit, à mon sens, les actions de compensation ON DELETE / UPDATE devraient être présentées non pas dans la fenêtre « Association », mais à un niveau plus fin, c’est-à-dire au niveau des pattes d’association (ainsi je cocherai la case « ON DELETE CASCADE » pour la patte connectant LIVRE et UTILISER, et m’abstiendrai pour l’autre patte).

Je passe au MCD de la page 254 de ton ouvrage. Si l’on peut envisager que la suppression d’un adhérent « cascade » automatiquement sur ses adhésions, il est difficilement concevable que la suppression d’une activité cascade elle aussi sur les adhésions (tête des adhérents !) Là encore, les pattes de l’association ADHESION devraient pouvoir être dotées d’actions de compensation différentes...



La réflexion portait sur les associations.

Sous-types et actions de compensation (disons ON DELETE)

Manifestement, les actions de compensation sont ignorées dans le cas des sous-types. Il faut donc procéder en deux temps pour supprimer un personnel qui est un administratif (cf. page 221 de ton ouvrage), c’est bien dommage, alors que justement la suppression d’un personnel dans la table PERSONNEL ne peut que cascader (sinon il faudra qu’on m’explique) dans la table ADMINISTRATIF (ou ENSEIGNANT, toutes choses égales).
3  0 
Avatar de Picsonald
Nouveau membre du Club https://www.developpez.com
Le 24/11/2020 à 16:14
Bonjour à tous,
Merci pour l'ouverture de ce Merise sur Looping !
Je l'utilise beaucoup dans les cours que je donne. Il est très pratique, et la v3.0 est tout simplement excellente !
Longue vie au forum et à Looping !
3  0 
Avatar de fsmrel
Expert éminent sénior https://www.developpez.com
Le 01/02/2023 à 16:54
Bonsoir,

Merci Paprick de nous avoir offert la possibilité de définir des classes d’entités fictives.

Comment procédait-on avant que Looping n'arrivât ? Cela me conduit à faire une mise au point au sujet de l’entité-type (classe d'entité) DATE (CALENDRIER).  

En 2015, j’ai pondu un billet à propos de cette entité-type DATE :Que penser de la présence d'une entité-type DATE dans un MCD ?

Dans ce billet, J’ai tiré à vue, car cette entité-type devait se retrouver dans le MLD – puis dans le code SQL – sous forme de table, avec les contraintes d’intégrité référentielle et tout le toutim, alors que c’était parfaitement inutile.

En ces temps « pré-Looping », DB-MAIN nous permettait de contourner la contrainte d’identification implicite et inconditionnelle formulée dans les pages 97 et 98 du monument Ingénierie des systèmes d'information : Merise deuxième génération (4e édition, 2001), paragraphe II-D-3-d. Identification d'une relation type.

Avec l’identification explicite d’une association selon DB-MAIN, pas besoin d’entité-type DATE, dans l’exemple ci-dessous la date fait l’objet d’un attribut de l’association et entre dans la composition de l’identifiant :


Bien entendu, tout ça sent le souffre et Looping nous permet non seulement de respecter le dogme merisien, mais permet surtout d’éviter, avec intelligence et élégance, l’obligation de la création d’une table DATE parasite, grâce à la classe d’entité fictive CALENDRIER.

Encore une fois, merci Paprick !

-----

P.S.

Dans mon billet, en citant la page 138 de l’ouvrage de Nanci et Espinasse, je faisais en fait référence à la 3e édition de cet ouvrage.
3  0 
Avatar de escartefigue
Modérateur https://www.developpez.com
Le 16/11/2020 à 19:03
Re bonjour Paprick,

Dans le sujet https://www.developpez.net/forums/d2.../#post11646567
Je découvre les liens courbes, fort élégants du reste, qui relient les sous-types "salarié" et "bénéficiaire".
C'est un plus d'une prochaine version ou bien déjà disponible avec la v3, auquel cas, mais komankonfédonctesque ? Point n'y parviens-je !

EDIT trouvé : double clic sur le lien, puis cocher la case "lissage cassure"
Trop bien
2  0 
Avatar de Paprick
Membre émérite https://www.developpez.com
Le 17/11/2020 à 3:43
Bonsoir François,

La solution que j'ai prévue dans la version 3.1 va tout à fait dans ce sens ; voici la fenêtre des liens qui sera proposée :

Cela permettra même de choisir la position des identifiants relatifs .
Et pour les clés alternatives composées, on pourra préciser la position entre parenthèses à la suite du nom de l'index.

Qu'en penses-tu ?
2  0 
Avatar de fsmrel
Expert éminent sénior https://www.developpez.com
Le 17/11/2020 à 3:04
Bonsoir Patrick,

A propos de l’ordre des attributs dans la clé primaire d’une table issue d’une association du MCD.  

Examinons le MCD et le MLD figurant au chapitre 14 de ton ouvrage Modélisation Conceptuelle de Données - Une démarche pragmatique. J’ai pris cet exemple parce qu’il correspond (à une CIF près) à celui sur lequel nous nous sommes penchés, en compagnie du Capitaine :


La table EMPRUNT a pour clé primaire le triplet

{NumCarte, CodeOuvrage, DatePret}


Mais voilà, le DBA a besoin que l’ordre des attributs dans la clé soit différent, par exemple :

{DatePret ,NumCarte ,CodeOuvrage}.


Il ne semble pas que l’on puisse demander à Looping d’effectuer ce changement, donc il faudra retoucher manuellement le code SQL de création des tables (sans oublier de propager le changement sur les éventuelles clés étrangères ).

Pour pouvoir agir sur cet ordre au stade MCD, je verrai par exemple quelque chose comme ceci, où la fenêtre associée à la patte connectant CALENDRIER et EMPRUNT permettrait de préciser la position de l’attribut dans l’identifiant de l’association (c’est-à-dire dans la clé primaire générée pour la table EMPRUNT) :



Même principe pour les autres pattes branchées sur l’association EMPRUNT.

Patrick, ton avis ?
1  0 
Avatar de Paprick
Membre émérite https://www.developpez.com
Le 17/11/2020 à 12:40
Citation Envoyé par CinePhil Voir le message
Que veut dire la case à cocher : "Clé étrangère dans index" ?
La notion d'index est utilisée par Looping pour définir des clés alternatives composées : en indiquant un nom d'index dans la zone qui s'affiche quand on coche la case correspondante (case à cocher UNIQUE pour les rubriques et cette case "Clé étrangère dans index" pour les clés étrangères), toutes les rubriques ayant le même nom d'index composent une clé alternative (qui se traduit par un UNIQUE en SQL).
Cette option est donc proposée dans les pattes des associations pour permettre d'intégrer les clés étrangères dans ces index.
De plus, il est possible d'associer une rubrique à plusieurs index en séparant les noms d'index par un |
1  0 
Avatar de Paprick
Membre émérite https://www.developpez.com
Le 18/11/2020 à 3:05
Hello,
Citation Envoyé par fsmrel Voir le message
C’est bien dans la fenêtre Propriétés > MLD – SQL que figurerait l’option "Affichage types données", c’est ça ?
Presque ! Comme cet affichage se fera aussi dans le MCD, je vais placer le choix dans "Propriétés > Options générales" derrière 'Usage du gras".

Au fond, à moins que je ne raisonne comme un tambour, si je choisis "Clés concernées", outre la table FOURNISSEUR, l’entité-type FOURNISSEUR elle aussi ressemblerait assez à ce que j’ai fait avec AMC
Tout à fait !
1  0 
Avatar de fsmrel
Expert éminent sénior https://www.developpez.com
Le 18/11/2020 à 3:58
Ah ben dis donc, ah ben dis donc, ah ben dis donc... Well, well, well ! Trop bien  Et je pèse mes mots. Je vais dire à Raoul d’aller chercher une bouteille chez la Polonaise, mais allons-y mollo quand même...
1  0