본문 바로가기

Study/정보처리기사 실기

[정보처리기사 실기] 데이터 입출력 구현 _ 논리 데이터 저장소 (2)

ER 모델을 관계형 모델로 변환

1) 일대일 (1:1) 관계

두 개체에 해당하는 테이블 생성하고 어느 한쪽 기본키를 다른 테이블에 포함시켜 외래키로 유지

일대일 (1:1) 관계
일대일 (1:1) 관계


2) 일대다 (1:N) 관계

- 개체 1, 개체 2에 해당하는 테이블 생성

- 두 개체에서 개체 1은 1 쪽에, 개체 2는 N 쪽에 참여한다고 했을 시 개체 1 기본키를 개체 2 외래키 필드로 추가

일대다 (1:N) 관계
일대다 (1:N) 관계


3) 다대다 (M:N) 관계

- 두 개체를 각각 테이블로 생성, 관계 또한 개체처럼 새로운 테이블 생성

- 새로운 테이블 키 속성은 두 개체의 기본키로 구성되는 복합키로 구성

다대다 (M:N) 관계
다대다 (M:N) 관계

 


이상 (Anomaly) 현상

 - 스키마 설계 잘못되면 데이터 중복되고, 속성 간 종속 관계로 릴레이션 조작 시 원치 않은 결과 나오는 것

- 정규화 거치지 않으면 데이터베이스 내 데이터들이 불필요하게 중복, 릴레이션 조작 시 예기치 못한 곤란한 현상 발생

 

이상현상 종류

  • 삽입이상 (Insertion Anomaly) : 데이터 삽입 시 원하지 않는 값 함께 삽입
  • 삭제이상 (Deletion Anomaly) : 데이터 삭제 시 원하지 않는 값 연쇄 삭제
  • 갱신이상 (Update Anomaly) : 중복 데이터 갱신 시 일부 값만 변경

함수 종속

- 어떤 릴레이션 R에서 속성 X 각 값에 대해 속성 Y 값이 오직 하나만 연관되어 있을 때

Y는 X에 함수적 종속이라 하고 X → Y로 표현

- X를 결정자 (Determianant), Y를 종속자 (Dependent)라 함

 

1) 함수종속 표현

학번 과목 성적 학년

 

종속 관계 : {학번, 과목} → 성적, 학번 → 학년

- 하나의 릴레이션에는 하나의 종속관계만 나타나야 함

- 만약 여러 종속관계 나타나면 이상현상 발생하기 때문에 릴레이션 분해 통해 해결해야 함


2) 함수종속 종류

- 함수 종속성은 부분 함수 종속, 이행 함수 종속, 완전 함수 종속으로 나눌 수 있음

- 부분 함수 종속과 이행 함수 종속은 이상 현상 원인이 됨

 

부분 함수 종속

부분 함수 종속
부분 함수 종속


이행 함수 종속

속성 A, B, C 사이에서 A → B, B → C 이면 A → C 인 관계 성립되는 종속성

이행 함수 종속
이행 함수 종속


결정자가 키가 아닌 종속관계

결정자가 키가 아닌 종속관계
결정자가 키가 아닌 종속관계

 

'교수' 속성은 결정자지만 키가 아니므로 이상현상 발생하고 따라서 릴레이션 분해 요구됨


정규화 (Normalization)

- 하나 이상의 속성 간 종속성이 발생하는 릴레이션에서 하나의 종속관계만 표현되도록 스키마를 분해해 바람직한 스키마 즉, 이상현상이 제거된 릴레이션으로 만들어 가는 과정

- 논리적 설계 단계에서 수행

- 정규화 통해 분해된 릴레이션을 정규형 릴레이션이라 함

- 정규형 릴레이션은 1NF, 2NF, 3NF, BCNF, 4NF, 5NF 구분되고 차수 높을수록 더 강한 제약조건 적용

- 프로젝트 (π) 연산 통해 무손실 분해되어야 함

 

1) 정규화 목적

- 어떤 릴레이션이라도 데이터베이스 내에서 표현 가능하도록 함

- 데이터 삽입 시, 릴레이션을 재구성할 필요성 줄일 수 있음

- 바람직하지 않은 삽입, 삭제, 갱신 이상 발생 방지

- 효과적인 검색 알고리즘 생성


2) 정규형 릴레이션

정규형 릴레이션
정규형 릴레이션


반정규화 = 역 정규화

- 정규화된 개체, 속성, 관계에 대해 성능 향상과 개발 운영 단순화 위해 중복, 통합, 분리 등 수행하는 데이터 모델링 기법

- 데이터 조회 시 디스크 입출력이 많아 성능 저하되거나, 조인 연산 시 성능 저하 예상될 때 수행

1차 정규화
1차 정규화

 

1) 반정규화 특징

- 정규화 모델에 수행되는 의도적인 정규화 원칙 위배하는 행위

- 과도한 반 정규화는 오히려 성능 저하 초래

장점 성능 향상과 관리 효율성 증가
단점 데이터 일관성 및 정합성 저하

2) 반정규화 유형

(1) 중복테이블 추가

여러 테이블에서 추출한 데이터 통계 정보를 사용하고자 할 때 효과적

추가방법 집계 테이블 추가 원본테이블에 트리거 적용
진행 테이블 추가 이력 관리를 목적으로 추가
특정 부분만을 포함하는 테이블 추가

(2) 테이블 통합

조인 연산 많을 경우 하나의 테이블로 통합해 조인 횟수 줄임

 

테이블 통합 시 고려 사항

- 검색은 용이하지만 튜플 수 증가

- 입력, 수정, 삭제 규칙 복잡

- Not Null, Default, Check 등 제약 조건 설계 어려움

 

테이블 통합
테이블 통합


(3) 테이블 분리

하나의 테이블로 수평, 수직으로 분리하고 (파티셔닝)하여 성능 향상

  • 수평분할 : 레코드 기준, 사용 빈도 따라 분할
  • 수직분할 : 자주 조회속성, 크기 큰 속성, 보안 속성, 속성 많을 때

테이블 분리
테이블 분리