Alat untuk menghasilkan dan meletakkan diagram hubungan entitas secara otomatis?

6

Saya telah melihat banyak alat yang dapat merekayasa balik ERD dari basis data yang ada, tetapi saya belum dapat menemukan satu yang mampu secara otomatis menyusun diagram dengan cara yang masuk akal. Sebagian besar dari mereka hanya menempatkan semua entitas di atas satu sama lain dan menyebutnya sehari. Beberapa berusaha mengorganisasi entitas, tetapi mereka tidak melakukan pekerjaan dengan sangat baik.

Apakah ada alat di luar sana yang akan merekayasa balik struktur database yang ada, dan kemudian secara otomatis meletakkannya dengan cara yang mudah dimengerti dan mengungkap organisasi database? Jika saya membuat alat seperti itu, saya akan meminimalkan panjang garis yang menghubungkan entitas, meminimalkan jumlah garis yang saling bersilangan, dan membuat kelompok entitas terkait saling menonjol. Saya juga mencoba untuk menyimpulkan tabel mana yang merupakan tabel pencarian, yang mana tabel perantara mana-ke-banyak, dll dan meletakkan entitas sedemikian rupa sehingga peran ini jelas bagi orang yang melihat diagram.

Saya tidak punya dana untuk membuat di atas, tapi saya punya dana untuk membeli alat seperti itu jika bagus.

Sunting: Saya harus menyebutkan bahwa saya mencoba untuk diagram database dengan 100 tabel, jadi saya ingin mengotomatisasi sebanyak mungkin. Basis data bukan yang saya kenal, jadi saya ingin belajar dari melihat diagram daripada membuang apa yang saya tahu ke dalam diagram (yang tampaknya menjadi alat yang paling dirancang untuk diagram).

user18352
sumber
Adakah yang mengetahui alat yang mengatur diagram melalui grafik berbobot atau algoritma serupa untuk mengurangi tumpang tindih?
Chris Nava

Jawaban:

2

Selama Anda memiliki kunci asing di basis data Anda, saya telah menemukan bahwa Visio melakukan pekerjaan yang cukup baik. Saya memiliki database postgresql dengan sekitar 150 tabel dari empat proyek gabungan yang berbeda yang terhubung melalui berbagai kunci asing dan melakukan pekerjaan yang luar biasa untuk mengekstraksi semua hubungan dan mengelompokkan tabel bersama. Diagram hanya memiliki beberapa garis yang tumpang tindih meskipun kunci asing yang luas. Juga, karena kunci asing elemen logis dikelompokkan bersama dengan baik itu jelas basis data mana sebagian besar tabel berasal.

Pridkett
sumber
1
Saya sudah mencoba viso juga. Mungkin masalah saya adalah hubungan dalam database sebenarnya kekacauan campur aduk dan sedang diwakili secara akurat oleh kekacauan campur aduk yang saya dapatkan ...
user18352
1
Saya juga telah menggunakan visio untuk melakukan ini (hanya pada file akses ms) Prosesnya cukup sederhana, tetapi jika database sumber Anda berantakan, seperti yang Anda katakan, saya tidak yakin ada perangkat lunak yang akan secara otomatis menyelesaikan masalah ini untuk Anda sempurna. Bagian yang baik tentang visio, adalah Anda dapat memodifikasi diagram ER dan mereproduksi basis data menggunakan VBA: eggheadcafe.com/software/aspnet/32121825/…
DaveParillo
2

SchemaCrawler secara otomatis menghasilkan diagram dari basis data, menggunakan GraphViz. Kekuatan sebenarnya dari SchemaCrawler adalah itu

  1. Anda bisa menggunakan ekspresi reguler untuk membatasi tabel dan kolom dalam diagram, membuatnya sangat berguna saat menjelajahi database yang tidak dikenal
  2. Anda dapat menemukan hubungan antara tabel yang tidak dinyatakan sebagai kunci asing, menggunakan fitur "asosiasi lemah"

Cukup unduh SchemaCrawler, letakkan di suatu tempat di jalur java Anda dan jalankan sebagai berikut:

java -classpath $(echo ../../_schemacrawler/lib/*.jar | tr ' ' ':') schemacrawler.Main -server=mysql -database=your_database_in_localhost -user=your_user -password=your_password -infolevel=maximum -command=graph -outputformat=pdf -outputfile=my_database_diagram.pdf $*

Perhatikan juga bahwa Anda dapat memilih berbagai format file seperti

  • png
  • jpg
  • dot
  • svg

dan banyak lagi.

Anda juga dapat memutuskan apakah nama kunci asing, nomor urut kolom, dan nama skema harus ditampilkan dengan mengatur properti berikut dalam file konfigurasi SchemaCrawler, schemacrawler.config.properties.

  • schemacrawler.format.show_ordinal_numbers = true
  • schemacrawler.format.hide_foreignkey_names = true
  • schemacrawler.format.show_unqualified_names = true

Ada lebih banyak info dan contoh di http://schemacrawler.sourceforge.net/diagramming.html

Sualeh Fatehi
sumber
0

mungkin tergantung pada basis data yang Anda gunakan. Saya sudah mencoba ini dengan Microsoft SQL Server Management Studio dan itu menciptakan dan menjabarkan diagram. Saya tidak bisa mengatakan apakah itu memenuhi persyaratan Anda tetapi edisi kilat gratis sehingga selalu memungkinkan untuk mencobanya.

Paxxi
sumber
Diagram basis data yang dibuat oleh studio manajemen mungkin yang terbaik yang pernah saya lihat, tetapi masih tidak menangani 100+ tabel dengan sangat baik. Itu akhirnya menjadi berantakan campur aduk.
user18352
0

Saya sudah menggunakan Druid untuk ini di masa lalu dan sangat puas. Ini open source / gratis dan Anda dapat memindahkan objek dalam diagram. Namun, UI dapat sedikit membiasakan diri.

Pops
sumber
Dari deskripsi, tidak terdengar seperti Druid melakukan tata letak otomatis.
user18352
Bagaimana Anda berencana memuat informasi tabel ke dalam program?
Pops
1
Membalikkan insinyur dari database yang ada.
user18352
Ya, saya melihatnya dalam pertanyaan awal Anda, tetapi bagaimana caranya? Mengimpor file Access? Memberitahu program informasi login ke database? Tidak jelas apa yang Anda maksud dengan "reverse engineer."
Pops
1
Heh maaf. Dengan reverse engineer, saya maksudkan agar program log ke dalam database untuk mengambil struktur tabel dan kendala.
user18352