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 정의 저장 구조 정의

 

 

출처