-
정보처리기사 실기 스터디[2022-09-23] - 데이터 입출력 구현자격증/정보처리기사 2022. 9. 23. 23:11
📌 Study
🔸 2022-09-23
[논리 데이터 저장소 확인]
1. 정규화(Normalization)
- 개념 : 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상현상 방지, 데이터 무손실 분해 과정
- 이상 현상 : 데이터 중복성으로 인해 릴레이션 조작 시 발생하는 비합리적 현상
이상 현상 설명 삽입 이상
정보 저장 시 불필요한 세부정보를 입력해야 하는 이상 현상 삭제 이상
원하지 않는 다른 정보가 같이 삭제하는 이상 현상 갱신 이상
특정 부분만 수정되어 중복 값이 모순을 일으키는 이상 현상 - 정규화 단계
단계 조건 1 정규형(1NF)
원자값으로 구성 2 정규형(2NF)
부분 함수 종속 제거 3 정규형(3NF)
이행 함수 종속 제거 보이스-코드 정규형(BCNF)
결정자 후보 키 아닌 함수 종속 제거 4 정규형(4NF)
다치 종속 제거 5 정규형(5NF)
조인 종속 제거 - 1차 정규화(1NF)
- 테이블 내 속성값은
원자값
을 가지고 있어야함 속성 1개
만 가지도록 저장하면1차 정규화
만족- 예시 : 도메인, 이메일
- 테이블 내 속성값은
- 2차 정규화(2NF)
<고객명>
,<서비스 이름>
이<서비스 이용 기간>
에 영향<서비스 이름>
이<서비스 가격>
에 영향을 주는 관계 =>부분함수 종속 관계
- 이를 부분 함수 종속 제거하여
<서비스 이름, 서비스 가격>
관계를별도의 테이블
로 두면2차 정규화
만족 - 예시 : 수영, 헬스 이용 서비스
- 3차 정규화(3NF)
A -> B
이고,B -> C
이면서A -> C
관계가 같이 있는 경우 =>이행함수 종속 관계
A -> C
관계가 직접 영향을 주는 관계가 아니므로 테이블로 분리하여 이행 함수 종속 제거하면3차 정규화
만족- 예시 : 도서 - 출판 - 홈페이지
- 보이스 - 코드 정규화(BCNF)
<학번, 과목명>
이<교수명>
에 영향,<교수명>
이<과목명>
에 영향<교수명>
은 키가 아닌 상황이므로 결정자인<교수명>
이 후보 키가 아님<교수명>
은<과목명>
에 직접 영향을 주기 때문에<교수명, 과목명>
테이블로 분리<교수명>
이 후보 키 역할을 하도록 하면BCNF 정규화
만족- 예시 : 수강신청 - 교수명 - 과목명
- 4차 정규화(4NF)
<개발자>
마다<자격증>
값들이 여러 개 존재<개발자>
마다<언어>
값들이 여러 개 존재<개발자, 자격증>
,<개발자, 언어>
테이블로 분리하여 관리하면 다치 종속 제거하여4차 정규화
만족- 예시 : 개발자 - 자격증 - 언어
- 5차 정규화(5NF)
- 4차 정규화 테이블에 대해 조인 연산을 수행하면 4차 정규화 수행 전 데이터와 다르게 되는 문제 발생
- 모든 속성 관계인
<개발자, 자격증>
,<개발자, 언어>
뿐 아니라<자격증, 언어>
관계에 대한 테이블을 만들어줌 - 조인했을 때, 정확히 원래의 데이터로 복원할 수 있게 되어
5차 정규화
만족 - 예시 : 개발자 - 자격증 - 언어
2. 반 정규화(De-Normalization)
- 정규화 된 개체, 속성, 관계에 대해 성능 향상 및 개발 운영의 단순화를 위해 수행하는 모델링 기법
- 비 정규화, 역 정규화
- 특징
- 장점 : 성능 향상과 데이터 관리 효율성 증가
- 단점 : 유지 비용 발생, 데이터 일관성 저하
- 반 정규화 기법
- 테이블, 컬럼, 관계
테이블
:병합, 분할, 중복 테이블
추가- 병합 : 조인 횟수를 줄여 성능 향상
- 분할 :
수평 분할
: 레코드 기준 활용,수직 분할
: 갱신, 자주 조회, 보안 적용 - 중복테이블 추가 :
집계 테이블
: 트리거 설정,진행 테이블
: 이력 관리, 데이터 양 유지,특정 부분만 추가
컬럼
: 중복화관계
: 중복 관계 추가
- 릴레이션 A, B가 있을 때 릴레이션 B 조건에 맞는 것들만 릴레이션 A에서 튜플을 꺼내 프로젝션하는 관계 대수 = 디비전(÷)
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 실기 스터디[2022-09-25] - 연계 데이터 구성 (0) 2022.09.25 정보처리기사 실기 스터디[2022-09-24] - 데이터 입출력 구현 (0) 2022.09.24 정보처리기사 실기 스터디[2022-09-22] - 데이터 입출력 구현 (0) 2022.09.22 정보처리기사 실기 스터디[2022-09-21] - UI 설계 (0) 2022.09.22 정보처리기사 실기 스터디[2022-09-20] - UI 설계 (0) 2022.09.22