1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2018
    Messages : 1
    Points : 2
    Points
    2

    Par défaut Génère un diagramme de classes à partir d'une base de données

    j'ai utilisé Postgresql comme administration de base de données . J'ai cré des tables dans ma base de donné
    Je veux générer un diagramme de classes à partir de la base ou bien à partir su script sql .
    Est-ce qu'il y a des idées svp c'est urgent ?

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 245
    Points : 17 518
    Points
    17 518
    Billets dans le blog
    1

    Par défaut

    Bonjour

    Avec cette requête select schemaname, relname from pg_stat_user_tables order by schemaname, relname tu peux récupérer la liste des schémas et tables de ta base

    Avec celle là select column_name, data_type, character_maximum_length, numeric_precision, numeric_precision_radix, numeric_scale from information_schema.columns where (table_schema, table_name)=("schemaX", "tableY") order by ordinal_position tu récupères les colonnes d'une table Y placée dans un schema X

    Et avec cette dernière select pg_constraint.conrelid, pg_constraint.confrelid, pg_constraint.conkey, pg_constraint.confkey, t2.schemaname, t2.relname from pg_constraint inner join pg_stat_user_tables as t1 on (t1.relid=pg_constraint.conrelid) inner join pg_stat_user_tables as t2 on (t2.relid=pg_constraint.confrelid) where (pg_constraint.contype, t1.schemaname, t1.relname)=("f", "schemaX", "tableY") tu récupères les contraintes d'intégrité qui lient la table Y du schéma X aux autres tables.

    Avec tout ça tu peux créer ton diagramme de classes. Perso j'utilise graphviz. Mais je passe par un langage externe (Python) pour pouvoir interfacer Postgres (psycopg) et manipuler les informations récupérées par ces requêtes.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  3. #3
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 753
    Points : 41 430
    Points
    41 430
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Sve@r Voir le message
    Et avec cette dernière select pg_constraint.conrelid, pg_constraint.confrelid, pg_constraint.conkey, pg_constraint.confkey, t2.schemaname, t2.relname from pg_constraint inner join pg_stat_user_tables as t1 on (t1.relid=pg_constraint.conrelid) inner join pg_stat_user_tables as t2 on (t2.relid=pg_constraint.confrelid) where (pg_constraint.contype, t1.schemaname, t1.relname)=("f", "schemaX", "tableY") tu récupères les contraintes d'intégrité qui lient la table Y du schéma X aux autres tables.
    Plutôt que cette dernière utilisez les vues INFORMATION_SCHEMA qui sont la norme et non pg_constraint qui est spécifique.

    1) la liste des contraintes FK :
    SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

    2) la liste des colonnes utilisées par les contraintes
    SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE

    3) la liste des contraintes PK ou UNIQUE en référence
    SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE IN ('PRIMARY KEY', 'UNIQUE')


    Mais pour tout ceci il serait plus intéressant d'utiliser un outil qui fait cela tout seul comme Power AMC (rétro ingénierie).

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/12/2016, 13h13
  2. Réponses: 1
    Dernier message: 30/07/2013, 12h00
  3. Réponses: 2
    Dernier message: 17/08/2012, 13h59
  4. Réponses: 1
    Dernier message: 29/10/2006, 05h04

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