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 :

nom par défaut des identifiants (et des clés étrangères)


Sujet :

Looping

  1. #1
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut nom par défaut des identifiants (et des clés étrangères)
    Bonjour,
    Et félicitations pour Looping
    Avec des airs de rien, plein d'humilité, Looping fait très bien ce que beaucoup d'autres ne font pas ou font moins bien, et en le faisant payer (cher) à l'utilisateur...

    J'espère ne pas faire une demande déjà formulée (j'ai cherché sans trouver), donc je formule :

    J'ai vu dans les options qu'il était possible de définir l'identifiant automatique (choix dans une liste entre Id_NomClasse et NomClasse_Id).

    Personnellement, aucun des 2 ne me convient, le mélange des _ et des Majuscules (et oui, on a tous nos manies)
    Généralement, je mets id sur toutes les entités, pour satisfaire les ORM.

    Une configuration basée sur un masque par ex id{Nomclasse}, saisi par l'utilisateur donnerait plus de souplesse, pour cet élément important :
    L'idéal serait qu'en plus, ce masque tienne compte de la casse :
    Pour l'entité produit
    • id{nomclasse} génère idproduit
    • id{Nomclasse} génère idProduit
    • id génère id


    Et mettre le même principe sur le nommage des champs en clé étrangère serait aussi pas mal (avec mes id sur toutes les entités, j'ai des clés étrangères innommables pour l'instant) :
    Le masque sur clé étrangère aurait besoin de 2 parties variables éventuelles : les noms de table et de champ auquels la clé fait référence
    donc un masque du genre: {champRef}{tableRef}, avec la même prise en compte de la casse sur la première lettre :-)


    De cette façon, tout le monde peut s'y retrouver...
    Pour l'instant, les masques sont les suivants :
    • identifiantAuto : Id{Nomclasse}
    • fkAuto : {champRef}



    Pour moi, ce serait plutôt :
    • identifiantAuto : id
    • fkAuto : id{TableRef}



    Et chacun pourrait utiliser ses propres règles de nommage, satisfaisant ses besoins/normes/pratiques

  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
    Bonjour,
    Merci pour ces suggestions qui sont très intéressantes... Je promets de les étudier pour les prochaines versions .
    En attendant, sachez que vous pouvez déjà utiliser vos propres normes/pratiques, d'une part en donnant le nom que vous voulez aux identifiants sans utiliser l'identifiant automatique (mais c'est vrai que ça prend plus de temps) et, d'autre part, pour les FK, en utilisant le libellé des rôles sur les pattes d'associations pour nommer comme les FK comme vous le souhaitez.
    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
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Merci de cette réponse !
    J'utilise effectivement cette possibilité de renommage.
    A noter que l'introduction de masques personnalisables pour l'identifiantAuto et les fkAuto va au delà de l'économie de renommages : elle participe également à l'uniformisation/normalisation des nommages utilisés dans un modèle.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Citation Envoyé par Paprick Voir le message
    ...d'autre part, pour les FK, en utilisant le libellé des rôles sur les pattes d'associations pour nommer comme les FK comme vous le souhaitez.
    Bonsoir,
    Je reviens sur cette partie de la réponse, et sur ce que j'ai dit :
    Je n'ai vu aucun effet sur le MLD ou le script généré du nommage du rôle sur la patte de l'association

    Nom : looping-fk.png
Affichages : 540
Taille : 16,2 Ko

    J'ai peut-être mal interprété la suggestion...

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

    Le rôle pris en compte pour le renommage ou le suffixage de la clé étrangère est celui de la patte 0,n : ça peut paraître bizarre au premier abord mais c'est logique quand on approfondit bien le raisonnement !
    En effet, la clé étrangère provient de la classe d'entités côté patte 0,n : c'est donc là que le rôle doit être défini.
    Pour vous en convaincre, réalisez une association ternaire avec 2 pattes 0,n et 1 patte 1,1 : si vous voulez renommer les clés étrangères, vous verrez vite que vous n'avez as le choix .
    Idem dans le cas d'une association 0,n /0,n : il faut bien pouvoir renommer les clés étrangères constituant la clé primaire de la table d'association ; d'ailleurs, décomposez avec Looping cette association, et tout sera encore plus limpide !
    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

  6. #6
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Oui, c'est tout à fait logique,
    je me suis laissé embarquer dans une vision anglo-saxone du role, dans un MEA !
    Ce qui m'a également conduit à ne pas bien nommer le role (facture n'a pas de sens).

    Je rectifie

    Nom : looping-fk-2.png
Affichages : 392
Taille : 16,5 Ko

    Merci !
    beaucoup

    PS : Ceci dit, dans une approche Merise, j'ai quand même la tentation de mettre ce idClient près de la cardinalité 1,1 du côté de la facture.
    Ce sont les anglo-saxons qui inversent tout, pas nous ;-)
    Mais ce n'est qu'une question de convention, à propos d'un concept qui n'est pas initialement merisien.

  7. #7
    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 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Une méthode que j'utilise quand je ne suis pas contraint par les normes du client est la suivante : affecter un préfixe à chaque type d'entité et à chaque type d'association de cardinalité n (celles qui deviennent des tables donc). Ce préfixe est unique, codé sur 2 à 3 caractères selon la richesse du modèle.

    L'avantage est qu'on retrouve très facilement l'origine des FK grâce à ce préfixe et que toute étude d'impact est également facilitée.

    Le seul cas où j'utilise le rôle sur une patte de l'association est celui des assos reflexives type parent/enfant ou composant/composé

    Exemple :
    Pièce jointe 598662

    Qui donne le script suivant (ici pour SQL server) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE CL_client(
       CL_id INT IDENTITY,
       CL_nom VARCHAR(50) NOT NULL,
       CL_datecrea DATE NOT NULL,
       PRIMARY KEY(CL_id)
    );
     
    CREATE TABLE FA_facture(
       FA_ident INT IDENTITY,
       FA_date DATE NOT NULL,
       CL_id INT NOT NULL,
       PRIMARY KEY(FA_ident),
       FOREIGN KEY(CL_id) REFERENCES CL_client(CL_id)
    );

Discussions similaires

  1. Noms par défaut des champs en JPA
    Par ramses007 dans le forum JPA
    Réponses: 0
    Dernier message: 21/10/2012, 18h29
  2. nom par défaut des étiquettes des contrôles
    Par s.rais dans le forum IHM
    Réponses: 3
    Dernier message: 03/12/2007, 23h55
  3. Code par défaut des pages ASPX
    Par zooffy dans le forum Visual Studio
    Réponses: 9
    Dernier message: 13/05/2007, 14h40
  4. Réponses: 5
    Dernier message: 05/10/2006, 19h07
  5. Focus par défaut des alert() , confirm() et prompt()
    Par NoT dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/03/2006, 11h30

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