Comment générer un diagramme d'un schéma de base de données très grand (SQL Server)

j'ai une très grande base de données j'ai besoin de diagramme. La base de données est SQL Server 2008 sur x64. Il est grand en ce qu'il y a des centaines de tables liées, chacune avec jusqu'à 2000 champs (certains sont clairsemés), les relations multiples entre les tables (souvent des centaines par table, en fait), les schémas multiples... vous obtenez l'idée.

j'ai essayé D'utiliser la fonctionnalité de diagrammes de base de données de SQL Server Management Studio, mais il s'est écrasé avec une Win32Exception: "pas assez de stockage est disponible pour traiter ce commande..."

J'ai essayé D'utiliser la fonction de rétroingénierie de Visio sur une autre machine pour la connecter et la schématiser, mais cela dure depuis quelques heures sans aucun signe d'achèvement.

Les scripts pour construire ce géant de schéma sont un outil que nous avons construit pour le travail. Alors que l'outil fait son travail très bien, il est difficile de visualiser sa sortie.

je suis à la recherche d'un outil pour lancer un diagramme de cette base de données afin que nous puissions le faire. Tout des suggestions?

modifier: Juste pour souligner, le diagramme n'est en effet pas censé être utilisé pour la référence utile réelle. Il s'agit d'un outil de gestion des relations avec la clientèle qui permet de démontrer la complexité et l'échelle du système.

12
demandé sur tomfanning 2010-08-17 18:01:21

8 réponses

générer une image de n'importe quelle sorte pour une base de données de cette taille devient tout simplement des bonbons pour les yeux qui sont collés sur un mur qui dessine des halètements, et honnêtement ne sert à rien d'autre que des regards occasionnels. Pourquoi ne pas utiliser un outil comme outil de Documentation de Red Gate qui servira un but réel? S'il vous plaît comprendre que je ne dis pas cela d'une manière moqueuse, mais j'ai été sur cette route avant d'essayer de dessiner une énorme base de données, et j'ai réussi à un certain degré, mais jamais trouvé une bonne prise où il a été de quelque utilité.

9
répondu kd7 2010-08-17 14:05:46

j'ai travaillé à un endroit qui avait plusieurs centaines de tables (près de 1k) et personne ne savait vraiment ce qui se passait dans le système, l'entreprise était en croissance et l'embauche beaucoup. Un type a été chargé de faire un diagramme, et il a auto-magiquement créé un poster en carreaux gigantesques qui contenait chaque table avec des lignes reliant les différentes tables (allant partout). Je ne suis pas sûr de ce qu'il utilisait, C'était Unix et Oracle il y a des années (bien avant Linux et open source). Il n'y avait pas de véritable rime ou raison à la disposition de les tableaux de son diagramme. Il avait réussi à créer un diagramme de chaque table. L '"affiche" a été placée sur un mur dans une zone commune, et a obtenu quelques regards, mais personne ne l'a jamais vraiment utilisé, il était inutilisable, trop encombré, trop non organisé. En conséquence, J'ai utilisé MS-Word pour créer un diagramme d'une page contenant les 20 tables principales (il est passé par quelques itérations que je "découvert" de nouvelles tables principales) avec des lignes pour chaque clé étrangère et chaque table située d'une manière logique. J'ai montré le nom de la colonne, type de données, nullabilité, PK, et tous les FK. J'ai mis mon schéma sur mon mur par mon moniteur. Finalement tout le monde a voulu une copie de mon diagramme, y compris la personne qui a fait le "poster". Quand j'ai quitté ce travail, ils donnaient encore mon diagramme aux nouveaux employés.

je vous recommande de travailler comme un explorateur, de trouver les tables clés et de les cartographier au fur et à mesure, en faisant autant de diagrammes spécifiques que nécessaire au fur et à mesure que vous découvrez le système. Essayer de faire un gigantesque "poster" automatiquement ne fonctionnera pas très bien.

12
répondu KM. 2010-08-17 14:12:14

Puisque vous avez plusieurs schémas peut-être une bonne idée est de générer des diagrammes par schéma à la place

2
répondu SQLMenace 2010-08-17 14:06:23

utilisez graphviz. Utilisez quelques instructions SQL pour générer le digramme, puis lancez-le à travers le point.exe pour générer un PDF ou PNG.

Je l'ai utilisé pour générer des digrammes de données dans les tables SQL Server. Aucune raison de l'utiliser pour les tables aussi.

http://www.graphviz.org/

il y a aussi des utilitaires java, silverlight et AJAX pour la navigation de très grands graphiques, car PDF n'est que pour une page.

2
répondu David Roussel 2010-08-17 14:23:08

j'éviterais de faire toute la chose dans un seul diagramme. Comme vous l'avez mentionné, les outils s'écrasent, et il n'est probablement pas possible de comprendre facilement un diagramme avec des centaines de tables avec potentiellement des milliers d'enregistrements par table. Pouvez-vous générer des diagrammes de petites zones logiques avec un certain chevauchement à d'autres zones logiques?

alternativement, vous pouvez essayer d'utiliser quelque chose comme graphviz pour analyser les déclarations DDL et ensuite produire un graphique. Il va probablement tourner pendant un certain temps, mais je rappelez-vous avoir vu dans une université des diagrammes de la taille d'une affiche avec des petits caractères, qui étaient probablement de la même complexité que le vôtre. Bonne chance!

0
répondu FrustratedWithFormsDesigner 2010-08-17 14:05:51

FWIW, en supposant que vous voulez aller de l'avant avec cela, j'ai personnellement trouvé que le modeleur de base de données visual studio 2010 fait les plus beaux diagrammes que j'ai rencontrés jusqu'à présent - il suffit d'importer votre base de données comme si vous alliez l'utiliser pour Linq2SQL

0
répondu Basic 2010-08-17 14:07:54

schemaspy fournit une interface pratique pour générer des diagrammes interactifs qui couvrent plusieurs schémas en utilisant graphviz comme backend. Je ne l'ai jamais essayé sur quelque chose de cette taille.

0
répondu cs_alumnus 2016-03-24 21:27:52

IntelliJ (spécifiquement idée comme vient d'essayer avec ceci, mais je crois que leurs autres IDEs offrent cette fonctionnalité https://www.jetbrains.com/) a une fonction client de base de données intégrée, à partir d'ici vous pouvez vous connecter à votre base de données et analyser des tables individuelles, une combinaison ou une table spécifique ou toutes vos tables en mettant en évidence les tables désirées, en cliquant "droit" et en sélectionnant l'option "diagramme". Vous pouvez sauvegarder pour référence ultérieure et aussi imprimer. Je viens d'essayer ceci sur un grand DB de 500 + tables et il rendu en secondes, le diagramme vectoriel sert d'alternative pour digérer visuellement les structures de base de données et les relations et les contraintes entre certaines tables mais pas recommandé pour l'impression.

enter image description here

0
répondu Opentuned 2016-07-19 15:30:11