데이터 모델링
데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용(요구사항)을 분석하여, 정해진 표기법에 의해 표현하는 것을 말한다. 데이터를 추상화한 데이터 모델을 통해 데이터베이스를 생성하게 된다.
왜 중요할까?
데이터 모델링을 하지 않고 데이터베이스를 설계하는 것은 건축가가 설계도 없이 집을 짓는 것과 같다. 데이터를 효율적으로 저장 및 관리하기 위해서는 데이터를 이해하고, 분석하여 탄탄한 기반을 마련해야 한다.
데이터 모델링을 함으로써 소프트웨어의 개발 오류가 감소하고, 데이터베이스 설계 및 생성 속도와 효율성이 촉진된다. 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 한다.
ERD(Entity Relationship Diagram)
ER 다이어그램, 줄여서 ERD는 데이터 모델링 과정에 사용되는 것으로, 엔티티와 엔티티간의 관계를 나타내는 도식화된 그림(다이어그램)을 말한다. 데이터 모델링의 첫 번째 단계인 개념적 데이터 모델링에서 ERD를 생성한다.
ERD 표기법
ERD 표기법으로는 피터 첸 표기법(Peter Chen Notation), I/E 표기법(Information Engineering Notation), Baker 표기법 등 다양하다.
필자는 I/E 표기법(정보공학 표기법)을 설명하겠다. I/E 표기법은 관계 표현이 까마귀 발 모양과 같다하여 세발 표기법(Crow's Foot Notation) 이라고도 불린다.
엔티티
엔티티를 직사각형으로 표시한다. 이름, 생일, 전공 속성을 가지는 학생 엔티티를 표현하면 다음과 같다.
관계
1:1(일대일) 관계
- 한 명의 학생은 하나의 기숙사 방을 배정받는다.
- 하나의 기숙사 방에는 한 명의 학생을 수용할 수 있다.
다음 표현 또한 일대일 관계를 나타낸다.
- 한 명의 사람은 하나의 주민등록번호를 가진다.
- 하나의 주민등록번호는 한 명에게 부여될 수 있다.
위와 같이 One과 One and Only One 두 가지의 차이가 무엇인지 찾아본 결과, 다음과 같은 설명을 얻을 수 있었다.
둘의 차이는 Only 이다. 학생A는 1103호를 배정 받는다. 하지만 학생A가 1년 후에 새로운 기숙사 방 1005호를 배정받게 되고, 1103호에는 다른 학생B가 배정될 수 있다. 학생A - 1103호, 학생A - 1005호, 학생B - 1103호 처럼 일대일 관계를 가지나, 고유하지는 않다.
하지만 주민등록번호 같은 경우는, 그 사람이 죽는다고 해서 다른 사람이 해당 주민등록번호를 쓸 수 있는 것이 아니다.
'학생-자리'는 One , '주민등록번호-사람'은 One (and Only One) 관계가 된다.
1:n(일대다), n:1(다대일) 관계
- 한 명의 학생은 하나의 동아리에 가입해야한다.
- 하나의 동아리에는 여러 학생이 소속될 수 있다.
- 한 명의 회원은 주문을 여러 개 할 수 있고, 주문하지 않을 수 있다.
- 하나의 주문은 한 명의 회원에 의해 만들어진다.
이때, 주문은 회원이 없으면 생성될 수 없다. 따라서 최소1, 최대1의 One and Only One 관계를 가지도록 한다.
회원은 주문을 할 수도 있고, 안 할 수도 있으므로 0 ~ n 을 표현한다.
점선은 비식별자 관계를 나타낸다. 관련 내용은 아래에 설명되어 있다.
n:m(다대다) 관계
- 한 명의 학생은 여러 수업을 듣는다.
- 하나의 수업을 여러 학생이 들을 수 있다.
식별자 관계
부모-자식 관계에서 부모 엔티티의 주식별자를 자식 엔티티에서 주식별자로 사용한다. 이러한 관계를 식별자 관계라고 하고, 실선으로 표현한다.
비식별자 관계
부모-자식 관계에서 자식 엔티티가 부모 엔티티의 주 식별자를 일반 속성으로 사용한다. 이러한 관계를 비식별자 관계라고 하고, 점선으로 표현한다.
관계형 데이터베이스에서는 일반적으로 두 테이블간에 직접적으로 다대다 관계를 구현할 수 없다. 따라서 연결 테이블을 생성하여 일대다, 다대일 관계로 풀어주는 것이 좋다.
간단한 상품 주문을 예로 들어, 데이터 모델링 3단계를 살펴보자.
데이터 모델링 3단계
1. 개념적 데이터 모델링
요구사항을 분석하여 엔티티와 엔티티간의 관계를 ERD를 통해 표현한다.
주문과 상품은 다대다 관계이다. 한 번 주문할 때 여러 개의 상품을 시킬 수 있고, 하나의 상품이 여러 번 주문될 수 있다.
다대다 관계를 일대일, 다대일 관계로 풀어주기 위해 중간 테이블 역할을 하는 새로운 엔티티를 생성한다.
회원-주문
- 한 회원은 여러 주문을 할 수 있다 (선택)
- 하나의 주문은 한 명의 회원에 의해 주문된다 (필수)
주문 - 상품주문
- 하나의 주문은 여러 개의 상품주문을 포함한다 (필수)
- 하나의 상품주문은 하나의 주문에 포함된다 (필수)
상품주문 - 상품
- 하나의 상품주문은 한 개의 상품과 연결된다 (필수)
- 하나의 상품은 여러 개의 상품주문을 가질 수 있다 (선택)
2. 논리적 데이터 모델링
개념적 데이터 모델이 완성된 후, 업무에 대해 Key, 속성, 관계 등을 정확하게 표현하고 정규화 하는 과정으로 재사용성이 높다. 정규화를 수행함으로써 논리적 데이터 모델의 일관성을 확보, 중복 제거와 속성들이 적절한 엔티티에 배치되도록 함으로써 신뢰성있는 데이터 구조를 얻는데 목적이 있다.
3. 물리적 데이터 모델링
물리적 데이터 모델링에서는 논리적 데이터 모델이 데이터베이스에 어떻게 표현될 지에 대해 다룬다. 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계한다.
참고
https://aws.amazon.com/ko/what-is/data-modeling/
https://stackoverflow.com/questions/33781451/crows-feet-one-vs-one-and-only-one
'DB' 카테고리의 다른 글
[MariaDB] 설치 시, 3306 Port 문제 해결 방법 (0) | 2023.04.03 |
---|