DB

이상현상과 정규화 트랜젝션 개념

매린! 2024. 1. 29. 11:52

이상현상: 데이터베이스 변경(삽입, 삭제, 수정)으로 인해 문제가 발생하는 것 ---> 잘못된 설계로 이상현상이 발생

잘못된 설계로 테이블이 생성되면 데이터 조작 작업시 이상현상이 발생할 수 있다.
이상현상은 데이터의 일관성을 손상시켜 데이터의 무결성을 께뜨린다.

 

이상현상의 종류

삭제이상: 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 -> 연쇄삭제 문제 발생

삽입이상: 투플 삽입 시 특정 속성에 해당하는 값이 없어 null값을 입력해야 하는 현상 -> null값 문제 발생

수정이상: 투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상 -> 불일치 문제 발생

 

A->B(A는 B의 결정자, B는 A에 종속됨)

이 문제를 해결하려면, 속성간의 함수 종속성을 파악하여 테이블을 규칙에 의해서 분해하는데 
이 과정울 정규화라고 한다.

 

정리하자면, 정규화란 잘못 설계된 테이블을 수정하여 데이터의 일관성과 무결성을 회복하는 프로세스
(중복성과 종속성을 제거 (최소화) 데이터베이스의 효율성과 유지보수의 구조를 개선하고 데이터베이스의 성능 향상을 최적화하는데 의미가 있다.)

 

정규화를 하기 위해서는 테이블의 기본키와 속성간의 종속성을 파악해야한다.

 

릴레이션(수학 => 구조를 중요시) = 테이블(실무 => 데이터를 강조)

함수 종속성 릴레이션 구조에 관한 이론적 내용이 포함

 

릴레이션 튜플(row), 속성(column)

 

* 이상현상과 결정자

기본키가 아니면서 결정자인 속성이 있을 때 이상현상 발생

 

주요 정규화 형식 제1정규형~제3정규형

- 제1정규형(1NF): 테이블의 각 속성 값은 반복그룹(Repeating group)이 없는 원자값으로만 구성되도록 중복되는 속성이나 속성그룹을 별도의 테이블로 분리한다.

- 제2정규형(2NF): 1NF를 만족하면서 부분 함수적 종속성을 제거해야 한다. 기본키 속성에 완전 함수적 종속성을 가지도록 테이블을 분할하거나 기본키를 변경하거나 속성간의종속성을 조정

- 제3정규형(3NF): 2NF를 만족하면서 이행 함수적 종속성을 제거해야 한다. 테이블의 모든 비(Non-key)속성은 기본키에만 종속되어야 하고, 비-키 속성간에는 종속성이 존재하지 않아야한다.

비-키 속성간에 종속성이 존재한다면 테이블 분할해야 한다.

- 보이스코드정규화(Boyce-codd NF BCNF), 제4정규형(4NF), 제5정규형(5NF)

 

반정규화(Denormalization)

중복 데이터를 하나 이상의 테이블에 추가하는 데이터베이스 푀적화 기술 이를 통해 관계형 데이터베이스에서 비용이 많이 드는 조인의 수를 줄일 수 있다. 반정규화는 정규화를 되돌린다거나 정규하 되지 않음을 의미하는 것이 아니라, 정규화 후에 적용되는 최적화 기법

장점: 더 적은 수의 테이블을 사용하면서 조인 개수를 줄일 수 있고, 이로 인해 검색 쿼리가 간단해지고 빠른 일기 작업의 수행으로 검색성능이 업업!!

단점: 중복저장으로 더 많은 스토리지가 요구된다. 또한 데이터 불일히가 발생할 수 있으며, 쓰기 작업에 추가적인 비용이 발생할 수 있다.