정보처리기사 필기발행일 2024. 2. 24.원본 https://blog.naver.com/jword_/223361826577 ↗

데이터 베이스 정규화 총 정리

데이터 베이스 정규화 총 정리 — #정보처리기사 #정규화 #반정규화 24년도 1회차 정보처리기사 필기 시험대비 공부를 진행하였습니다. * 본...

#정보처리기사 필기#Naver Blog

#정보처리기사 #정규화 #반정규화

24년도 1회차 정보처리기사 필기 시험대비 공부를 진행하였습니다.

\* 본글은 PC버전에 최적화 되어있습니다.

​

​

​

**\\ **공부방법론은 가장 첫글에 있습니다. 참고하실 분들은 참고하세요! \\

이미지

데이터 베이스의 정규화

데이터 베이스의 정규화는 현 시대의 입장에서는 크게 고려할 것이 없지만(사용하는 프로그램에서 대부분 해결) 이론적으로 알아둘 필요는 있습니다.


정규화

정규화는 관계형 데이터 베이스에서 사용되는 개념입니다.

​

잘못 설계된 스키마를 더 작은 속성들로 쪼개어 바람직한 스키마가 될 수 있도록 만들어 가는 과정입니다.

​

보통 DB설계의 논리적 설계 단계에서 수행합니다.

​

여기서 함수적 종속성에 대한 개념이 나오는데 이는 잘못 설계된 스키마을 분별하는 기준이 되는 개념이라고 보시면 되겠습니다.

​

이점:

정규화를 마친 모델은 처리 및 품질이 뛰어나게 됩니다. 일관성, 정확성, 단숭성, 비중복성, 안정성 등을 갖추게 됩니다.

​

목적:

목적 역시 이점과 연계하여 생각해 볼 수 있습니다. 사실 DB를 정규화 하는 목적은 업무하는 입장에서 생각해 보았을때, 효과적으로 데이터를 찾도록 만드는 것이라고도 할 수 있겠습니다.

​

데이터 모형의 단순화, 효과적인 검색, 이상현상 방지, 중복 배제, 개체-속상 누락 여부 확인, 어떤 릴레이션이든 표현 가능 등


이상(Anomaly)

위에서 언급한 잘못 설계된 스키마에는 이상현상이 발생합니다. 이는 데이터 베이스 내에서 불필요한 정보들이 중복되어 저장되어 릴레이션 조작시(SQL 사용시) 사용자가 예상하지 못한 결과가 출력됩니다.

​

종류

1. 삽입이상: 릴레이션 데이터를 삽입시에 원치않는 값들도 함께 삽입

​

2. 삭제 이상: 한 퓨플을 삭제할 때 필요한 값들도 삭제되는 현상

​

3. 갱신 이상: 튜플에 존재하는 속성값을 갱신하는데, 일부 튜플에서만 갱신되고 다른 튜플에는 갱신되지 않아 정보에 모순이 생기는 현상


정규화 과정(A)

정규화 과정에는 총 5단계(+1)가 존재합니다. 각 단계별로 제 1정규형, 제 2정규형, 제 3정규형, BCNF 정규형, 제 4정규형, 제 5정규형이 있고, 차수가 높아질수록 제약조건이 늘어납니다.

​

각 정규형은 이전 단계 정규형을 무조건 만족해야 합니다.

순서:

제 1정규형: 비정규 릴레이션 -> 도메인을 원자값으로

​

제 2정규형: 1정규형 -> 부분적 함수 종속 제거

​

제 3정규형: 2정규형 -> 이행적 함수 종속 제거

​

BCNF정규형: 3정규형 - >결정자이면서 후보키가 아닌 것 제거

​

제 4정규형: BNCF -> 다치 종속 제거

​

제 5정규형: 4정규형 -> 조인 종속성 이용

​

\* 4,5는 특징만 기억해두셔도 무방합니다.

​


이행적 종속/ 함수적 종속 (A)

이제 그럼 잘못된 설계된 스키마의 기준이 되는 함수의 종속성에 대해 알아봅시다.

​

이행적 종속(Transitive Dependency) 관계란 A -> B이고 B -> C일때, A -> C를 만족하는 관계입니다.

​

함수적 종속(Functional Dependency) 관계는 데이터들이 어떤 기준값에 의해 종속되는 것을 의미합니다.

<<수강>>

학번이름과목명
1111개발자의 도구들데이터 베이스 개론
1111개발자의 도구들데이터 베이스 설계

위와 같은 테이블이 존재하면, 학번과 이름은 과목명이 무엇이든간에 서로 대응됩니다. 이때 학번에 따라 이름이 결정된다고 볼 수 있는데 이는 이름을 학번에 함수 종속적이라고 합니다.

​

표기법: 학번 -> 이름

\* 학번이 이름을 결정한다 = 이름은 학번에 함수 종속적이다.

​

\\ 차후 추가설명


반정규화

정규화의 반대 개념인 반정규화에 대해 알아봅시다.

반정규화의 목적은 정규화된 DB의 성능 향상 및 개발 및 운영 편의성을 위함입니다.

​

방법으로는 정규화된 모델을 통합, 중복, 분리하는 과정으로 진행되며, 의도적으로 정규화 원칙을 위배하는 행위로 볼 수 있습니다.

ex) 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등

​

성능 향상이 되며 관리 효율성을 얻을 순 있지만, 데이터의 일관성 및 정합성이 저하될 수 있습니다.

​

성능향상을 위해 반정규화를 진행하였지만, 오히려 성능이 저하되는 경우도 있습니다..

​

반정규화를 시행하기전 일관성과 무결성을 우선적으로 할지, 성능과 단순화를 우선적으로 할지 결정해야 합니다.

​

방법:

1. 테이블 통합: 두테이블이 Join되는 경우 많아서, 하나의 테이블로 합쳐서 사용하는 것이 효율적인 경우.

​

2. 테이블 분할: 테이블을 수직, 수평으로 분할

수평 분할: 레코드 기준으로

수직 분할: 속성이 너무 많아 속성 기준으로 분할

​

3. 중복테이블 추가: 여러 테이블에서 데이터를 추출하는 경우 혹은 다른 서버에 저장된 테이블을 이용하는 경우 효율을 위해 중복 테이블 추가

집계 테이블 추가, 진행 테이블 추가, 특정 부분만 포함하는 테이블 추가 등

​

4. 중복 속성 추가: 조인하는 경우 데이터 조회 경로를 단순화 하기 위해 자주 사용되는 속성을 하나 더 추가