2008-10-09 35 views
17

Not: Başlangıçta bu soru PostgreSQL için sorulmuştur, ancak yanıt, yabancı anahtar ilişkilerini algılayabilen bir JDBC sürücüsüne sahip hemen hemen tüm veritabanları için geçerlidir.Bir veritabanını tersine mühendislik uygulayarak bir E-R Diyagramı oluştur


yabancı tuşları ve tablolar arasındaki ilişki için

Sorgulama PostgreSQL veri sözlüğü çok basittir, ama nasıl tablolar arasındaki ilişkilerin bir grafik oluşturmak için bu bilgileri kullanabilir?

yapabilirsiniz araçlar hakkında herhangi bir öneriler?

DÜZENLEME: Ben Graphviz/DOT ancak, yönlendirilmiş grafik .DOT dosyası oluşturmak istiyorum bir uygulamayı nasıl kodlanacağı konusunda bir fikrin var bilmiyorum yararlı olabilir biliyorum.

+0

Olası dupe: http://stackoverflow.com/questions/11099444/generate-er-diagram-from-existing-postgresql-database –

+0

https: //gist.github adresindeki perl komut satırından tam bir örneğe bakın. com/albfan/4fcf4240860fa73811b4 – albfan

cevap

14

Dot bir bayağı serin/araçtır graphviz paketinin bir parçasıdır. Tabii ki, graphviz için nokta dosyalarını oluşturmak için bir şeye ihtiyacınız olacak. Geçmişte bir veya iki kez SchemaSpy kullandım ve veritabanında tanımlanan ilişkilere sahip olmanız koşuluyla oldukça iyi çalışıyor.

+4

Yay, SchemaSpy iş için doğru araç gibi görünüyor! Teşekkürler :) –

+0

Son birkaç yıldır hiçbir güncelleme olmasa bile, bu araç hala iyi çalışıyor. – AlexG

+0

SchemaSpy oldukça harika. SQL Server ile çalıştığını onaylama! birkaç yüz ile veritabanları için üretir, en azından benim durumumda çok hoş grafiksel sonuçları - – David

4

Microsoft Visio bunu kolayca yapacaktır.

+11

Visio 2013'ten itibaren, artık mevcut bir DB'den veritabanı şemasını kaldırdılar. – Rus

+3

Böyle üzücü. Bu işlevi son 6 yıldır düzenli olarak kullanıyorum. –

1

Dot çoklu ve faydalı olabilir.

+0

Plz kodunu bana gönder? –

2

En azından Oracle için bu sorguyu çalıştırın veya çalıştırın ve bana sonuçları göndermek için DBA isteyin. Sonuçlar, Graphviz'in araçları tarafından yorumlanacak bir metin dosyasına doğrudan kopyalanabilir ve sonuçta bir veritabanı diyagramı elde edilebilir.

SELECT '"' || Source.TABLE_NAME || '" -> "' 
      || Destiny.TABLE_NAME || '";' AS For_GraphViz 
FROM dba_constraints Source 
JOIN dba_constraints Destiny 
ON Source.owner='my_db_owner' AND Destiny.owner='my_db_owner' 
AND Source.CONSTRAINT_TYPE='R' 
-- theoretically this validation should be redundant 
-- AND Destiny.Constraint_type = 'P' 
AND Source.R_CONSTRAINT_NAME = Destiny.CONSTRAINT_NAME 
ORDER BY Source.TABLE_NAME, Source.CONSTRAINT_TYPE, Source.CONSTRAINT_NAME 
    , Source.R_CONSTRAINT_NAME, Source.INDEX_NAME; 

Benzer bir sorgu MySQL, PostgreSQL ve diğerleri hakkında bilmiyorum, SQL Server için kolayca oluşturulabilir.

+0

arada, * düz "nokta", hatta "Şahaneymiş" karşıt olarak diyagramı çizmek için "circo" seçeneğini kullanarak veya "twopi" önermek kuvvetle * tablolar. –

İlgili konular