1과목: 데이터 모델링의 이해
SQLD 1과목 핵심 개념을 한눈에 정리
1장. 데이터 모델링의 이해
데이터 모델링 정의
현실 세계의 데이터를 추상화하여 DB로 표현하는 과정. 업무에서 필요한 데이터를 분석하고 구조화하는 것.
3가지 관점
| 관점 | 설명 |
|---|---|
| 데이터 | 업무가 어떤 데이터와 관련이 있는지 (What) |
| 프로세스 | 업무가 실제로 하고 있는 일이 무엇인지 (How) |
| 상관 | 데이터와 프로세스의 관계 (Interaction) |
3단계 스키마 구조 (데이터 독립성)
| 스키마 | 설명 | 독립성 |
|---|---|---|
| 외부 스키마 | 사용자 관점의 뷰(View) | 논리적 독립성 |
| 개념 스키마 | 통합된 전체 논리 구조 | — |
| 내부 스키마 | 물리적 저장 구조 | 물리적 독립성 |
논리적 독립성: 개념 스키마 변경 시 외부 스키마 영향 없음 / 물리적 독립성: 내부 스키마 변경 시 개념 스키마 영향 없음
데이터 모델링 3단계
| 단계 | 설명 | 산출물 |
|---|---|---|
| 개념적 | 핵심 엔터티와 관계 도출 (추상화 높음) | ERD |
| 논리적 | 속성, 키, 정규화 수행 | 상세 ERD |
| 물리적 | 실제 DB 구현 (테이블, 인덱스, 파티션) | 테이블 명세 |
2장. 엔터티
엔터티 정의 및 특징
업무에 필요하고 관리해야 할 데이터의 집합. 반드시 2개 이상의 인스턴스가 있어야 함.
- • 업무에서 필요로 하는 관리 대상
- • 유일한 식별자에 의해 식별 가능
- • 2개 이상의 속성 보유
- • 다른 엔터티와 1개 이상의 관계
- • 업무 프로세스에서 이용
엔터티 분류
| 분류 기준 | 유형 | 예시 |
|---|---|---|
| 유무형 | 유형 | 사원, 물품, 강사 |
| 개념 | 보험상품, 조직 | |
| 사건 | 주문, 청구, 미납 | |
| 발생시점 | 기본 엔터티 | 고객, 부서, 상품 (독립적) |
| 중심 엔터티 | 주문, 계약 (기본에서 파생) | |
| 행위 엔터티 | 주문상세, 이력 (2개 이상 부모) |
3장. 속성
속성 정의 및 특징
엔터티에서 관리하는 더 이상 분리되지 않는 최소 데이터 단위. 하나의 속성은 하나의 속성값만 가짐 (원자성).
속성 분류
| 유형 | 설명 | 예시 |
|---|---|---|
| 기본 속성 | 업무에서 직접 추출한 속성 | 이름, 전화번호 |
| 설계 속성 | 설계 과정에서 만든 속성 | 고객번호, 주문코드 |
| 파생 속성 | 다른 속성으로부터 계산/변환된 속성 | 합계, 평균, 나이 |
도메인
각 속성이 가질 수 있는 값의 범위(허용값). 예: 학년 속성의 도메인은 1~6, 성별 속성의 도메인은 남/여.
4장. 관계
관계 종류
| 종류 | 설명 | 예시 |
|---|---|---|
| 존재 관계 | 존재 자체로 연관 (소속) | 부서 — 사원 |
| 행위 관계 | 특정 행위에 의해 발생 | 고객 — 주문 |
관계 표기법
| 항목 | 설명 |
|---|---|
| 관계명 | 관계의 이름 (동사형으로 표현, 양방향 각각 명명) |
| 관계차수 | 1:1, 1:N, M:N (참여하는 수) |
| 관계선택사양 | 필수(Mandatory) | 또는 선택(Optional) O |
ERD 읽기 포인트
- • 실선 = 식별관계 / 점선 = 비식별관계
- • | (필수 참여) / O (선택 참여)
- • 까마귀발(Crow's Foot) = 다(N) 쪽
5장. 식별자
식별자 분류
| 분류 기준 | 유형 | 설명 |
|---|---|---|
| 대표성 | 주식별자 (PK) | 엔터티를 대표, 유일성 + NOT NULL |
| 보조식별자 | 유일성은 있으나 대표가 아님 (Unique) | |
| 생성여부 | 내부식별자 | 엔터티 내부에서 스스로 생성 |
| 외부식별자 (FK) | 다른 엔터티에서 받아온 식별자 | |
| 속성 수 | 단일식별자 | 하나의 속성으로 식별 |
| 복합식별자 | 2개 이상 속성으로 식별 | |
| 대체여부 | 본질식별자 | 업무에 의해 자연 생성 |
| 인조식별자 | 인위적으로 만든 대체키 (시퀀스 등) |
식별관계 vs 비식별관계
| 구분 | 식별관계 | 비식별관계 |
|---|---|---|
| FK 위치 | 자식의 PK에 포함 | 자식의 일반 속성 |
| ERD 표기 | 실선 | 점선 |
| NULL | 불가 (PK이므로) | 허용 가능 |
| 강한/약한 | 강한 종속 (부모 없이 존재 불가) | 약한 종속 (독립적 존재 가능) |
6장. 정규화
정규화 단계
| 단계 | 규칙 | 핵심 |
|---|---|---|
| 1NF | 모든 속성이 원자값 | 반복 그룹 제거, 다중값 분리 |
| 2NF | 부분 함수종속 제거 | 복합키의 일부에만 종속되는 속성 분리 |
| 3NF | 이행 함수종속 제거 | A→B→C일 때 A→C 종속 제거 |
| BCNF | 모든 결정자가 후보키 | 후보키가 아닌 결정자 제거 |
이상현상 (Anomaly)
| 유형 | 설명 |
|---|---|
| 삽입 이상 | 불필요한 데이터를 함께 삽입해야 하는 문제 |
| 갱신 이상 | 일부만 수정 시 데이터 불일치 발생 |
| 삭제 이상 | 필요한 데이터까지 함께 삭제되는 문제 |
함수종속성
X 값이 Y 값을 유일하게 결정하면 Y는 X에 함수종속 (X→Y). X를 결정자, Y를 종속자라 함. 정규화의 핵심 기반 개념.
7장. 반정규화
반정규화 정의
정규화된 테이블을 성능 향상을 위해 의도적으로 중복/통합/분리하는 기법. 데이터 무결성이 저하될 수 있어 꼭 필요한 경우에만 수행.
반정규화가 필요한 경우
- • 조인이 많아 조회 성능이 저하될 때
- • 대량 데이터 범위 처리 시
- • 통계/집계 처리가 빈번할 때
- • 특정 범위의 데이터만 자주 조회할 때
반정규화 유형
| 대상 | 기법 | 설명 |
|---|---|---|
| 테이블 | 테이블 병합 | 1:1 또는 1:N 관계를 하나로 통합 |
| 테이블 분할 | 수직(컬럼) 또는 수평(행) 분할 | |
| 테이블 추가 | 통계, 이력, 부분 테이블 추가 | |
| 컬럼 | 중복 컬럼 추가 | 조인 줄이기 위해 다른 테이블 컬럼 복사 |
| 파생 컬럼 추가 | 계산 결과를 미리 저장 (합계 등) | |
| 관계 | 중복 관계 추가 | 빠른 경로로 직접 참조 관계 추가 |
8장. 기타
성능 데이터 모델링
데이터 모델링 단계에서부터 성능을 고려하여 설계하는 것. 분석/설계 단계에서 수행하는 것이 가장 효과적.
- • 정규화를 정확히 수행
- • DB 용량 산정
- • 트랜잭션 유형 파악
- • 반정규화 수행
- • 이력 모델, PK/FK, 슈퍼/서브타입 조정
슈퍼타입 / 서브타입
공통 속성은 슈퍼타입에, 개별 속성은 서브타입에 모델링. 물리 변환 시 3가지 방식 선택.
| 방식 | 설명 | 특징 |
|---|---|---|
| Single Table | 하나의 테이블로 통합 | 조인 없음, NULL 많음 |
| Plus Type | 슈퍼 + 서브 각각 테이블 | 조인 필요, 명확한 구분 |
| Single Type | 서브타입별 개별 테이블 | 중복 있음, 조인 없음 |
분산 데이터베이스
여러 지역의 DB를 네트워크로 연결하여 하나의 DB처럼 사용하는 시스템.
- 투명성(Transparency): 분할, 위치, 지역사상, 중복, 장애, 병행 투명성
- 장점: 신뢰성, 가용성 향상, 빠른 응답
- 단점: 관리 복잡, 무결성 제어 어려움, 비용 증가
개념을 확인했다면 문제로 실력을 검증해보세요