2010-06-22 5 views
3

우리는 모든 것을 관리하기 위해 거대한 (800+) 테이블을 사용하는 Parallels 시스템을 구축했습니다.mySQL 데이터베이스 ER 다이어그램 인쇄 (800+ 테이블)

다양한 요구에 따라 보고서 생성을 위해 데이터를 검색하는 쿼리를 작성하려면이 시스템을 알아야합니다.

필자는 당면한 작업과 관련이있는 테이블을 분리하는 데 어려움을 겪고 있기 때문에 전체 테이블 시스템에 대해 여러 페이지에 걸쳐 ERD를 생성하고 인쇄하는 것이 가장 좋은 방법이라고 생각했습니다.

TOAD를 사용하여 모든 테이블을 끌려고했습니다. - 어느 쪽이 충돌 했습니까? 두 번째 시도에서, (긴) while, M-Z 테이블을 성공적으로 드래그했습니다.

나는 심지어 모든 파일의 크기를 조정하고 정렬하고 ERD를 파일에 저장하도록 관리했습니다.

그러나 인쇄 또는 미리보기로 들어가면 인쇄용 하위 프로세스가 충돌합니다.

이 대규모 ERD를 인쇄하는 방법에 대한 제안 사항이 있으십니까? 아니면 다른 방법일까요? 테이블 이름은 스스로 설명 할 수없는 것처럼 보입니다. 따라서 나는 800 개 이상의 테이블을 사용할 수 없으며 (솔직히, 정말로 원하지도 않습니다), 제가 필요로하는 부분이나 일부를 놓치지 않기를 바랍니다.

실제로 스크립트와 코드를 작성하기 전에 진행 방법에 대한 조언이나 아이디어를 매우 소중하게 생각합니다.

데이터베이스가 CentOS에서 mySQL에 있고, 일부 테이블이 InnoDB이고, 일부는 MyISAM입니다. 많은 테이블에 외래 키가있는 것 같습니다.

감사합니다.

+2

자동으로 실행하더라도 논리적이거나 유용한 방식으로 테이블을 정렬하는 앱을 본 적이 없습니다. 그래서 나는 아직도 당신이 다소 수동으로 할 것을 권합니다. – MJB

+0

그게 정말 사실, 어떻게 든 "논리 패키지" –

답변

7

내가 (1K) 근처 수백 개의 테이블을 한 장소에서 근무하고 아무도 정말, 회사가 성장하고 많은 고용 된 시스템에 무슨 일이 있었는지 알고 있었다. 한 남자가 다이어그램 작업을 맡았고 다양한 테이블을 연결하는 선이있는 모든 테이블을 포함하는 거대한 타일로 된 포스터를 자동으로 만들었습니다. 나는 그가 무엇을 사용했는지 모르겠다. 몇 년 전에는 유닉스와 오라클이었다 (리눅스와 오픈 소스 이전의 방식). 그의 다이어그램에 테이블 레이아웃에 대한 실제적인 운이나 이유는 없었습니다. 그는 모든 테이블의 다이어그램을 성공적으로 만들었습니다. "포스터"는 공동 장소의 벽에 깔려있어 외모가 조금 있지만 실제 사용하지 않은 사람은 아무도 없었습니다. 사용할 수 없거나 너무 어수선하며 조직이 너무 복잡했습니다. 결과적으로, MS-Word를 사용하여 20 개의 주 테이블을 포함하는 단일 페이지 다이어그램을 만들었습니다 (새로운 주 테이블을 "발견"하면서 몇 번의 반복을 거쳤습니다). 각 외래 키와 각 테이블의 행은 논리적 인 방식으로 배치되었습니다 . 열 이름, 데이터 형식, Null 허용, PK 및 모든 FK를 보여주었습니다. 내 다이어그램을 내 모니터에 내 벽에 담았습니다. 결국 모든 사람들은 "포스터"를 만든 사람을 포함하여 내 다이어그램의 복사본을 원했습니다. 내가 그 일을 떠났을 때 그들은 여전히 ​​새로운 채용에 대한 다이어그램을 제공하고있었습니다.

탐색기와 같은 방법으로 작업하고, 키 테이블을 찾아 가서 맵핑하고, 시스템을 발견 할 때 필요한만큼 많은 특정 다이어그램을 만드는 것이 좋습니다. 거대한 "포스터"를 자동으로 만들려고 시도하는 것은 효과가 없습니다.

+0

완전히 사실! 저는 거대한 데이터베이스 (db_links를 세지 않고 800+ 이상 1,5k 테이블)로 여러 번 작업했습니다. 모든 데이터베이스에 대해 스키마의 모든 부분을 아는 것은 불가능합니다. KM으로. 항상 여러 번 20 ~ 50 개의 테이블을 사용한다고합니다. 다른 것들은 다른 서비스를위한 비즈니스 규칙에 더 특정 적입니다. 때로는 더 이상 사용되지 않는 오래된 소프트웨어의 오래된 테이블을 가지고있을 수도 있지만 db architect는 실제 데이터베이스에이 테이블을 유지하려고합니다. "언젠가 우리가이 정보를 찾을 필요가 있는지 알 수 없다". 비즈니스 규칙과 일치하는 스키마를 분할해야하며 스키마 읽기가 더 유용 할 것입니다. – aviel

5

mysql workbench을 사용해 보셨습니까? 윈도우가 마음에 들지 않는다면, Enterprise Architect도 시도해 볼 수 있습니다.

+1

분할이 실제로가는 방법입니다. 그러나 테이블의 논리적 인 순서는 없을 것입니다. 그들은 서로 위에있을 가능성이 높으므로 개별적으로 다시 정렬해야합니다. +1 – DrColossos

+0

EA는 다양한 레이아웃의 레이아웃을 제공 할 수 있습니다. 그것이 인쇄하려면 ... 그는 많은 종이가 필요합니다 :) –

+0

mysql workbench에 대한 아래의 Sinter의 포스트에 관한 나의 노트를보십시오. EA 평가판을 시작했는데, 거기서 데이터베이스로 작업하는 방법을 찾지 못했습니다. 연결하거나 가져 오거나 가져 오기 위해 테이블을 ERD로 가져올 수 있습니다. – Carmageddon

1

MySQL Workbench에는 생성 스크립트에서 리버스 엔지니어링을위한 훌륭한 도구가 있습니다. 그러한 대형 데이터베이스에는 사용하지 않았지만이를 확인해야합니다.

링크 : http://wb.mysql.com/

+0

WB를 설치했지만 DB 스키마를 검색 할 수 없습니다. [코드] 스키마 목록을 가져 오는 중입니다. 작업이 실패했습니다 : 'information_schema.schemata'테이블이 존재하지 않습니다. [/ code] 수동으로 찾아 보았는데 스키마가 제거 된 것처럼 보입니다. 또한 데이터베이스 -> 리버스 엔지니어링 메뉴 옵션도 시도했는데 모델 동기화 옵션을 시도했습니다. 둘 다 스키마를 원했습니다. – Carmageddon

+0

어떤 MySQL 버전을 사용하고 있습니까? 버전 차이 문제 일 수 있습니다. –

+0

서버 버전 : 4.1.20- 표준 – Carmageddon

0

IIRC, MS SQL Server는 다이어그램을 작성하는 데 유용한 유틸리티를 가지고 있습니다. 많은 도움이되었습니다. 테이블을 추가하면 모든 관련 테이블이 자동으로 추가됩니다. 테이블을 MS SQL 호환 SQL 스크립트로 변환 할 수 있다면 도움이 될 것입니다.

+0

나는 이들을 운영중인 프로덕션 시스템에서만 가지고 있기 때문에 시스템을 손상시킬 위험이 있습니다. MS SQL으로 쉽게 변환 할 수있는 방법을 제안 할 수 있습니까? 그러면 나는 그것을로드하고 당신이 제안한 기능을 시도 할 것이다. – Carmageddon

+0

간단한 해결책은 데이터없이 MS SQL 호환 SQL 덤프를 얻는 것입니다.이 명령은 create table 문만있는 파일입니다. 그런 다음 SQL Server에서 실행하십시오. mysqldump -u user -p --no-data --skip-triggers --compatible = mssql databasename>/path/to/file.sql'을 사용하여 덤프를 얻을 수 있습니다. 업데이트 : mysqldump 매뉴얼에서 :이 옵션은 다른 서버와의 호환성을 보장하지 않습니다. 덤프 출력을보다 호환 가능하게 만들기 위해 현재 사용할 수있는 SQL 모드 값만 사용 가능하게합니다. 따라서 오류가 발생하면 sql (찾기 및 바꾸기)을 편집해야합니다. 나는 아직도 시험 할 만하다. – ceteras

0

Navicat 10.1 이상에서 작업을 수행 할 수 있습니다. 모델 도구를 사용하여 데이터베이스를 가져온 다음 다시 정렬하십시오. 인쇄 결과는 pdf 또는 직접 프린터로 전송됩니다.

관련 문제