Database
[SQLD 이론 심화] 1. 데이터 모델링
noahkim_
2021. 7. 29. 02:14
해당 포스팅은 패스트캠퍼스 '데이터베이스와 SQLD 합격패스 Online' 강의를 듣고 공부한 내용을 정리한 것입니다.
1. 데이터 모델링
- 현실 세계의 업무를 분석하여 이를 데이터베이스 구조로 추상화하는 작업
| 구분 | 항목 | 설명 |
| 특징 | 추상화 |
현실 세계를 핵심 요소 중심으로 표현
|
| 단순화 |
복잡한 구조를 제한된 표기법으로 단순하게 표현
|
|
| 명확화 |
애매모호함 제거, 누구나 이해 가능하게 정의
|
|
| 관점 | 데이터 관점 |
어떤 데이터를 관리할 것인가에 초점
|
| 프로세스 관점 | 무엇을 수행해야 하는가에 초점 | |
| 상관 관점 | 데이터와 프로세스 간의 상호작용 | |
| 중요성 | 파급효과 | 초기 설계가 전체 시스템에 큰 영향 |
| 데이터 품질 향상 | 중복, 비일관성, 비유연성 제거 | |
| 유지보수 비용 절감 | 구조가 명확해 변경 비용 감소 |
설계 단계
| 구분 | 개념적 모델링 | 논리적 모델링 | 물리적 모델링 |
| 목적 | 업무 중심 구조 도출 | DB 스키마 설계 | 실제 DBMS 구현 |
| 중심 내용 | Entity 도출, Relation 설정 | Mapping Rule 적용, 정규화 | 인덱싱, 파티셔닝, 역정규화 등 |
| 산출물 | ERD | 테이블 스키마 | 실제 DB 테이블 |
| 추상화 수준 | 높음 | 중간 | 낮음 (구체적) |
| 특징 | 기술 독립적 | DBMS 독립적 | DBMS 의존적 |
개념적 모델링) Entity 도출
더보기
- 업무에서 관리해야 하는 객체를 추상화함
| 구분 | 항목 | 설명 | 예시 |
| Attribute | 기초 속성 |
엔터티가 원래 가지고 있는 속성
|
이름, 생년월일
|
| 추출(파생) 속성 |
다른 속성으로부터 계산되어 생성
|
나이 = 현재연도 - 출생연도
|
|
| 설계 속성 |
설계자가 필요에 의해 추가
|
등록일시, 상태코드
|
|
| Identifier | 기본키 (PK) | 대표 식별자 | |
| 후보키 | 기본키가 될 수 있는 모든 키 | ||
| 대체키 | 후보키 중 기본키로 선택되지 않은 키 | ||
| 복합키 | 2개 이상의 속성으로 구성된 기본키 | ||
| 인공키 (Surrogate Key) |
의미 없이 식별용으로 만든 키
|
자동 증가 번호
|
개념적 모델링) Relation
더보기


- cardinality: 한 엔티티의 한 행이 다른 엔티티의 몇 개 행과 연결될 수 있는가를 나타냄. (1:1, 1:N 표현. 실선)
- optionality: 해당 관계가 반드시 존재하는 지를 나타냄 (동그라미 or 실선)
논리적 모델링) Mapping Rule 적용
더보기
- 엔티티 → 테이블
- 속성 → 컬럼
- 식별자 → 기본키
- 관게 → 참조키
논리적 모델링) 정규화
더보기
- 테이블을 구조화하여 데이터 중복을 최소화하고 무결성을 유지하며 이상 현상을 제거하는 과정
| 구분 | 1NF (제1정규형) | 2NF (제2정규형) | 3NF (제3정규형) |
| 핵심 개념 | 원자값 보장 | 완전 함수 종속 |
일반 컬럼 간 종속 제거
|
| 제거 대상 | 반복 그룹 | 부분 함수 종속 |
이행적 종속
|
| 해결 방법 | 반복 속성 분리 | 부분 종속 속성 분리 |
종속 컬럼을 별도 테이블 분리
|
| 목적 | 구조 정리 | 중복 제거 |
데이터 구조 안정화
|
| 관련 이상 | 구조적 삽입 문제 | 갱신 이상 | 삭제 이상 |
논리적 모델링) 정규화 (이상 현상)
더보기
| 구분 | 삭제 이상 | 갱신 이상 | 삽입 이상 |
| 정의 | 한 행을 삭제할 때 유지되어야 할 다른 정보까지 함께 삭제되는 문제 | 동일 데이터가 여러 행에 중복 저장되어 일부만 수정되면 정합성이 깨지는 문제 | 특정 정보를 독립적으로 추가할 수 없는 문제 |
| 발생 원인 | 서로 다른 엔터티 정보가 한 테이블에 함께 저장됨 | 데이터 중복 저장 | PK 구조 및 종속 관계 문제 |
| 예시 | 학생 삭제 → 학과 정보까지 삭제 | 과목명 변경 시 여러 행 수정 필요 | 학생이 없어 학과 정보만 INSERT 불가 |
| 문제점 | 정보 손실 | 데이터 불일치 | 데이터 추가 제한 |
논리적 모델링) 정규화 (부분 함수 종속)
더보기
- 함수적 종속: A → B (A가 결정되면 B는 하나로 결정됨)
- 완전 함수 종속: 비기본키 속성이 기본키 전체에 종속되는 경우
- 부분 함수 종속: 비기본키 속성이 기본키 일부에 종속되는 경우
ex) (학번, 과목 코드)가 기본키이고, 과목코드→ 과목명인 경우
| 학번 | 과목코드 | 과목명 |
| 1001 | CS101 | 자료구조 |
| 1002 | CS101 | 자료구조 |
- ⚠️ 갱신 이상: 과목명 수정 시, 여러 행 갱신이 필요함
- ➡️ 별도의 매핑 테이블 분리를 통해 부분 함수 종속 제거하기
논리적 모델링) 정규화 (이행적 종속)
더보기
- 기본키가 아닌 일반 컬럼이 또 다른 일반 컬럼에 종속되는 경우
- ➡️ 비기본키 속성은 기본키에만 직접 종속되어야 함
ex) 학번 → 학과 코드, 학과 코드 → 학과명
| 학번 (PK) | 학과코드 | 학과명 |
| 1001 | CS | 컴퓨터공학 |
| 1002 | DB | 데이터사이언스 |
- ⚠️ 삭제 이상: '데이터사이언스' 학과 명 행 삭제 시, 학과명 '데이터사이언스' 정보가 사라짐
- ➡️ 별도의 매핑 테이블 분리를 통해 이행적 종속 제거하기
물리적 모델링) 식별 관계
더보기
| 구분 | 식별 관계 (Identifying Relationship) |
비식별 관계 (Non-Identifying Relationship)
|
| 정의 | 부모 엔터티의 PK가 자식 엔터티의 PK에 포함됨 |
부모 엔터티의 PK가 자식 엔터티의 PK에 포함되지 않음
|
| PK 구조 | 자식 PK에 부모 PK 포함 | 자식 PK는 독립적으로 존재 |
| FK 역할 | 부모 PK가 자식 PK의 일부 | 부모 PK는 단순 FK로만 존재 |
| 종속성 | 강한 종속 (자식은 부모 없이는 의미 없음) | 약한 종속 (자식은 독립적 생애주기 가능) |
| ERD | 실선 | 점선 |
| 사용 상황 | 상세/구성 요소 모델 | 독립 개체 + 참조 관계 |
| 예시 | 주문 - 주문상세 (주문 상세는 주문없이 의미가 없음) |
고객 - 고객문의 (고객이 탈퇴해도 문의 기록은 남을 수 있음) |
물리적 모델링) 역정규화
더보기
- 정규화를 일부 완화시켜 성능을 향상시키는 기법
- ✅ 중복을 제거하고 무결성을 강화하지만, JOIN 증가하여 조회 성능이 저하될 수 있음
- ➡️ 성능 향상을 위해 일부 중복을 허용하는 기법
2. 데이터베이스 구조
| 구분 | 외부 스키마 | 개념 스키마 | 내부 스키마 |
| 관점 | 사용자 관점 | 통합 관점 | 물리적 관점 |
| 의미 | 사용자별 View | 조직 전체의 논리적 구조 | 실제 저장 구조 |
| 개수 | 여러 개 가능 | 하나 | 하나 |
| 내용 | 필요한 데이터만 보여줌 | 전체 DB 구조 정의 | 저장 방식, 파일 구조, 인덱스 |
| 예시 | 은행 직원 화면 / 고객 화면 | 고객, 계좌, 거래 테이블 구조 | B-Tree 인덱스, 페이지 구조 |
데이터 독립성
- 3단계 구조의 핵심 목적
| 구분 | 논리적 독립성 |
물리적 독립성
|
| 정의 | 개념 스키마가 변경되어도 외부 스키마에 영향을 주지 않는 것 |
내부 스키마가 변경되어도 개념/외부 스키마에 영향을 주지 않는 것
|
| 보호 대상 | 사용자 View | 논리적 구조 |
| 변경 예 | 테이블에 컬럼 추가/삭제 | 인덱스 생성, 저장 구조 변경 |
| 영향 범위 | 사용자 프로그램 영향 없음 | 애플리케이션 영향 없음 |
| 목적 | 사용자 관점 보호 | 저장 구조 변경으로부터 보호 |
매핑
| 구분 | 외부적 / 개념적 사상 (논리적 매핑) | 개념적 / 내부적 사상 (물리적 매핑) |
| 연결 대상 | 외부 스키마 ↔ 개념 스키마 | 개념 스키마 ↔ 내부 스키마 |
| 역할 | 사용자 View와 전체 논리 구조 연결 | 논리 구조와 실제 저장 구조 연결 |
| 목적 | 논리적 독립성 보장 | 물리적 독립성 보장 |
| 변경 시 영향 | 개념 스키마 변경 시 외부 보호 | 내부 구조 변경 시 개념/외부 보호 |
| 예시 | 사용자 화면과 테이블 구조 연결 | 테이블과 인덱스/파일 구조 연결 |
| 핵심 개념 | View 정의 | 저장 구조 정의 |
출처