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

Looping Discussion :

Renommer les contraintes


Sujet :

Looping

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Renommer les contraintes
    Bonjour,

    J'utilise Looping depuis quelques jours seulement et malgré mes recherches je n'ai pas trouvé de solution.
    Je m'excuse par avance si je suis passé à côté de la fonctionnalité ou si la question à déjà été posée sur ce forum.

    Est-il possible de définir le nom des contraintes FOREIGN KEY et/ou PRIMARY KEY, et/ou UNIQUE ? Actuellement les noms sont construits automatiquement selon cette norme :
    • PK_ + nom de la table
    • FK_ + nom de la table + nom de la table de référence
    • AK_ + nom de la table

    Pour les FOREIGN KEY je sais qu'il est possible d'ajouter un rôle sur la cardinalité "0,n" mais cela renomme simplement la colonne dans la table de destination (ici la table "ETABLISSEMENT").

    Ci-dessous le script SQL généré.

    Nom : Screenshot-MCD.png
Affichages : 277
Taille : 10,7 Ko

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- Code généré
    CREATE TABLE ETABLISSEMENT
    (
       ETAB_CODE INT IDENTITY,
       ETAB_DENOMINATION VARCHAR(120) NOT NULL,
       ETAB_NUM_NIC CHAR(4),
       ETAB_CLE_NIC CHAR(1),
       ETAB_PRINCIPAL BIT NOT NULL CONSTRAINT DF_ETAB_PRINCIPAL DEFAULT 0,
       FJUR_CODE INT,
       CONSTRAINT PK_ETABLISSEMENT PRIMARY KEY(ETAB_CODE),
       CONSTRAINT FK_ETABLISSEMENT_FORME_JURIDIQUE FOREIGN KEY(FJUR_CODE) REFERENCES FORME_JURIDIQUE(FJUR_CODE)
    );

    Idéalement je souhaiterai pouvoir définir le nom de l'ensemble des contraintes (PRIMARY KEY, FOREIGN KEY, UNIQUE).

    Merci par avance pour votre aide.

  2. #2
    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,
    Les noms des contraintes sont effectivement définis par Looping, et ce de manière automatique.
    Vous gardez juste la possibilité de placer les PK, AK et FK au début ou à la fin du nom de la contrainte composée des différentes clés impliquées.
    Laisser l'utlisateur choisir lui-même les noms de ces contraintes poserait un problème de gestion de l'unicité de ces noms, et surtout alourdirait l'interface pour la grande majorité des utilisateurs qui se satisfont de ces noms générés par le logiciel. Cela poserait également de sérieux problèmes pour nommer les AK issues d'index composés...
    Peut-être avez-vous imaginé une interface qui permettrait un nouveau nommage sans alourdir le fonctionnement de base 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

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Pour info, power AMC (payant) propose une gestion paramétrable des noms d'objets, mais c'est une véritable usine à gaz.
    La solution proposée par looping a le mérite d'être simple.

    Quand une norme locale impose des noms particuliers (comme c'est souvent le cas), les DBA modifient manuellement ou de façon semi automatique les scripts proposés par Looping et tout va bien .

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci à vous deux pour vos retours.

    J'avais pensé à un champ de saisi au niveau de la cardinalité, comme c'est fait pour le rôle, pour saisir le nom de la contrainte souhaité. Mais vous avez raison, cela va alourdir l'interface et risque d'engendrer des problèmes (unicité et index composés).

    Ma demande est vraiment très spécifique et la grande majorité des utilisateurs se satisfont des noms des contraintes actuels, dont comme me l'a conseillé escartefigue je modifierai le script SQL.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Je me permets de rebondir sur cette discussion, mais je ne trouve pas dans looping comment déclencher le nommage des contraintes (PK, FK,...)

    Si je modélise l'exemple de l'auteur, j'ai simplement

    CREATE TABLE ETABLISSEMENT(
    ETAB_CODE INT,
    DENOMINATION VARCHAR(120) ,
    FJUR_CODE_test INT,
    PRIMARY KEY(ETAB_CODE),
    FOREIGN KEY(FJUR_CODE) REFERENCES FORME_JURIDIQUE(FJUR_CODE)
    );


    Je voudrais savoir comment paramétrer Looping pour avoir les clés primaires et étrangères nommées.

    CONSTRAINT PK_ETABLISSEMENT PRIMARY KEY(ETAB_CODE),
    CONSTRAINT FK_ETABLISSEMENT_FORME_JURIDIQUE FOREIGN KEY(FJUR_CODE) REFERENCES FORME_JURIDIQUE(FJUR_CODE)


    D'avance merci

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    La clef primaire, comme tout autre attribut, peut être renommée en utilisant la zone "nom logique" de la fenêtre "rubrique".


    La clef étrangère peut soit conserver le même nom que la PK dont elle est issue, soit être préfixée, soit être suffixée par le nom de l'entité d'origine. Ca se paramètre dans la partie "MLD - SQL", zone "nom clef étrangère" de la fenêtre "propriétés".

    Nom : Sans titre.png
Affichages : 150
Taille : 36,4 Ko

    Dans le cas particulier des associations réflexives dans lesquelles une même PK participe deux fois à l'association (mais cette astuce peut aussi être utilisée pour les autres types d'assos), on peut renommer les clefs étrangères en double-cliquant sur le lien d'association et en renseignant un nom dans la zone "Rôle - libellé"


    Nom : Sans titre2.png
Affichages : 140
Taille : 58,7 Ko

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci de te pencher sur mon problème. Je me suis soit mal exprimé, soit j'ai raté un truc.
    Je connaissais la possibilité de renommer la clé étrangère, bien utile pour les tables récursives avec la notion de parent.
    Ce que je voudrais, c'est nommer les contraintes (FK, PK,...).

    Ainsi, l'exemple suivant me gère le script sql associé

    Nom : Capture d’écran 2022-10-27 143300.png
Affichages : 142
Taille : 50,5 Ko

    Pour le coup, si je joue avec le paramètre Nom clé étrangère, le régler sur [FK] ne semble avoir aucune incidence, choisir les autres options joue en effet SEULEMENT sur le nom de la clé étrangère.

    Néanmoins, je voudrais pouvoir nommer explicitement les contraintes dans mon script, donc générer un script tel quel :


    CREATE TABLE Entité_2(
    id2 INT,
    id1 INT,
    CONSTRAINT PK_Entité_2 PRIMARY KEY(id2),
    CONSTRAINT FK_Entité_2_Entité_1 FOREIGN KEY(id1) REFERENCES Entité_1(id1)
    );

    Je n'arrive pas à faire générer ce type de script avec pour un create table. Soit il y a une option à activer que je ne trouve pas, soit une astuce de modélisation à opérer, soit ça n'existe pas dans Looping.

    merci

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

    Looping peut effectivement nommer les contraintes avec l'option "Nom contrainte clé".
    Cependant, afin d'éviter tout risque de non-respect de l'unicité de ces noms, Looping en détermine lui-même le nom en fonction des clés impliquées et propose juste de préfixer ou de suffixer ce nom avec PK, FK ou AK en fonction de la nature de la clé (primaire, étrangère ou alternative).

    Pour votre exemple, voici ce que cela donne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE Entité_1(
       Id1 INT,
       CONSTRAINT PK_Entité_1 PRIMARY KEY(Id1)
    );
    
    
    CREATE TABLE Entité_2(
       Id2 INT,
       Id1_RENAMED INT,
       CONSTRAINT PK_Entité_2 PRIMARY KEY(Id2),
       CONSTRAINT FK_Entité_2_Entité_1_RENAMED FOREIGN KEY(Id1_RENAMED) REFERENCES Entité_1(Id1)
    );
    En espérant avoir répondu à votre besoin,

    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
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Paprick Voir le message
    Bonjour,

    Looping peut effectivement nommer les contraintes avec l'option "Nom contrainte clé".
    C'est cette information qui me manquait, l'option ne m'avait pas sauté aux yeux dans la fenetre Propriétés.

    Merci pour la réponse.

    Cdlt
    Troy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Desactiver temporairement les contraintes
    Par maitrebn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/10/2006, 17h58
  2. connaitre les contraintes d'une table??
    Par sali dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/11/2004, 11h46
  3. désactiver les contraintes
    Par romainw dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/07/2004, 10h46
  4. Question sur les contraintes d'intégrités
    Par eGGyyS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/04/2004, 13h51
  5. Les contraintes OCL
    Par bart64 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 19/12/2003, 18h47

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