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 :

Index non générés lors de la création du MPD


Sujet :

PowerAMC

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 14
    Points
    14
    Par défaut Index non générés lors de la création du MPD
    Bonjour,

    Je fais face à un souci assez embarrassant. Lorsque j'essaye de générer mon MDP à partir de mon MLD, PowerAMC ne crée aucun index pour les clés primaires et les clés étrangères.
    Je ne peux pas dévoilé le schéma ici (oui je sais ça n'aide pas du tout et c'est assez tordu de ma part) car il s'agit du site d'un client et il ne s'agit pas d'un site "simple".
    En fait j'ai de forts doutes sur la véracité de mon MCD ou MLD pour une partie précise de celui-ci.

    Pour faire simple, il y a trois associations multiples (0.N) qui possèdent trois relations chacune que j'ai moi-même transformé en tables car l'une des trois clés étrangères qui formait la clé primaire peut devenir nulle après suppression de l'entrée correspondante (ON DELETE SET NULL).
    Étant donné que je ne pouvais pas non plus établir la clé primaire sur les deux autres clés étrangères (car la paire peut ne pas être unique), j'ai donc crée une clé primaire spécifique à cette table.
    À partir de là, le MPD est généré normalement et PowerAMC fait le lien entre mon MCD, MLD et MPD mais ne crée par contre aucun index (comme expliqué plus haut).

    Je pourrais crée les index manuellement mais le problème est que lorsque j'apporte des modifications sur le MCD ou MLD et que je fusionne le MPD généré avec celui déjà établi, je pers à nouveau tous les index.

    Si quelqu'un a une idée du pourquoi du comment j'en serais très reconnaissant.

    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 Rastaa_html,


    Quelle est votre version de PowerAMC ?

    Générez directement le MPD à partir du MCD. Effectuez une vérification de celui-ci (touche F4 sous Windows).

    Avez-vous vérifié les options de génération ? Cf. ci-dessous :

    Onglets : SGBD > Générer la base données


    (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
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Bonjour fsmrel et merci d'avoir pris le temps de répondre

    J'ai en effet oublié de spécifier la version et il s'agit donc de la version 15.1.

    J'ai donc vérifié les options de génération et il semblerait que tout soit coché normalement (enfin je suppose...).
    Pour clé étrangère->création de clé étrangère, l'option choisie est externe et
    pour index, les deux cases concernant la création et suppression sont cochées.

    J'ai par ailleurs procéder comme vous l'aviez suggéré, en générant le MPD directement à partir du MCD et là, les index sont bien ajoutés mais il n'arrive pas à établir mon ancien MPD comme modèle cible afin de pouvoir les fusionner. J'ai donc bien peur qu'une modification sur mon MCD fera en sorte que je doive encore me retaper tout le travail que j'ai déjà effectué sur mon MPD.

    Auriez-vous une idée de la cause de cette non création d'index ?

    Encore merci pour votre aide précieuse.

  4. #4
    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
    Bonjour,


    Concernant les clés étrangères, êtes-vous bien dans cette configuration ?


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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Rebonjour,

    Oui, la configuration est identique à celle que vous indiquez.

  6. #6
    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
    Et le fitre d'index « Clé étrangère » est bien coché ?


    (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. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    En effet ce n'était pas coché. Quelle sera la conséquence une fois que je l'aurai coché. J'ai un peu peur de générer à nouveau le MPD je me suis coltiné tout le travail d'actualisation et ça m'a gâché une heure tout à l'heure. Faut dire que ça m'a déjà retardé plus qu'il n'en faut.

    Voici au cas où, l'ensemble de mes options :

    Nom : prop.png
Affichages : 1472
Taille : 27,4 Ko

    Encore merci

  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
    Pour ne pas ficher la zoubia, faites comme ci-dessous : changez le nom du script à générer, cochez la case filtre et regardez si les instructions CREATE INDEX sont bien présentes dans le nouveau script.


    (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
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Je ne savais pas que "zoubia" a fait son entrée dans la langue française (et franchement avec la zoubida, on est à deux doigts du cliché )

    Quoi qu'il en soit, désolé pour la réponse tardive.

    Pour revenir au sujet,il y a un truc bizarre qui se passe au niveau des options. Je n'arrive pas à avoir et Clé étrangère->Création de clé étrangère et Index->Filtre d'index->Clé étrangère cochés en même temps. L'une décoche forcément l'autre.

    L'autre chose bizarre, est le fait que si la case Index->Filtre d'index->Clé étrangère est cochée, les contraintes ne sont pas générées au niveau SQL.
    Je commence donc à vraiment perdre le fil...

    Je songe vraiment à tout refaire parce que là ça s'apparente de plus en plus à un patchwork et du rafistolage qu'à un vrai travail propre. Le seul truc, c'est que j'ai peur de tout refaire et d'aboutir au même problème.
    Pour l'instant, à chaque fois que j'actualise un de mes schémas, je fais la même chose manuellement pour tout le reste.

    Donc y a-t-il vraiment une solution ou est-ce que le problème vient de moi ?

    Edit : Je profite encore de votre gentillesse et de vos connaissances, vu que je lis souvent vos interventions concernant PowerAMC sur ce forum. Je n'ai toujours pas compris comment ajouter de manière simple la contrainte unique à un champ sans forcément l'indexer ?

  10. #10
    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 Rastaa_html,


    Citation Envoyé par Rastaa_html
    Je n'arrive pas à avoir et Clé étrangère->Création de clé étrangère et Index->Filtre d'index->Clé étrangère cochés en même temps. L'une décoche forcément l'autre.

    Si la case Index->Filtre d'index->Clé étrangère est cochée, les contraintes ne sont pas générées au niveau SQL.
    Pour que les contraintes référentielles (clés étrangères) soient générées, il est impératif que la 1re condition soit remplie :

    Clé étrangère est à cocher :





    Et pour que les index dédiés aux clés étrangères soient déclarés (CREATE INDEX), il est impératif que la 2e condition soit remplie elle aussi : « Index » coché ainsi que « Filtre sur clé étrangère » .






    Maintenant, vos index sont-ils correctement déclarés, à l’instar de l’index EMPLOYE_SERVICE_FK_X ci-dessous ?










    Citation Envoyé par Rastaa_html
    Je n'ai toujours pas compris comment ajouter de manière simple la contrainte unique à un champ sans forcément l'indexer ?
    Je suppose que vous avez défini une contrainte unique symbolisée par le mickey <ak>, à l’image de la contrainte EMPLOYE_AK (cf. MPD ci-dessus). Vous pouvez sélectionner l’index EMPLOYE_AK_X associé et le supprimer à l’aide de la touche de fonction « Suppr », mais les conséquences sont imprévisibles car, d’une manière générale, les SGBD garantissent l’unicité des clés non pas par du code, mais par l’affectation sous le capot d’un index de type UNIQUE, y a pas le choix (fainéantise oblige). On voit très bien cela en examinant le contenu du catalogue relationnel du SGBD.

    Exemple avec PostgreSQL :

    
    SET SCHEMA 'public' ;
    
    CREATE TABLE SERVICE 
    (
       serviceNo            INT NOT NULL,
       serviceNom           VARCHAR(24) NOT NULL,
       serviceBudget        INT NOT NULL,
       CONSTRAINT SERVICE_PK PRIMARY KEY (serviceNo)
    ) ;
    
    CREATE TABLE EMPLOYE 
    (
       employeNo            INT NOT NULL,
       serviceNo            INT NOT NULL,
       employeNom           VARCHAR(24) NOT NULL,
       employeSalaire       INT NOT NULL,
       CONSTRAINT EMPLOYE_PK PRIMARY KEY (employeNo),
       CONSTRAINT EMPLOYE_AK UNIQUE (employeNom),
       CONSTRAINT EMPLOYE_SERVICE_FK FOREIGN KEY (serviceNo)
          REFERENCES SERVICE
    ) ;
    
    CREATE TABLE COURRIEL 
    (
       courrielNo           INT NOT NULL,
       employeNo            INT NOT NULL,
       courrielDate         DATE NOT NULL,
       courrielTexte        VARCHAR(64) NOT NULL,
       CONSTRAINT COURRIEL_PK PRIMARY KEY (courrielNo),
       CONSTRAINT COURRIEL_EMPLOYE_FK FOREIGN KEY (employeNo)
          REFERENCES EMPLOYE
    ) ;
    
    CREATE INDEX COURRIEL_EMPLOYE_FK on COURRIEL (employeNo ASC) ;
    
    CREATE INDEX EMPLOYE_SERVICE_FK_X on EMPLOYE (serviceNo ASC) ; 
    
    

    Contenu du catalogue :

    
    SELECT tablename, indexname
    FROM   pg_indexes  where schemaname = 'public' and tablename in ('service', 'employe', 'courriel') 
    ORDER BY tablename
    ;
    
    
    =>

    
    tablename     indexname
    ---------     --------------------
    courriel      courriel_pk
    courriel      courriel_employe_fk
    employe       employe_pk
    employe       employe_ak
    employe       employe_service_fk_x
    service       service_pk
    
    

    Si on tente la suppression de l’index EMPLOYE_AK :

    
    DROP INDEX EMPLOYE_AK ; 
    
    
    Alors c’est macache oualou, plus une astuce débile de la part de PostgreSQL :

    Citation Envoyé par PostgreSQL
    ERREUR: n'a pas pu supprimer index employe_ak car il est requis par contrainte employe_ak sur table employe.
    État SQL :2BP01
    Astuce : Vous pouvez supprimer contrainte employe_ak sur table employe à la place.
    (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.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Bonjour fsmrel et encore merci de consacrer du temps pour répondre à mon sujet.

    Là tout de suite je suis passé au dev de la partie front du site donc je me suis un petit peu éloigné du problème initial.
    En fait, j'ai actualisé mon MCD par contrainte afin de répondre à certains besoins et la BDD a été finalisée. J'ai donc généré mon MLD, puis mon MPD et tout s'est normalement passé. Le SQL généré était également bon donc je n'ai pas eu vraiment à essayer ce que vous m'avez dit mais dès que j'aurais le temps, je me pencherai à titre personnel sur ce cas (le sujet reste en suspend [?]).

    Concernant la création de contrainte unique, je pense que j'ai dû manquer de clarté (ou alors vous avez bien saisi la chose, je ne sais pas) car en fait il ne s'agit pas de création d'index mais tout le contraire.
    La méthode que j'utilisais est bien celle que vous décrivez, i.e en passant par la création d'une clé alternative. Cependant, comme vous le dites, c'est loin d'être approprié.
    Ce que j'aurais souhaité, c'est qu'en fait il n'y ait qu'une "simple" contrainte unique qui aboutirait à un SQL du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE table
    (
       id                	int not null auto_increment,
       libelle              varchar(255) not null unique,
       primary key (id)
    );
    Mais j'ai franchement l'impression que PowerAMC ne fait pas cela. Me trompé-je ?

    PS : "macache oualou" C'est festival

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 19
    Points
    19
    Par défaut icnclusion de l'index
    Bonjour,
    je suis nouveau dans les bases de données et dans l'utilisation de PowerAMC. j'ai fait un MCD que vous verrez en pièces jointes mais lorsque je génère la base de donnée il y'avait d'abord l'erreur "vérifier l'existence de l'index" après avoir suivi les étapes que j'ai vu sur l'une des discussion sur ce forum l'erreur est maintenant " vérifier l'inclusion de l'index"
    besoin d'aide merci.
    Nom : inclusion de l'index.gif
Affichages : 1690
Taille : 67,3 KoNom : probleme d'index.gif
Affichages : 1367
Taille : 45,8 KoNom : probleme poweramc.gif
Affichages : 1573
Taille : 64,6 Ko

Discussions similaires

  1. Réponses: 11
    Dernier message: 14/02/2014, 13h29
  2. [Débutant] Exe non généré lors du build
    Par MrSlave dans le forum C#
    Réponses: 4
    Dernier message: 27/12/2012, 14h42
  3. Réponses: 2
    Dernier message: 19/11/2008, 06h09
  4. [ASE]Création d'un index non clusterisé
    Par Mehdi3 dans le forum Sybase
    Réponses: 2
    Dernier message: 13/04/2006, 11h18
  5. Réponses: 7
    Dernier message: 22/02/2005, 13h07

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