데이터베이스를 리버스 엔지니어링하여 ER 다이어그램을 생성합니다 [폐쇄

StackOverflow https://stackoverflow.com/questions/185967

문제

참고 : 원래이 질문은 PostgreSQL에 대한 요청을 받았지만 답은 외국 키 연관성을 감지 할 수있는 JDBC 드라이버가있는 거의 모든 데이터베이스에 적용됩니다.


외국 키와 테이블 간의 관계에 대한 PostgreSQL 데이터 사전 쿼리 쿼리는 매우 간단하지만 해당 정보를 사용하여 테이블 간의 관계 그래프를 생성 할 수있는 방법은 무엇입니까?

이를 수행 할 수있는 도구에 대한 권장 사항이 있습니까?

편집하다: 나는 GraphViz/dot을 알고 있습니다 ~할 수 있다 그러나 유용하지만, 지시 된 그래프 .dot 파일을 생성하는 앱을 코딩하는 방법에 대해서는 아무런 아이디어가 없습니다.

도움이 되었습니까?

해결책

점의 일부입니다 GraphViz 꽤 멋진/유용한 도구입니다. 물론 GraphViz 용 도트 파일을 생성하려면 무언가가 필요합니다. 나는 사용했다 회로도 과거에는 한두 번, 데이터베이스에 관계가 정의 된 경우 꽤 잘 작동합니다.

다른 팁

Microsoft Visio는 쉽게이 작업을 수행 할 것입니다.

적어도 Oracle의 경우이 쿼리를 실행하거나 DBA에 실행하여 결과를 보내달라고 요청합니다. 결과는 GraphViz의 도구로 해석 할 텍스트 파일에 직접 복사하여 데이터베이스 다이어그램을 초래할 수 있습니다.

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;

SQL Server에 대해서도 비슷한 쿼리를 쉽게 만들 수 있으며 MySQL에 대해 알지 못합니다. Postgresql et al.

Multiplatform이면 유용 할 수 있습니다.

dbvisualizer 또한 자유롭고 멋진 대안입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top