Question

J'ai récemment hérité du travail consistant à maintenir une base de données mal conçue et les concepteurs ne sont pas disponibles pour poser des questions. Et j'en ai encore deux qui vont arriver dans un avenir proche.

Il a été difficile d’essayer de comprendre les relations entre les tables sans aide visuelle ou diagramme de base de données.

Je me demandais quels outils sont recommandés pour cela. Je connais Visio, mais j'espérais qu'il existait de bonnes applications open source / freeware. Je n'en ai pas besoin pour changer la base de données du tout. Lisez-le simplement et créez une sorte d’aide visuelle pour m'aider à comprendre comment les choses se présentent et essayez de comprendre ce que le concepteur pensait de la manière dont les données doivent être mises en relation.

Données de réponse supplémentaires: SchemaSpy était le genre de chose que je recherchais, mais n'ayant pas beaucoup utilisé la ligne de commande depuis très longtemps, j'ai choisi d'utiliser SchemaSpyGUI . Il y avait aussi une configuration à laquelle il fallait s'habituer car je ne travaillais pas beaucoup en Java, mais le résultat final était ce que je cherchais (remplacement à code source ouvert des diagrammes ER de Visio).

Était-ce utile?

La solution

Essayez SchemaSpy . Je l’utilisais avec une base de données assez complexe et j’étais assez satisfait du résultat, avec des conseils d’optimisation.

Autres conseils

Quel SGBD (système de gestion de base de données) utilisez-vous? De nombreux SGBD modernes tels que SQL Server et Access peuvent créer un diagramme E-R pour vous.

Microsoft Visio est un excellent outil qui permet de procéder au reverse engineering de SQL à partir de n’importe quelle source de données.

DDT (outil de conception de base de données) peut procéder à un reverse engineering. de SQL brut sur Windows et est très léger (téléchargement gratuit très petit).

MySQL Workbench est l’un des outils les plus populaires de MySQL et sa version est librement téléchargeable.

SQLFairy peut faire la même chose pour MySQL sous Linux.

dbdesc n'est pas gratuit, mais j'ai entendu de très bonnes choses à ce sujet. Il fonctionne avec plusieurs des principales bases de données disponibles.

J'ai eu de la chance car je n'ai pas encore eu à déchiffrer les schémas de bases de données d'autres personnes. J'ai utilisé un ensemble de modèles fournis avec CodeSmith .

Tout d'abord, puis-je dire que je ressens votre douleur!
Voici quelques conseils:

  1. En général, un outil ne sera utile que si les concepteurs ont correctement défini toutes les clés primaires et étrangères. Soyez donc conscient qu'un outil peut ne pas prendre en compte toutes les relations importantes.
  2. Le plus utile est de voir quelles requêtes sont exécutées par le code client. Cela vous indiquera non seulement quelles sont les relations existantes, mais également quelles sont les tables et les relations les plus fréquemment utilisées. C'est là que vous voudrez concentrer vos efforts.

Il existe un peu de logiciels à code source ouvert, mais l'outil de reverse engineering de schémas de base de données de Visio Professional est plutôt bon car il dissocie le processus de reverse engineering et de création de diagrammes. J'utilise beaucoup cela parce qu'il a tendance à être facilement disponible sur la plupart des sites.

Une fonctionnalité intéressante de visio est que vous pouvez procéder à une ingénierie inverse, puis créer vos propres diagrammes à partir du schéma de reverse engineering. Faire cela est un très bon moyen d'explorer le schéma et de le comprendre au fur et à mesure que vous effectuez ce travail dans le cadre de la création interactive d'un document de référence pour le schéma. J'ai utilisé cette technique pour tout ingénierie inverse, des systèmes d'établissement des coûts par activité au < a href = "http://www.roomsolutions.net/surance-software/policy-administrator-system/subscribe.aspx" rel = "nofollow noreferrer"> systèmes de souscription à des assurances , généralement sans beaucoup d'aide de la part du fournisseur . Bricoler avec les diagrammes Visio est assez relaxant.

Entre ceci et un peu d’hypothèse sur les relations entre FK (si le FK n’est pas physiquement présent sur la table), vous pouvez donner un sens à des schémas assez complexes. J'ai trouvé cette approche de création de diagrammes qui fait de Visio un leader incontesté, car vous pouvez facilement interagir avec le modèle de conception inversée de manière assez pratique. Vous pouvez renseigner les clés étrangères manquantes, créer des diagrammes de domaine et ajouter des annotations aux diagrammes. L'interactivité de ce processus en fait un bon outil d'apprentissage.

C’est un point de vue quelque peu subjectif, mais l’interactivité me convient très bien comme processus d’apprentissage et c’est de loin mon approche préférée. La plupart des sites ne vous en veulent pas plus de 300 & # 160; une licence - s'ils ne l'ont pas déjà disponible. Le seul site sur lequel j'ai jamais travaillé était celui où ils utilisaient Visio Standard au lieu de Pro. J'ai demandé gentiment et le PHB l'a signé.

En utilisant pgsql / win32, la solution la plus simple était d’écrire un script Perl qui utilisait Graph :: Easy de CPAN. Interrogez la base de données sur les relations de clé étrangère, créez un graphique dirigé avec des tables en tant que nœuds et des relations FK en tant que liens. Si ceci est votre configuration, je peux poster le code.

J'aime essayer de voir si les applications qui utilisent la base de données ont des moyens de consigner le code SQL qu'elles utilisent (ou le système de base de données lui-même, mais cela a tendance à être moins facile à gérer). Comprendre les requêtes effectuées dans la base de données vous aide à vous concentrer sur les tables importantes.

Comme dans la plupart des cas, la règle des 80/20 s’applique ici: 20% des tables font 80% des choses intéressantes. Une fois que vous les avez compris, un diagramme est rarement nécessaire.

Examinez la relation de clé étrangère de clé primaire qui a été configurée comme point de départ.

Puisqu'une base de données dépourvue de diagrammes existants peut ne pas avoir de relations définies de manière formelle, je regarde les structures et les noms des tables et je devine de façon plus précise ce qui pourrait être lié à quoi, puis je fouille dans les structures pour voir s'il y en a. clés étrangères évidentes (mais non définies). Je regarde les procédures stockées pour avoir une idée de la façon dont les tables sont jointes et des champs interrogés.

Alors que les outils automatisés permettant de comprendre la base de données peuvent être compliqués, je constate que lorsque je me penche vraiment sur les détails de la base de données, je me retrouve avec une bien meilleure compréhension que toute image créée automatiquement.

Je connais très bien le Aqua Data Studio pour le reverse engineering d'un schéma de base de données. Il est très riche en fonctionnalités et prend en charge des bases de données encore plus exotiques comme Informix ou Sybase.

Cela m'a aidé à générer les diagrammes ER sur MS SQL Server 2012:

Studio de gestion MS SQL Server > Menu Fichier > "Connect Object Explorer" Choisissez votre nœud de base de données et développez-le. sous ce nœud, vous trouverez un sous-nœud appelé "Schémas de base de données". Cliquez avec le bouton droit de la souris sur "Diagrammes de base de données". > "Nouveau schéma de base de données" > Ajoutez les tables que vous souhaitez voir leurs colonnes, leurs relations, ...

Utilisez Visio. Si vous utilisez Vision 2010, vous devrez utiliser le fournisseur générique OLEDB pour SQL Server pour vous assurer que la connexion au pilote Visio ne posera aucun problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top