논리적 모델링 정의 (Logical Modeling)
- 목표 : 컬럼과 데이터 타입을 정의하고, 정규화를 수행한다.
- 논리적 모델링은 개념 모델을 바탕으로 속성, 식별자, 관계 구조를 상세화하는 과정으로, 실제 테이블 구조에 가까운 형태로 데이터를 정제하고 구조화하는 작업
- 속성 정의에서는 기본, 복합, 파생 속성뿐만 아니라 널 허용 여부, 도메인 제약조건까지 명확히 해야 하며, 식별자 설계에서는 후보키 중 하나를 기본키로 선정하고, 나머지는 대체키로 관리함으로써 유일성과 무결성을 보장한다.
- 정규화 과정은 데이터 중복과 이상 현상을 제거하기 위한 핵심 기법으로, 1NF에서 시작해 3NF, BCNF까지 점진적으로 적용하며, 필요 시 성능을 고려해 역정규화를 판단해야 한다.
- 논리적 모델링의 결과물은 이후 물리 모델 구현의 기반이 되는 중요한 설계이다.
- 산출물 : 논리 데이터 모델 (제약조건정의, 정규화 등 완료!)
ERD (Entity-Relationship Diagram) — 논리적 모델링 단계
- PK(기본키): 행을 고유 식별. 여러 컬럼을 묶은 복합키, 또는 시스템이 부여하는 대리키로 구성 가능
- FK(외래키): 다른 테이블의 PK를 참조해 테이블 간 관계를 표현
- 정규화: 데이터 중복/이상 현상을 줄이기 위해 컬럼을 여러 테이블로 분리

속성
- 속성(Attribute)은 엔티티 구성 요소이며 데이터를 저장하는 최소 단위로 추후 물리 모델에서 테이블의 컬럼으로 구현된다.
- 속성의 도메인
- 속성이 가질 수 있는 값의 허용 범위 또는 규칙 집합
- 속성의 데이터 형식, 길이, 제약조건, 기본값 등을 도메인 정의에 포함시켜 데이터 일관성(적합성)을 보장
식별자 (Identifier)
- 논리 모델링에서는 각 엔티티의 개별 인스턴스를 고유하게 식별할 수 있도록 식별자 설계해야한다..
- 후보키(Candidate Key) : 레코드를 유일하게 식별할 수 있는 속성 또는 속성 집합 이 중 하나를 기본키로 선택한다.
- 기본키(Primary Key) : 후보키 중 실제로 선택된 대표식별자로 유일하게 식별할 수 있어야하며, 값은 Null, 중복 불가
- 유일성, 불변성, 최소성, 단순성 만족 필수
- 복합키(Composite Key) : 조합키, 합성키라고도 하며 하나의 속성으로 릴레이션에서 기본키 역할을 온전히 수행할 수 없을때 후보키를 조합하여 기본키 역할을 해내는 Key를 의미한다.
- 대체키(Alternate Key) : 후보키 중 기본키로 선택되지 않은 나머지키를 의미
- 외래키(Foreign Key) : 다른 엔티티의 기본키를 참조하는 속성으로 엔티티간의 종속성을 표현
정규화 (Normalization)
- 데이터 중복을 줄이고, 삽입/갱신/삭제 시 발생할 수 있는 이상 현상(Anomaly)을 방지하기 위해 테이블을 분해하는 과정 단계별로 지켜야 할 규칙을 정규형(Normal Form) 이라고 명칭하며 순서대로 1NF → 2NF → 3NF로 → BCNF 진행된다.
- 삭제 이상 : 원하지 않는 데이터가 삭제됨
- 삽입 이상 : 어떤 데이터를 넣고싶은데 다른 정보가 없어서 삽입 불가
- 수정이상 : 중복된 모든 데이터를 전부 수정하지 않으면 서로 다른 값이 됨
1NF (제 1정규형) : 원자값 분해
- 규칙 : 하나의 컬럼에는 하나의 값만 들어가 있어야한다.
2NF (제 2정규형) : 부분 함수 종속 제거
- 규칙 : 1NF를 만족하면서, 기본키 전체에 종속되지 않는 컬럼(기본키의 일부에만 종속된 컬럼)을 분리해야 한다. (복합키를 쓸 때 주로 발생하는 문제)
3NF (제 3정규형) : 이행적 함수 종속 제거
- 규칙 : 2NF를 만족하면서, 기본키가 아닌 컬럼이 다른 결정자 역할을 하지 못하도록 분리해야 한다.
BCNF : 결정자의 후보키화
- 규칙 : 3NF를 만족하면서, 모든 결정자는 후보키여야한다.

반응형
'코드잇 스프린트 > TIL' 카테고리의 다른 글
| [TIL] 데이터베이스 설계 순차적 정리 (0) | 2026.09.02 |
|---|---|
| [TIL] 물리적 모델링 (0) | 2026.09.02 |
| [TIL] 개념적 모델링 ERD (0) | 2026.09.02 |
| [TIL] DB 트랜잭션 개념 (0) | 2026.09.02 |
| [TIL] 데이터베이스 트랜잭션 격리레벨(Isolation Lavel) (0) | 2026.09.02 |