Domanda

Di recente ho ereditato il lavoro di gestione di un database che non è stato progettato molto bene e i progettisti non sono disponibili a porre domande. E ne ho altri un paio in arrivo nel prossimo futuro.

È stato difficile cercare di capire le relazioni tra le tabelle senza alcun tipo di aiuto visivo o diagramma del database.

Mi chiedevo quali strumenti sono raccomandati per questo. Conosco Visio, ma speravo che esistessero alcune buone applicazioni open source / freeware. Non ne ho bisogno per cambiare il database. Basta leggerlo e creare una sorta di aiuto visivo per aiutarmi a capire come sono disposte le cose e provare a capire cosa stesse pensando il progettista su come i dati dovrebbero essere correlati.


Dati di risposta aggiuntivi: SchemaSpy era il tipo di cosa che stavo cercando, ma non avendo fatto molto con la riga di comando da anni, ho scelto di usare SchemaSpyGUI . C'era anche qualche configurazione a cui abituarsi poiché non lavoro molto con Java, ma il risultato finale è stato quello che stavo cercando (sulla sostituzione open source per i diagrammi ER di Visio).

È stato utile?

Soluzione

Prova SchemaSpy . L'ho eseguito su un database piuttosto complesso e sono rimasto piuttosto soddisfatto del risultato, con consigli sull'ottimizzazione.

Altri suggerimenti

Prova DBVis - scarica da http://www.minq.se/products/dbvis/ : esiste una versione pro (non necessaria) e una versione aperta che dovrebbe essere sufficiente.

Tutto quello che devi fare è ottenere il giusto JDBC - driver del database, lo strumento mostra tabelle e riferimenti ortogonali, gerarchici, in un cerchio ;-) ecc. semplicemente premendo un solo pulsante. Buon divertimento!

Quale DBMS (Database Management System) stai usando? Molti DBMS moderni come SQL Server e Access possono creare un diagramma E-R per te.

Microsoft Visio è uno strumento eccellente e può decodificare SQL da qualsiasi origine dati.

DDT (Database Design Tool) può decodificare da SQL raw su Windows ed è molto leggero (download gratuito molto piccolo).

MySQL Workbench è uno degli strumenti MySQL più popolari e ha una versione scaricabile gratuitamente.

SQLFairy può fare lo stesso per MySQL su Linux.

dbdesc non è gratuito, ma ne ho sentito parlare molto bene. Funziona con molti dei principali database disponibili.

Sono stato fortunato a non aver ancora dovuto decifrare gli schemi di database di altre persone. Ho usato una serie di modelli forniti con CodeSmith .

In primo luogo, posso dire che sento il tuo dolore!
Ecco un paio di consigli:

  1. In generale, uno strumento sarà utile solo se i progettisti hanno definito correttamente tutte le chiavi primarie ed esterne, quindi tieni presente che uno strumento potrebbe non rilevare tutte le relazioni importanti.
  2. La cosa più utile è vedere quali query vengono eseguite dal codice client. Questo ti dirà non solo quali relazioni esistono, ma quali tabelle e relazioni sono le più utilizzate - è lì che vorrai concentrare i tuoi sforzi.

Esiste un po 'di software open source, ma lo strumento di Visio Professional per gli schemi di database di reverse engineering è abbastanza buono perché disaccoppia il processo di reverse engineering e diagrammi. Lo uso molto perché tende a essere facilmente disponibile nella maggior parte dei siti.

Una caratteristica interessante di visio è che puoi decodificare e quindi costruire i tuoi diagrammi dallo schema retroingegnerizzato. Fare questo è un ottimo modo per esplorare lo schema e comprenderlo mentre stai facendo questo lavoro come parte della costruzione interattiva di un documento di riferimento per lo schema. Ho usato questa tecnica per decodificare tutto da Sistemi di determinazione del costo basati sulle attività a < a href = "http://www.roomsolutions.net/insurance-software/policy-administrator-system/subscribe.aspx" rel = "nofollow noreferrer"> Sistemi di sottoscrizione assicurativa , generalmente senza molto aiuto da parte del venditore . Armeggiare con i diagrammi di Visio è abbastanza rilassante.

Tra questo e un piccolo test di ipotesi sulle relazioni FK (se l'FK non è fisicamente presente sul tavolo) puoi dare un senso a schemi abbastanza complessi. Ho scoperto che questo approccio di diagrammi rende Visio un leader di testa e spalle perché puoi facilmente interagire con il modello a ingegneria inversa in un modo abbastanza conveniente. È possibile compilare le chiavi esterne mancanti, creare diagrammi dell'area argomenti e aggiungere annotazioni sui diagrammi. L'interattività di questo processo lo rende un buon strumento di apprendimento.

Questa è una visione un po 'soggettiva ma l'interattività funziona molto bene come un processo di apprendimento per me ed è di gran lunga il mio approccio preferito. La maggior parte dei siti non ti disprezzerà per circa £ 300 per una licenza, se non l'hanno già disponibile. L'unico sito in cui abbia mai lavorato dove dovevano trovarlo era perché avevano Visio Standard invece di Pro. Ho chiesto bene e il PHB l'ha firmato.

Uso mysql workbench ( http://www.mysql.com/products/workbench/ ) per i database mysql. Puoi collegare il workbench al tuo database e disegnerà il digram ER per te.

Usando pgsql / win32 ho scoperto che la soluzione più semplice era scrivere uno script perl che usasse Graph :: Easy da CPAN. Eseguire una query sul database per le relazioni di chiave esterna, creare un grafico diretto con tabelle come nodi e relazioni FK come collegamenti. Se questa è la tua configurazione, posso pubblicare il codice.

Mi piace provare a vedere se le applicazioni che usano il database hanno modi di registrare l'SQL che usano (o il back-end DB stesso, ma tende ad essere meno trattabile). Avere un'idea delle richieste eseguite sul database ti aiuta a concentrarti sulle tabelle importanti.

Come per la maggior parte delle cose, qui si applica la regola 80/20: il 20% dei tavoli farà l'80% delle cose interessanti. Una volta individuati, raramente è necessario un diagramma.

Guarda le principali relazioni chiave esterna che sono state impostate come punto di partenza.

Dal momento che un database senza diagrammi esistenti, potrebbe non avere relazioni formalmente impostate, guardo le strutture e i nomi delle tabelle e faccio le mie ipotesi su cosa potrebbe essere correlato a cosa, quindi scavo nelle strutture per vedere se ci sono chiavi esterne ovvie (ma non definite). Guardo i proc memorizzati per avere un'idea di come le tabelle vengono unite e su quali campi vengono interrogati.

Mentre gli strumenti automatizzati per capire il database possono essere spiffy, trovo che quando scavo davvero nei dettagli del database stesso, finisco con una comprensione molto migliore di quella che posso ottenere da qualsiasi immagine creata automaticamente.

Ho una buona esperienza con Aqua Data Studio per il reverse engineering di uno schema DB. È molto ricco di funzionalità e supporta database ancora più esotici come Informix o Sybase.

Questo mi ha aiutato a generare i diagrammi ER su MS SQL Server 2012:

MS SQL Server management Studio > Menu File > " Connect Object Explorer " Scegli il nodo del database ed espanderlo. sotto questo nodo troverai un sotto-nodo chiamato " Diagrammi database " Fai clic con il pulsante destro del mouse su " Diagrammi database " & Gt; " Nuovo diagramma del database " & Gt; Aggiungi tabelle che desideri vedere le loro colonne, relazioni, ...

Usa Visio. Se si utilizza Vision 2010, sarà necessario utilizzare il provider OLEDB generico per SQL Server per assicurarsi che non ci siano problemi con la connessione al driver Visio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top