Unabhängig von der ** Neuentwicklung ** / ** Wartungsentwicklung ** ist es sehr wichtig, die Datenstruktur während der Systementwicklung zu verstehen. ** ER-Diagramm (E-R-Diagramm) ** ist nützlich zum Verständnis der Datenstruktur.
Es ist ein sehr nützliches ** ER-Diagramm **, aber wie bei allen Dokumenten tritt ** eine Abweichung von der Entität (dem Programm) ** auf.
Um eine "Dissoziation" zu vermeiden, versuchen wir, regelmäßig eine Synchronisation durchzuführen, aber nicht alle Mitglieder fordern die Entwicklung immer mit einem klaren Bewusstsein heraus. Die Dokumentation wird am Boden zerstört sein.
Nicht nur ** Dokumente und Programme **, sondern auch ** Dokumente und Datenbanken ** sind unterschiedlich.
** Die Definition der Datenbank (Tabelle, Index, Ansicht) **, die bereits als Dienst ausgeführt wird ** und des ** Dokuments ** sind unterschiedlich.
Der alte Weg, um mit der Diskrepanz zwischen ** Dokumenten ** und ** Programmen ** umzugehen, besteht darin, Dokumente aus dem Betrieb zu wecken (** umgekehrt **). ** Programm ** → ** Dokument ** und der Inhalt werden wiedergegeben.
Ebenso wäre es großartig, wenn der Inhalt als ** Datenbank ** → ** Dokument ** wiedergegeben werden könnte.
Ich mag die Kommandozeile.
Ich möchte meine Arbeit nach Möglichkeit ohne Maus beenden.
Im Gegensatz zu meinen Gefühlen erzwingen visuelle Dokumente wie ER-Diagramme die Mausbedienung.
Wenn Sie mit mehreren Personen entwickeln, ist ein Tool vorzuziehen, das ** Multi-Plattform ** unterstützt. ** Wenn es sich um ein Tool handelt, das nur unter Windows ausgeführt werden kann, konzentriert sich die Last auf einige Mitglieder. ** ** **
Ich bat um drei Punkte für das ER-Diagrammgenerierungswerkzeug.
Nachdem ich eine Weile gesucht hatte, fand ich ein Tool namens ** SchemaSpy **. Die Verwendung wird im Folgenden kurz zusammengefasst.
** SchemaSpy ** besteht aus Java, daher ist ** JRE ** erforderlich.
Wir verwenden ** JDBC-Wikipedia **, um eine Verbindung zur Datenbank herzustellen, und stellen eine Verbindung zu einer beliebigen Datenbank her, für die der JDBC-Treiber bereitgestellt wird. Ist möglich.
Type | Description |
---|---|
db2 | IBM DB2 with 'app' Driver |
db2net | IBM DB2 with 'net' Driver |
udbt4 | DB2 UDB Type 4 Driver |
db2zos | DB2 for z/OS |
derby | Derby (JavaDB) Embedded Server |
derbynet | Derby (JavaDB) Network Server |
firebird | Firebird |
hsqldb | HSQLDB Server |
informix | Informix |
maxdb | MaxDB |
mssql | Microsoft SQL Server |
mssql05 | Microsoft SQL Server 2005 |
mssql-jtds | Microsoft SQL Server with jTDS Driver |
mssql05-jtds | Microsoft SQL Server 2005 with jTDS Driver |
mysql | MySQL |
ora | Oracle with OCI8 Driver |
orathin | Oracle with Thin Driver |
pgsql | PostgreSQL |
sqlite | SQLite |
sybase | Sybase Server with JDBC3 Driver |
sybase2 | Sybase Server with JDBC2 Driver |
teradata | Teradata (requires -connprops) |
Bereiten Sie eine virtuelle Umgebung für die Überprüfung vor. Starten Sie ** Vagrant **.
$ echo '''\
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos7.1"
config.ssh.insert_key = false
config.vm.network "private_network", ip: "192.168.33.41"
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
end
''' > Vagrantfile
$ vagrant up
Melden Sie sich nach dem Booten bei der virtuellen Umgebung an.
$ vagrant ssh
Installieren Sie die gewünschte Anwendung.
#Installieren Sie JDK und Graphviz
$ sudo yum install -y \
'graphviz*' \
java-1.8.0-openjdk-devel \
;
# /usr/local/Platziere zwei Jar-Dateien in src.
$ sudo mkdir -p /usr/local/src
$ cd /usr/local/src/
# 1.SchemaSpy-Body
$ sudo wget http://jaist.dl.sourceforge.net/project/schemaspy/schemaspy/SchemaSpy%205.0.0/schemaSpy_5.0.0.jar
# 2.JDBC-Treiber für die Verbindung zu PostgreSQL
$ sudo wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar
Da es beim Ausführen der Befehlszeile viele Argumente gibt, erstellen Sie ein Startskript mit dem Namen ** schemaspy ** und schließen Sie die festen Argumente jedes Mal ein.
Dieses Mal habe ich auf die lokale ** "ebis" ** Datenbank zugegriffen und sie so eingestellt, dass ein ER-Diagramm generiert wird.
schemaspy
#!/usr/bin/env bash
#Das Verzeichnis, in dem die JAR-Datei früher abgelegt wurde
JDBC_DRIVER_DIR=/usr/local/src
JDBC_DRIVER_PATH=${JDBC_DRIVER_PATH:-$(echo ${JDBC_DRIVER_DIR}/*.jar| sed "s/ /:/g")}
#Hier"PostgreSQL"Spezialisiert auf
DATABASE_TYPE=${DATABASE_TYPE:-pgsql}
#Verbindungsziel-DB-Host
DB_HOST=${DB_HOST:-localhost}
#Name der Verbindungsziel-DB
DB_NAME=${DB_NAME:-ebis}
#Verbindungsziel-DB-Benutzer
DB_USER=${DB_USER:-postgres}
#Verbindungsziel-DB-Passwort
DB_PASS=${DB_PASS:-}
[ ! -d "./${DB_NAME}" ] && mkdir -p "./${DB_NAME}"
# -hq :Hochwertiger Modus. Das Ausgabeergebnis wird schön sein!
# -noimplied :Deaktivieren Sie die Funktion, die "die Beziehung zwischen vorhandenen Tabellen ohne externen Schlüssel errät und im ER-Diagramm wiedergibt".
java \
-jar "/usr/local/src/schemaSpy_5.0.0.jar" \
-hq \
-noimplied \
-o "./${DB_NAME}" \
-charset utf-8 \
-dp "${JDBC_DRIVER_PATH}" \
-t "${DATABASE_TYPE}" \
-host "${DB_HOST}" \
-s "public" \
-db "${DB_NAME}" \
-u "${DB_USER}" \
-p "${DB_PASS}" \
;
#Ausführungsberechtigung erteilen
$ chmod u+x schemaspy
Starten Sie das Skript.
$ ./schemaspy
Sie können sehen, dass ein Verzeichnis mit dem Namen ** "ebis" ** erstellt wurde und DB-Definitionsinformationen und ER-Diagramme generiert wurden.
(Ebis ist der DB-Name des Systems namens Ad Ebis, an dem ich zuvor beteiligt war, aber leider kann ich die DB-Informationen von Ad Ebis hier nicht anzeigen.)
EC-CUBE / ec-cube Ich habe versucht, ein ER-Diagramm zu erstellen, indem ich unmittelbar nach dem Setup eine Verbindung zur DB herstellte.
Ich habe es zu einem Shell-Skript gemacht. Wenn es sich um eine Redhad-Umgebung handelt, wird automatisch die nicht im Voraus installierte installiert und anschließend ausgeführt.
GitHub - genzouw/schemaspy-cli: schemaspy commandline interface
Sehr nützlich, um sich einen Überblick über das System zu verschaffen. ** SchemaSpy ** Wenn Sie ein besseres Tool kennen, lassen Sie es mich bitte wissen.
das ist alles
Recommended Posts