오늘은 DB에 관련된 지식에 대해 알아보자.
데이터베이스에 관해 조금이라도 안다면 정규화라는 말을 들어봤을것이다.
그렇다면 정규화란 무엇일까?
쉽게 말하면 정규화는 데이터베이스 설계 과정에서 중복을 최소화하고 데이터의 일관성과 무결성을 유지하기 위한 과정이다.
데이터 정규화를 통해 데이터베이스의 성능을 향상시키고 유지보수를 용이하게 할 수 있다.
제 1정규화
제 1정규화는 각 열이 원자값(Atomic Value)을 가져야 하며, 중복된 열이 없어야 하는 정규화의 첫 번째 단계다.
예시: 주문 테이블에서 주문 번호, 고객 이름, 주소를 별도의 열로 분리하여 중복을 제거한다.
제 2정규화
제 2정규화는 부분 함수적 종속을 제거하는 정규화의 두 번째 단계이다. 모든 주요하지 않은 속성이 기본 키에 완전 함수 종속되어야 한다.
예시: 주문 상세 테이블에서 주문 번호를 기본 키로 하고, 상품 번호와 수량을 열로 분리하여 부분 함수적 종속을 제거한다.
제 3정규화
제 3정규화는 이행적 함수 종속을 제거하여 모든 필드가 후보키에 대해서만 종속되도록 하는 정규화의 세 번째 단계이다.
예시: 학생 정보 테이블에서 학생 번호와 강의 번호를 기본 키로 하고, 해당 강의의 강사명을 별도의 테이블로 분리하여 BCNF를 적용한다.
BCNF 정규화
BCNF단계는 모든 결정자가 후보키인 3NF를 보완하는 단계다.
예시: 학생 정보 테이블에서 학생 번호와 강의 번호를 기본 키로 하고, 해당 강의의 강사명을 별도의 테이블로 분리하여 BCNF를 적용한다.
제 4정규화
제 4정규화는 다치 종속을 제거하여 불필요한 중복을 방지하는 데 중점을 둔 정규화 단계다.
예시: 교수 정보 테이블에서 강의 번호와 강의 시간을 별도의 테이블로 분리하여 다치 종속을 제거한다.
제 5정규화
제 5정규화는 조인 종속성을 제거하여 불필요한 조인을 방지하는 데 중점을 둔 정규화 단계이다.
예시: 고객 정보, 주문 정보, 상품 정보를 각각 별도의 테이블로 분리하여 5NF를 적용한다.\
정규화는 이상현상(삽입이상,삭제이상,갱신이상)의 가능성을 감소시키지만 연산시산이 증가할 수 있다는 단점이 존재한다.
암기를 쉽게하기 위해서는 도.부.이.결.다.조(두부이걸다줘) 이렇게 암기하면쉽다.
참고 :http://www.databaser.net/moniwiki/wiki.php/%EC%A0%95%EA%B7%9C%ED%99%94%EC%9D%98%EC%9D%B4%ED%95%B4
'IT관련 정보' 카테고리의 다른 글
인터페이스 기능 구현 기술에 대해 알아보자 (1) | 2023.10.07 |
---|---|
블랙박스 테스트와 화이트박스 테스트에 대해 알아보자 (0) | 2023.10.06 |
네트워크 보안 프로토콜: IPSec, SSL/TLS, S-HTTP (0) | 2023.09.27 |
객체지향 프로그래밍이란? (0) | 2023.09.20 |
간단하게 알아보는 디자인 패턴 (0) | 2023.09.16 |