설계 산출물 중 가장 마지막에 작성하는 ERD와 테이블 정의서는 전체적인 데이터의 흐름을 정의하고, 각각의 데이터 흐름에 대한 구체적인 정의를 나타내는 문서입니다. ERD 및 테이블 정의서는 사용하는 DBMS에 따라 추출하는 방법이 다릅니다. 오늘은 ERD와 테이블정의서의 실제 추출하는 방법에 대해 알아보고자 합니다.
개체-관계 모델, 테이블간의 관계를 설명하는 다이어그램이라고 볼 수 있습니다. 이를 통해 프로젝트에서 사용되는 DB의 구조를 한눈에 파악할 수 있습니다. 즉, API를 효율적을 뽑아내기 위한 모델 구조라고 생각하면 됩니다.
여기서는 ERD에 대한 구체적인 개념보다는 프로젝트 산출물 관점에서 산출물을 어떻게 뽑아야 되는지에 대해 초점을 맞춰 어떻게 뽑을 수 있는지 알아보겠습니다.
프로젝트 개발이 막바지에 도달하면 DB나 테이블의 수정 혹은 변경이 어느정도 마무리 단계에 이르게 됩니다. 이때 운영서버 ROOT 권한이 있는 DBA에게 요청하여 ERD나 테이블 정의서를 뽑으면 가장 빠르게 확보할 수 있습니다. 하지만, 부탁하기가 쉽지 않다면 결국 개발서버를 활용하여 직접 뽑아야 합니다. 직접 뽑아야 할때를 가정하여 ERD를 추출하는 방법에 대해 알아보고자 합니다.
먼저, DB가 오라클이라고 가정하고, 무료 툴을 활용하여 뽑는다고 가정하면, 일반적으로 sqldeveloper를 사용하실 것입니다. 그리고, 분석/설계자의 경우 이런 툴이 없을 것이라 인터넷에서 다운받아 설치하여 사용해야 합니다.
먼저 ERD를 추출하려면 Sqldeveloper 및 JRE가 설치되어 있어야 합니다. C나 D 드라이브에 먼저 sqldeveloper-3.2.20.09.87-no-jre버전을 다운받고, 여기에 맞는 jdk1.6.0_45 버전을 다운로드 받습니다. 각 버전에 맞는 JDK를 설치하지 않으면 실행이 되지 않으니, 인터넷에서 찾아보고 다운 받아 사용하시기 바랍니다.
다운을 받았다고 하면, 압축파일을 같은 디렉토리에 풀고 sqldeveloper.exe 파일을 실행합니다. 그러면 파일 유형 연관 구성이라는 팝업이 나타나는데, 그냥 확인하면 됩니다.
새로만들기/데이터베이스 접속선택하는 화면이 팝업되어 나타납니다.
접속이름,사용자이름, 비번 그리고 호스트이름, SID 등을 입력하고 테스트를 누르면 접속 성공여부를 알 수 있습니다. 이때 접속이 성공하면 접속 버튼을 눌러 Oracle SQL Developer를 사용할 수 있습니다.
여기서 SID(Security ID)란 사용자 계정은 처음 생성할 때 자동으로 보안 식별자(SID)를 할당 받게 되는데, 이 보안 식별자는 계정을 식별하는 유일한 번호라고 생각하시면 됩니다.
우측 상단 메뉴에서 파일 > Data Modeler > 임포트 > 데이터 딕셔너리 선택합니다.
임포트 하려는 데이터베이스에 접속하고 다음 버튼 클릭한 다음, 스키마/데이터베이스를 선택합니다.
임포트할 객체(테이블)들을 선택합니다.
최종 선택 내용 확인 후 완료를 선택합니다.
선택한 객체들의 기본적인 내용과 객체간 참조 현황을 분석하여 표현하여 줍니다.
이렇게 sqldeveloper를 활용하여 현행화된 ERD를 추출하여 산출물을 만들 수 있습니다.
테이블 정의서는 데이터베이스 설계 시 테이블의 구조와 칼럼의 특성을 알기 쉽게 요약한 내용이며, 보통 엑셀로 작성되며, 데이터 사전을 미리 작성하고, 일관성 있는 컬럼명과 데이터 타입을 사용할 수 있도록 합니다.
테이블 목록과 테이블, 컬럼 목록 추출은 Query를 통해서 추출이 가능하며, 시스템명, 테이블 ID, 테이블 명, 속성, 컬럼, 도메인(Type, 길이, PK, Null여부), 설명 등을 작성합니다.
아래는 포털의 권한그룹 테이블의 작성예시입니다.
Sub System | 포털 | ||||||||||
Table ID | AUTH_GROUP | Table Name | 권한그룹 | ||||||||
# | Attribute | Column | Domain | Desc | |||||||
Type | Len | Nu | KEY | D | |||||||
F | |||||||||||
1 | 권한그룹ID | AUTH_GROUP_ID | VAR | 20 | N | P | 권한그룹 아이디 | ||||
2 | 권한그룹명 | AUTH_GROUP_NAME | VAR | 100 | N | 권한 그룹명 |
|||||
3 | 권한 유형 | AUTH_GROUP_TYPE | VAR | 1 | N | ||||||
4 | 순서 | SEQ | INT | 10 | N | 순서 | |||||
5 | 등록일시 | CREATE_DATE | DATE TIME |
N | 등록일시 | ||||||
6 | 수정일시 | UPDATE_DATE | DATE TIME |
N | 수정일시 | ||||||
7 | 등록자ID | CREATE_USER_ID | VAR | 10 | N | 등록자ID | |||||
8 | 수정자ID | UPDATE_USER_ID | VAR | 10 | N | 수정자ID | |||||
비고 |
오늘은 설계 단계 산출물 중 ERD및 테이블 정의서 작성법에 대해 알아보왔습니다.
ERD는 객체-관계 모델, 테이블간의 관계를 설명하는 다이어그램이라고 볼 수 있습니다. 이를 통해 프로젝트에서 사용되는 DB의 구조를 한눈에 파악할 수 있습니다. 테이블 정의서는 데이터베이스 설계 시 테이블의 구조와 칼럼의 특성을 알기 쉽게 요약한 내용이며, 보통 엑셀로 작성되며, 데이터 사전을 미리 작성하고, 일관성 있는 컬럼명과 데이터 타입을 사용할 수 있도록 합니다.
데이터베이스 설계는 소프트웨어 개발 프로젝트에서 중요한 단계입니다. 잘 설계된 데이터베이스는 데이터의 일관성과 무결성을 보장하며, 어플리케이션의 성능을 최적할 수 있기 때문에 무척 중요합니다. 많은 개발현장에서 DB설계가 제대로 되지 않아 시스템 자체의 속도가 느려져 사용자의 고통이 심화되고 있습니다. DB 설계의 중요성을 제대로 인식하고, 고객은 DBA가 반드시 프로젝트에 참여하여 성능 보장이 될 수 있도록 해야 할 것입니다.
프로젝트에 대해 다른 사항이 궁금하시면 아래 링크를 클릭하세요
(1편) 프로젝트: 기술협상서 작성하기
(2편) 프로젝트: 사업수행계획서, WBS 작성하기
(7편) 분석 산출물 요구사항정의서 등 작성법 알아보기