DBMS의 종류, 프로그래밍 언어 등 모든 물리적인 고려 사항은 배제하고, 사용자의 관점에서 기업에서 사용되는 정보에 대한 개념적인 데이터 모델을 구축하는 것을 말한다. 업무를 분석하여 이를 약속된 표기법을 사용하여 개념적 모델로 표현한다.
업무 기술서를 작성한다.
📝 예시
업무 기술서를 바탕으로 엔티티를 찾는다.
다음과 같은 업무 기술서가 있다고 하자.
학교의 동아리 관리를 위한 시스템을 구축한다. 학교의 학생들이 동아리에 가입할 수 있어야 한다. 동아리에는 동아리 회장과 지도 교수가 있다. 동아리는 학술, 종교, 봉사, 레포츠, 기타로 분류한다. 동아리에게는 동아리 방이 제공된다.
먼저 명사를 추출한다. 조금 단순하게 생각해 명사는 엔티티 또는 컬럼이 되고, 동사는 관계가 된다고 생각하면 쉽다.
학교, 동아리, 관리, 시스템, 학생, 회장, 지도교수, 학술, 종교, 봉사, 레포츠, 기타, 동아리방
개념이 불분명하거나 광범위한 것, 업무 프로세스에 해당하는 것을 제거한다.
학교, 동아리,관리,시스템, 학생, 회장, 지도교수, 학술, 종교, 봉사, 레포츠, 기타, 동아리방
남은 명사를 엔티티, 엔티티 후보군과 속성으로 분리한다.
엔티티 포함 속성 동아리 학생 회장 여부 지도 교수 분류 동아리방
구축할 시스템에서 데이터를 관리할 필요가 있는 지 판단한다.
엔티티 포함 속성 동아리 지도 교수명, 동아리방 호실 학생 회장 여부 분류
한 가지 더 연습해 보자.
엔티티를 찾는 작업을 할 때, 우리가 사용하기에 적절한 용어로 변경해 주는 것도 좋다.
위와 같은 문제는 이런 식으로 엔티티를 찾을 수 있을 것이다.
DBMS에 맞춰 정규화와 무결성 제약을 정의하는 것을 말한다. 간단히 말해 테이블 간의 관계를 설정해 주는 것이다.
💡 정규화
테이블 설계가 잘못되면 이상 현상이 발생한다. 이상 현상을 줄이기 위한 과정을 정규화라고 한다.
1 : 1
꼭 필요한 경우가 아니면 사용하지 않는다. 사원:건강 정보와 같이 꼭 필요할 때만 사용한다.
1 : 다
가장 일반적인 관계로, 외래 키를 이용해 표현한다. 강사:학생 같은 경우를 들 수 있다.
다 : 다
표현이 불가능하며, 중간 테이블(교차 엔티티)이 있어야만 한다. 예를 들면 고객:상품 사이에 주문 테이블이 존재하는 것을 들 수 있다.


비식별 (빨강색 줄)
사원 테이블의 부서 번호 컬럼 값이 null일 수 있다. 테이블과 작업 내용이 간단하고, 컬럼이 변경되더라도 부담이 없다는 것이 장점이다.
식별 (초록색 줄)
사원 테이블의 부서 번호 컬럼 값이 있어야만 사원을 만들 수 있다. (존재 종속) 공통 컬럼이 계속해서 존재하기 때문에 조인을 할 때 편리하다.
📝 작업을 할 때는 비식별이 편리하지만, 조인이 빈번하다면 식별 관계도 고려해 보아야 한다. 장단점을 생각해 적절하게 사용할 수 있도록 한다.
💡 함수 종속
한 속성을 제시했을 때, 종속 관계에 있는 다른 속성들을 유일하게 결정할 수 있는 것을 말한다. 예를 들어 주민번호가 이름, 출생지, 주소 등을 결정하는 것과 같다. 여기서 중요한 것은 기본 키가 반드시 다른 모든 속성들을 자신에게 함수 종속시켜야 한다는 점이다.
제 1 정규화는 한 속성이 여러 개의 값을 가지거나 반복 속성이 존재해서는 안된다는 것을 의미한다. 반복되는 속성들을 자식 엔티티로 분리한 후 자식 엔티티에 기본 키를 지정하고, 부모 엔티티와 식별 관계로 연결하는 것으로 수행한다.

고객과 카드는 1:다 관계이다. 따라서 고객의 기본 키인 고객 번호에 카드는 종속될 수 없으므로, 테이블을 분리했다.
위 엔티티의 기본 키는 복합 키로, 학번과 과목 번호이다. 따라서 학번과 과목 번호를 제시하면 학과와 점수가 출력된다. 그런데 학과는 학번만 제시해도 출력이 가능하다. 이를 부분 함수 종속이라고 한다. 제 2 정규화는 부분 함수 종속의 문제를 해결하는 것을 말한다.
수행 방법은 다음과 같다. 부분 함수가 종속된 속성(학번)을 분리한다. 이때 분리시킨 엔티티(오른쪽)가 부모 엔티티가 되고, 두 엔티티는 식별 관계가 된다.

위 엔티티의 기본 키는 학번이다. 학번을 제시하면 이름, 학과, 학과 평가 모두 하나의 값이 나온다. 그런데 학번과 학과 평가는 아무런 관계가 없고, 학번 → 학과 → 학과 평가로 이어진 관계다. 이를 이행적 함수 종속이라고 한다. 제 3 정규화는 이행적 함수 종속 문제를 해결하는 것을 말한다.
수행 방법은 다음과 같다. 이행적 함수가 종속된 속성(학과)을 분리한다. 이때 분리시킨 엔티티가 부모 엔티티가 되고, 두 엔티티는 비식별 관계가 된다.
