Part 1 데이터 모델링의 이해
1. 모델링이란?
데이터베이스의 모델링이란, ‘현실 세계를 단순화하여 모델로 표현한 것’이다.
모델은 현실 세계를 표현해 놓은 모형이라고 보면 된다.
✏ 모델링의 특징
- 추상화 : 현실 세계를 어떤 형식으로 표현하는 것
- 단순화 : 정해진 표기법으로 단순하게 표현
- 명확화 : 명확하게 해석할 수 있도록 표현
모델링시 지양해야 할 점
- 중복 : 같은 데이터가 여러 엔터티에 중복으로 저장되는 현상
- 비유연성 : 애플리케이션 변경에 데이터 모델이 수시로 변경되는 현상
- 비일관성 : 다른 엔터티와의 연관성을 고려하지 않고 일부 엔터티만 변경
✏ 모델링을 할 때 세 가지 관점
- 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지
- 프로세스 관점 : 업무가 실제로 하는 일이 무엇인지, 무엇을 해야 하는지
- 데이터와 프로세스의 상관 관점 : 업무에서 처리하는 일에 따라 데이터가 어떻게 영향을 받는지
✏ 모델링의 세 가지 단계
- 개념적 데이터 모델링 : 추상화 레벨이 가장 높은, 업무 중심적이고 포괄적인 수준의 모델링
- 논리적 데이터 모델링 : 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 재사용성이 가장 높은 모델링
- 물리적 데이터 모델링 : 실제 데이터베이스의 성능, 가용성 등의 물리적인 성격을 고려하는 모델링
✏ 데이터의 독립성
데이터베이스에 대한 사용자 관점과 실제 표현되는 물리적 방식을 분리하기 위해, 스키마를 3단계 구조로 분리한다.
- 외부 스키마 : 각 사용자가 보는 데이터베이스의 스키마
- 개념 스키마 : 모든 사용자가 보는 전체 데이터베이스
- 내부 스키마 : 물리적인 저장 구조
→ 이를 통해, 데이터베이스의 독립성을 보장할 수 있다.
논리적 독립성 : 개념 스키마의 변경이 외부 스키마에 영향을 주지 않는다.
물리적 독립성 : 내부 스키마의 변경이 다른 스키마에 영향을 주지 않는다.
2. 엔터티(Entity)란?
💡 데이터베이스에서 엔터티는 식별이 가능한 객체를 의미한다.
✏ 엔터티의 특징
- 실질적으로 업무에서 사용되는 정보여야 한다.
- 유일성을 보장하는 식별자가 있어야 한다.
- 2개 이상의 인스턴스를 가져야 한다.
- 속성을 반드시 가지고 있어야 한다.
- 다른 엔터티와 1개 이상의 관계를 가져야 한다.
✏ 엔터티의 분류
- 유형 vs 무형
- 유형 엔터티 : 물리적 형태 존재 (e.g. 회원)
- 개념 엔터티 : 물리적 형태 없음 (e.g. 학과)
- 사건 엔터티 : 행위를 통해 발생 (e.g. 주문)
- 발생시점
- 기본 엔터티 : 독립적으로 생성, 자식 엔터티를 가질 수 있음 (e.g. 회원)
- 중심 엔터티 : 기본 엔터티로부터 파생, 업무의 중심적 역할을 함, 데이터가 많이 발생 (e.g. 주문)
- 행위 엔터티 : 2개 이상의 엔터티로부터 파생, 자주 변경되거나 증가 (e.g. 주문 내역)
3. 속성이란?
속성은 사물이나 개념의 특징을 설명해줄 수 있는 항목들을 말한다.
예를 들어 ‘사람’이라는 엔터티는 이름, 생년월일, 키, 몸무게 등이 있다.
속성은 의미상 더 이상 나누어지지 않아야 하며, 작업에 필요한 항목이어야 한다.
속성은 한 개의 속성값을 가지며, 여러 속성값을 갖는 경우 별도의 엔터티로 분리해야 한다.
✏ 엔터티 > 인스턴스 > 속성
- 한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다.
- 한 개의 인스턴스는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 하나의 속성값을 갖는다.
✏ 속성의 분류
- 특성에 따른 분류
- 기본속성 : 업무 프로세스 분석으로 바로 정의할 수 있는 속성 (e.g. 이름)
- 설계속성 : 설계 중 필요에 따라 도출한 속성 (e.g. 학번)
- 파생속성 : 다른 속성을 변형하여 생성한 속성 (e.g. 주문 횟수)
- 구성방식에 따른 분류
- PK 속성 : 엔터티의 인스턴스를 식별할 수 있는 속성
- FK 속성 : 다른 엔터티의 속성에서 가져온 속성
- 일반 속성 : 나머지 속성
도메인이란, 속성이 가질 수 있는 속성값의 범위를 의미한다.
4. 관계란?
관계는 엔터티와 엔터티와의 관계를 의미한다.
✏ 존재 관계 vs 행위 관계
존재 관계는 존재 자체로 연관성이 있는 관계 (e.g. 학생과 학과)
행위 관계는 특정한 행위로 연관성이 생기는 관계 (e.g. 학생과 출석부)
✏ 표기법
- 관계명 : 관계의 이름
- 관계차수 : 관계에 참여하는 수
- 관계선택사양 : 필수 or 선택 여부
5. 식별자란?
식별자는 속성 중 각각의 인스턴스를 구분 가능하게 만들어주는 속성을 의미한다.
✏ 주식별자 (Primary Key)
주식별자는 기본키에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수 있고, 여러 개의 속성이 주식별자가 될 수 있다.
특징
- 유일성 : 각 인스턴스가 식별이 가능하도록 한다.
- 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
- 불변성 : 속성값이 변하지 않아야 한다.
- 존재성 : 속성값이 NULL일 수 없다.
✏ 식별자 분류 방식
- 대표성 여부
- 주식별자(Primary Key) : 대표 식별자, 다른 엔터티와 참조 관계로 연결
- 보조식별자 : 대표 식별자가 아님, 다른 엔터티와 참조 관계로 연결되지 않음
- 스스로 생성되었는지 여부
- 내부식별자 : 엔터티 내부에서 스스로 생성된 식별자
- 외부식별자 : 다른 엔터티에서 온 식별자
- 단일 속성의 여부
- 단일식별자 : 하나의 속성으로 구성된 식별자
- 복합식별자 : 두 개 이상의 속성으로 구성된 식별자
- 대체 여부
- 원조식별자 : 업무 프로세스에 존재하는, 가공되지 않은 식별자
- 대리(인조)식별자 : 주식별자의 속성이 여러 개일 때, 하나로 묶어서 사용하는 식별자
✏ 식별자 관계 vs 비식별자 관계
- 식별자 관계
- 부모 식별자 = 자식 주식별자인 관계, 주식별자는 반드시 존재해야 하므로 부모 엔터티가 있어야 자식 엔터티가 생성 가능
- 비식별자 관계
- 부모 식별자 ≠ 자식 주식별자인 관계, 부모 엔터티가 없는 자식 엔터티 생성이 가능