어떤 프로그램을 누가 어떻게 작성할지 계획을 세우며 요구, 기능, 예산, 개발 기간을 결정한다.
DB응용 프로그램은 원래 사람이 하던 일을 전산화하는 것이다. 따라서 현실 세계의 수작업을 면밀히 분석하는 업무 파악부터 한다.
설계 단계에서는 분석 문서를 참조하여 구현 방법을 결정한다. 비즈니스 로직에 따라 실세계의 사물을 테이블로 정의하고 관계를 설정하는 작업을 모델링 이라고 한다.
모델링한 데이터를 테이블로 구체화하고 효율적인 운영을 위한 인덱스, 프로시저 등을 정의한다.
구현 완료한 프로그램을 실제 업무에 사용한다. 미처 예상하지 못한 문제나 버그가 발견되고 기능 개선 요구도 발생한다.
고객은 상품을 주문하고 쇼핑몰은 주문받은 상품을 배송한다.
위의 쇼핑몰의 업무 분석 결과에서 고객, 상품과 같은 사물과 주문, 배송 동작을 엔터티로 추출한다.
엔터티를 잘 관찰하여 어떤 속성이 있는지 조사한다.
상품 : 이름, 가격, 재고, 할인율
고객 : 아이디, 주소, 전화번호, 예치금, 마일리지
1 : 1 관계 : 양쪽 테이블의 인스턴스를 하나씩 연결한다. 예를 들어 학생의 신상정보가 50개쯤 된다고 하면 이를 자주 참조하는 정보와 잡스러운 정보로 분할하여 학번정보로 연결고리를 만들어준다.
1 : 다 관계 : 가장 흔하게 존재하는 관계는 1 : 다 관계이며 부서와 직원의 관계가 대표적이다.
다 : 다 관계 : 양쪽 엔터티가 서로 복수개로 연결, 학생과 과목간의 수강 관계가 대표적이다. 학생 한명이 여러 과목을 수강할 수 있으며 또한 한 과목을 여러 학생이 수강할 수 있다. (다 : 다 관계는 두개의 다 : 1, 1 : 다 관계로 변환한다.)
정규화란?
정규화는 테이블을 재구성하여 논리적 구조를 개선하는 절차이다. 불필요하게 중복되는 데이터를 제거하여 저장 공간을 절약하고 전체적인 성능을 향상시킨다.
이름(PK) | 월급 | 주소 |
---|---|---|
홍길동 | 300 | 이천 |
김길동 | 250 | 수원 |
이길동 | 400 | 서울 |
사원 테이블
PJ번호(PK) | 담장자(외래키 FK) | 프로젝트 |
---|---|---|
1 | 홍길동 | 광고건 |
2 | 김길동 | 수출 |
프로젝트 테이블
관계를 맺는 테이블은 누가 업무의 중심인가에 따라 부모, 자식 관계가 된다. 업무의 주체가 되는 쪽을 부모 또는 마스터, 반대쪽을 자식 또는 디테일 이라고 한다.
다음 테이블에서는 방번호와 회원수가 동호회 기본키가 아닌 필드에 종속적이다.
이름 | 월급 | 동호회 | 방번호 | 회원수 |
---|---|---|---|---|
홍길동 | 450 | 독서 | 203 | 32 |
김길동 | 330 | 독서 | 203 | 32 |
조한기 | 280 | 게임 | 306 | 22 |
조길동 | 300 | 게임 | 306 | 22 |
-> 이럴 경우 직원 테이블과 동호회 테이블을 따로 분리하여 중복을 제거한다.