나비켓15 모델링 도구로 테이블 추가하여 반영하기
나비켓15에서 모델링 도구를 이용하여 테이블, 뷰 등의 오브젝트를 추가한 후 이를 DB에 적용할 수 있습니다.
나비켓 실행 후 서버에 커넥션 연결 후 우측 상단의 Model 아이콘을 클릭하고 New Model 버튼을 클릭합니다.
모델 타입으로 물리모델을 선택 후 하단의 선택창에서 자신의 Database와 버전을 선택 후 OK를 클릭합니다.
기존에 사용중이거나 프로젝트를 위해 새로 생성된 DB가 있는 경우라고 가정하고 해당 DB를 리버스 엔지니어링(Reverse Engineering)으로 엔티티를 추출할 수 있습니다.
File > Import from Database...를 클릭합니다.
나비켓에 설정된 커넥션을 선택 후 해당 커넥션에 연결된 DBMS에서 리버스 엔지니어링을 실행할 DB에 체크한 후 Start를 클릭합니다.
DB내의 테이블정보와 인덱스, 외래키, 뷰 정보 등 다양한 객체들의 정보를 읽어들인 후 정보를 바탕으로 ERD를 생성합니다.
아래와 같은 형태로 생성됩니다.
빈공간 아무곳에 마우스 우클릭 후 New 를 클릭 한 후 원하는 다이어그램 항목을 추가할 수 있습니다.
혹은 상단의 아이콘을 통해서 추가할 수도 있습니다.
테이블을 선택한 경우 아래처럼 나타나는데 테이블명을 입력해주고 테이블 밖에 빈 공간을 클릭하여 빠져나옵니다. 이후 생성된 테이블을 더블클릭합니다.
테이블을 더블클릭하여 컬럼을 추가하거나 PK를 추가하는 등 다양한 작업이 가능합니다. 각 항목을 더블클릭하여 컬럼명이나 옵션수정이 가능합니다.
Fields 이외에 각 탭을 클릭하여 Index나 Trigger 등 세부 설정이 가능합니다.
외래키 설정하기
외래키 설정은 테이블 상세 정보에서 직접 설정해도 되지만 상단의 외래키 설정아이콘을 클릭후 원본테이블의 FK로 사용할 컬럼을 클릭한 상태에서 참조할 테이블의 컬럼에 드래그앤 드롭하여 연결이 가능합니다.
외래키가 설정된 모습
데이터베이스에 ERD를 동기화하여 반영하기(Synchronize)
ERD를 모두 작성했다면 ERD를 바탕으로 실제 데이터베이스에 DDL을 실행해 반영할 수 있습니다. 첫번째 방법은 ERD를 SQL로 추출하여 해당 SQL을 실행하는 방법입니다. Export SQL...을 클릭하고 .sql 파일로 DDL을 추출할 수 있습니다. 그런데 이상하게 아직 초기버전의 버그인지 외래키가 제대로 생성되지 않는것 같습니다.(분명 외래키 생성옵션에 체크를 했는데..)
두번째 방법은 툴 자체적으로 동기화하여 반영하는 방법입니다. ERP <-> DB간 서로를 비교하여 변경된 내용을 분석해 동기화 하는 기능입니다.
File > Synchronize to Database...
Source는 현재 작성중인 ERD이고 Target은 비교할 대상 DB입니다. 당연한 이야기이지만 Connection을 생성할때 설정된 사용자는 테이블 생성등의 권한이 있어야 합니다. Compare를 누르면 비교가 시작됩니다.
참고로 Options 버튼을 클릭하면 동기화 비교시 조건 옵션을 설정할 수있습니다. Identified Case Sensitivity는 테이블명 등의 식별자의 대소문자까지 비교할지의 여부입니다.
비교가 완료되면 수정된 객체, 추가된 객체, 제거된 객체, 아무런 변화가 없는 객체 가 표시됩니다. 여기서 +로 된 부분이 ERD에서 추가로 생성한 테이블입니다.
실행될 DDL 스크립트가 출력되고 Execute를 클릭하면 실행됩니다.
쿼리에 이상이 없다면 정상적으로 완료되며, ERD에 무언가 이상이 있어 DDL상에 오류가 있다면 메시지 로그에 출력이 되니, 해당 로그를 바탕으로 ERD를 수정하여 다시 실행하시기 바랍니다.
'툴 [Tool]' 카테고리의 다른 글
[DataGrip] 트랜잭션 commit 설정 수동/자동 변경하기 (0) | 2020.08.23 |
---|---|
[DataGrip] 쿼리 실행시 선택하지 않고 현재 커서가 있는 쿼리 바로 실행하도록 하는법 (0) | 2020.08.22 |
[pgAdmin3] PostgreSQL pgAdmin 문자열 복사시에 쌍따옴표(") 안붙게 하기 (0) | 2020.01.02 |
[pgAdmin3] PostgreSQL pgAdmin 쿼리시 문자열 결과 제한 해제하기 (0) | 2020.01.02 |
[Navicat12] 리버스 엔지니어링(Reverse Engineering)으로 테이블 ERD 추출하는 방법 (0) | 2019.12.03 |