ER 모델을 관계형 모델로 변환
1) 일대일 (1:1) 관계
두 개체에 해당하는 테이블 생성하고 어느 한쪽 기본키를 다른 테이블에 포함시켜 외래키로 유지
2) 일대다 (1:N) 관계
- 개체 1, 개체 2에 해당하는 테이블 생성
- 두 개체에서 개체 1은 1 쪽에, 개체 2는 N 쪽에 참여한다고 했을 시 개체 1 기본키를 개체 2 외래키 필드로 추가
3) 다대다 (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) 반정규화 특징
- 정규화 모델에 수행되는 의도적인 정규화 원칙 위배하는 행위
- 과도한 반 정규화는 오히려 성능 저하 초래
장점 | 성능 향상과 관리 효율성 증가 |
단점 | 데이터 일관성 및 정합성 저하 |
2) 반정규화 유형
(1) 중복테이블 추가
여러 테이블에서 추출한 데이터 통계 정보를 사용하고자 할 때 효과적
추가방법 | 집계 테이블 추가 | 원본테이블에 트리거 적용 |
진행 테이블 추가 | 이력 관리를 목적으로 추가 | |
특정 부분만을 포함하는 테이블 추가 |
(2) 테이블 통합
조인 연산 많을 경우 하나의 테이블로 통합해 조인 횟수 줄임
테이블 통합 시 고려 사항
- 검색은 용이하지만 튜플 수 증가
- 입력, 수정, 삭제 규칙 복잡
- Not Null, Default, Check 등 제약 조건 설계 어려움
(3) 테이블 분리
하나의 테이블로 수평, 수직으로 분리하고 (파티셔닝)하여 성능 향상
- 수평분할 : 레코드 기준, 사용 빈도 따라 분할
- 수직분할 : 자주 조회속성, 크기 큰 속성, 보안 속성, 속성 많을 때
'Study > 정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 데이터 입출력 구현 _ 데이터베이스 트렌드 (0) | 2025.02.25 |
---|---|
[정보처리기사 실기] 데이터 입출력 구현 _ 물리 데이터 저장소 (0) | 2025.02.21 |
[정보처리기사 실기] 데이터 입출력 구현 _ 논리 데이터 저장소 (1) (0) | 2025.02.17 |
[정보처리기사 실기] 3장 데이터 입출력 구현 _ 데이터베이스 기초 (0) | 2025.02.13 |
[정보처리기사 실기] 2장 화면 설계 _ UI 설계 (0) | 2025.02.12 |