다음은 예시이다.
여기는 보험회사이다. 고객 관리를 위해 DB를 설계하려고 한다. 요구사항을 분석하고 요소들을 추출해보자.
- 고객이 있고 고객이 사용하는 계좌가 있다.
- 고객에 대한 정보로는 이름, 주소, 휴대전화번호, 주민등록번호가 있다.
- 고객 계좌에 대한 정보로는 계좌번호, 계좌종류, 개설일자, 인출한도가 있다.
- 주소 정보에 대한 정보로는 시군구, 동, 상세주소, 우편번호가 있다.
추출 요소
- 개체: 고객, 계좌, 보험회사
- 속성: 이름, 주소, 휴대전화번호, 주민등록번호, 계좌번호, 계좌종류, 개설일자, 인출한도, 시군구, 동, 상세주소, 우편번호
- 관계: 고객이 계좌 번호를 소유한다. 고객이 주소를 소유한다. 보험회사가 고객의 주소를 관리한다.
ERD 작성해보기(개념적 설계)
ERD 작성하는 툴이 따로 있다. ERD 툴에 대한 글을 다른 포스트에 올리도록 하겠다. 오늘은 필자가 종이에 그림을(...) 그려보겠다.
다음은 필자가 그린 ERD 이다.
추출 요소를 바탕으로 그려보았다.
논리적 설계
개념적 설계가 끝났으니, 논리적 설계를 진행해야한다.
작성된 ERD에 추가적인 제약조건을 고려하여 논리적 설계를 진행해보자.
논리적 설계 고려 사항
- 테이블 형태로 표시한다.
- 테이블의 맨 위 칸은 식별자가(PK)가 되어야한다.
- 식별자는 개체를 구별할 수 있는 속성이어야한다.
- 테이블 간의 1:1,1:n,n:m 등의 관계를 설정한다.
- 테이블 간 연결할 수 있는 속성을 부여하여 하나의 테이블에서 다른 테이블의 값을 찾아갈 수 있어야한다.
완성된 스키마는 다음과 같다.
물리적 구현을 할 때에 사용할 영어 변수도 함께 적어주었다.
물리적 설계
최종적인 구현을 하면 다음과 같다.