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

PowerAMC Discussion :

Power AMC definir le nom des contraintes par defaut


Sujet :

PowerAMC

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Power AMC definir le nom des contraintes par defaut
    Bonjour,

    Mes Refrences ont des noms de contrainte par defaut de cette facon:
    FK_<nom table>_REFERENCE_<nom table>
    Comment puis je changer la generation des nom de contrainte par defaut ?

    Merci

  2. #2
    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 AAAWBBBWCCC,


    Je comprends votre problème, car j’y ai été confronté, aussi ai-je décidé de creuser. Je vous fait part des résultats de mes recherches...

    A titre d’exemple, J’ai une table Boisson et une table Entree entre lesquelles est établie une relation nommée FaireEntrer :





    Génération SQL (Microsoft SQL Server 2000) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     Create Table Boisson (
       IdBoisson            Int                  Not null,
       NomBoisson           Varchar(48)          Not null,
       Constraint PK_Boisson Primary Key  (IdBoisson)
    );
    
    Create Table Entree (
       IdBoisson            Int                  Not null,
       IdEntree             Int                  Not null,
       Date                 Datetime             Not null,
       Quantite             Int                  Not null,
       Constraint PK_Entree Primary Key  (IdBoisson, IdEntree),
       Constraint FK_Entree_Faireentr_Boisson Foreign Key (IdBoisson)
          References Boisson (IdBoisson)
             On Delete Cascade
    );
    Le nom de contrainte FK_Entree_Faireentr_Boisson ne me convient pas, je souhaite faire disparaître les 3 premiers caractères "FK_"

    Je procède ainsi :

    1) Barre d’outils \ SGBD \ Éditer le SGBD courant (Microsoft SQL Server 2000).

    Dans l’arborescence, clic sur Script \ Objects \ Reference \ ConstName ce qui provoque l’affichage du modèle de nom de contrainte généré pour l'instruction "Create Table Entree" :





    2) Je vire les 3 premiers caractères, comme souhaité.





    3) quand PowerAMC pose la question :





    Prudemment, je réponds Non.
    Je pense que si vous répondez Oui, vous avez intérêt à d’abord sauvegarder le fichier de ressources concerné...
    Ayant répondu Non, j’ai observé qu’en sauvegardant le MPD puis en l’ouvrant à nouveau, les modifs sont toujours actives. En revanche, quand je ferme PowerAMC, elles sont perdues.

    Plus avant. Je raffine mes options...

    =>

    Déchiffrage de la chaîne de caractères "FK_%.c8:CHILD%_%.c9:REFR%_%.c8:PARENT%"

    Par référence aux paramètres dans l’aide :

    "FK_" : Constante

    "%.c8:CHILD%" : ".c8:" signifie : Initiale en majuscule et les lettres suivantes en minuscules, à concurrence de 8 caractères maxi (cf. référence (2) ci-dessous).

    "CHILD" Variable utilisée pour générer le nom de la table enfant (en l’occurrence : Entree). (cf. référence (1)).
    Comme l’initiative de l’outil ne me convient pas, parce que je veux voir une génération de code SQL avec très exactement les majuscules et minuscules que j’ai choisies, j’élimine la mise en forme en codant ainsi :
    "%CHILD%" au lieu de "%.c8:CHILD%".

    "_" : Constante

    "%.c9:REFR%" : Code généré pour la référence FaireEntrer : "Entree_Faireentr". (cf. référence (1)). Je remplace par "%REFRNO%", car je peux ainsi numéroter les contraintes plutôt que les nommer, ce qui n’est pas inutile quand il en existe plus d’une entre 2 tables (nomenclatures par exemple) et que l’on n’a pas envie de voir figurer le nom de la contrainte.

    "%.c8:PARENT%" : Code généré pour la table parent. (cf. référence (1)). Comme pour CHILD, je vire ".c8:"

    Puis je permute "%REFRNO%" et "%PARENT%". Au final, la contrainte

    FK_Entree_Faireentr_Boisson

    est devenue la suivante :

    Entree_1_Boisson


    Modèle final de nom de contrainte :






    Références de l’aide en ligne :

    (1) PowerAMC MPD - Guide de l'utilisateur \ CHAPITRE 14. Variables dans PowerAMC \ Liste des variables de PowerAMC \ Variables de référence.

    (2) PowerAMC MPD - Guide de l'utilisateur \ CHAPITRE 14. Variables dans PowerAMC \ Liste des variables de format de PowerAMC.


    A vous de jouer !
    (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.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut constname
    Si la l'élément constname n'apparait pas, faite un clic droit sur Référence -> Ajouter des éléments... -> Cochez constname

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    J'ai le même problème de nommage des contraintes, mais j'utilise PowerAMC v6.

    Est ce que quelqu'un sait faire cette manipulation avec cette version de PowerAMC ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Je suis sur Power AMC 12. Et j'ai le même problème.

    Je n'arrive pas à trouver:
    Barre d’outils \ SGBD \ Éditer le SGBD courant (Microsoft SQL Server 2000).
    ni
    faite un clic droit sur Référence -> Ajouter des éléments... -> Cochez constname

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut
    C'est parfait c'est ce que je cherchais ...

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 126
    Points : 155
    Points
    155
    Par défaut Modifier la valeur des references dans PowerAMC
    Bonjour,

    Je cherche à modifier l'affichage des references aussi via ConstName.

    Je souhaite avoir : NomCléCible = NomCléSource.

    J'ai testé : %.U8:CHILD%(%PKEYCOLUMNS%) = %.U8ARENT%(%FKEYCOLUMNS%) mais ça ne fonctionne pas.

    Coment faire ?

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

    Il y a comme un hiatus : vous évoquez le nom des clés, tandis que le paramètre PKEYCOLUMNS permet de préciser la liste des noms des colonnes composant la clé primaire d’une table (et que le paramètre FKEYCOLUMNS permet de préciser la liste des noms des colonnes composant une clé étrangère pour cette table).

    Pourriez-vous donner un exemple précis de ce que vous attendez ?
    (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.

  9. #9
    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
    N.B. La doc en ligne donne pas mal d'informations.
    (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. #10
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 126
    Points : 155
    Points
    155
    Par défaut
    Bonjour,

    Merci fsmrel pour la documentation.

    Je souhaite changer l'affichage des références entre deux tables.

    Exemple :
    TABLE1 (Clé1, Libellé,...)
    TABLE2 (Clé2, Libellé, ....)

    Actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FK_%.c8:CHILD%_%.c9:REFR%_%.c8:PARENT%
    Ce qui donne :
    FK_TABLE1_REFR_TABLE2
    Je souhaite avoir un affichage simple et précis des clés qui sont utilisés pour les jointures entre les tables. Pour obtenir un résultat de ce genre :
    Clé1 = Clé2
    Faut-il utilisé la notion suivante ?
    %PKNAME% = %PKNAME%
    ou bien préciser les tables en jeux ?
    %CHILD%(%PKNAME%) = %PARENT%(%PKNAME%)
    Merci par avance

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Deux problèmes avec les solutions que vous proposez :

    • %PKNAME% ne donne rien pour moi.
    • Ce que vous cherchez, "TABLE1(CLE1) = TABLE2(CLE1)" n'est pas un nom de référence valide. Elle génèrerait le script sql :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      alter table TABLE2
         add constraint TABLE1(CLE1) = TABLE2(CLE1) foreign key (CLE1)
            references TABLE1 (CLE1)


    De plus, ce n'est pas comme ça que fonctionne les clés étangères.
    Ce que vous aurez au final, ce n'est pas :
    TABLE1(Clé1, Libellé)
    TABLE2(Clé2, Libellé)
    mais ceci :
    TABLE1(Clé1, Libellé)
    TABLE2(Clé2, Libellé, Clé1)

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 126
    Points : 155
    Points
    155
    Par défaut
    Merci shadelv.

    Comment faire alors ?

  13. #13
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Dans la V12.5, au moment de générer le MPD, sélectionner l'onglet détail.
    Par défaut, PowerAMC utilise le template qu'en cas de conflit, et celui-ci est bien insuffisant car ne reprend que 3 lettres de la table parent.

    Sélectionner l'option "Toujours utiliser un template" et remplacer le template %.3: PARENT%_%COLUMN% par %PARENT%_%COLUMN% permettra d'avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TABLE2 (TABLE1_Clé1, Clé1, Libellé)
    On peut utiliser aussi %PROLE%_%COLUMN% s'il y a plusieurs liens entre les deux tables. Ça donnerait :

    MCD avec TABLE2 dépendante de l'autre sur ses deux lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    +---------+  RoleA1    RoleA2  +---------+
    | TABLE1  | ------------------ | TABLE2  |
    +---------+     RelationA      +---------+
    | Clé1    |     RelationB      | Clé1    |
    | Libellé | ------------------ | Libellé |
    +---------+  RoleB1    RoleB2  +---------+
    MPD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TABLE1 (Clé1, Libellé)
    TABLE2 (RoleA1_Clé1, RoleB1_Clé1, Clé1, Libellé)

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 126
    Points : 155
    Points
    155
    Par défaut
    Merci beaucoup shadelv.
    Je vais tester ça des que possible

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 126
    Points : 155
    Points
    155
    Par défaut
    Je viens de remarqué que je n'avais pas poster ma solution. Je ne suis pas passer par une modification du code d'affichage mais un truc plus simple :

    Actuel : FK_<nom table>_REFERENCE_<nom table>
    Apres : CLE = CLE

    Etapes :
    - Être sur son diagramme
    - Click Droit
    - Préférence d'affichage
    - Général \ Référence
    - Contenu \ Centre
    - Choisir : Jointure à la place de "Nom de Contrainte"

    Bien sûr, il faut avoir renseigné les colonnes de la table enfant et père.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2009, 11h39
  2. Nom des contraintes
    Par heidi28 dans le forum SQL
    Réponses: 2
    Dernier message: 01/12/2008, 19h23
  3. retrouver les noms des contraintes d'une table
    Par Agoye dans le forum Access
    Réponses: 1
    Dernier message: 12/12/2007, 23h40
  4. Réponses: 4
    Dernier message: 30/05/2006, 17h21
  5. passage nom des contraintes de MPD au script de création BD
    Par marièmdiaw dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 14/01/2005, 13h18

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