Codeit Sprint/Weekly_Paper

위클리 페이퍼#15 - 데이터베이스 정규화

ko_sick 2024. 11. 24. 22:28

데이터베이스 정규화란 무엇인가요? 또, 정규화의 장단점은 무엇인가요?

정규화란?

데이터베이스에서 정규화는 데이터를 구조화하고, 중복을 줄이며, 데이터의 무결성을 유지하기 위한 과정으로 여러 단계로 나뉘게 되는데, 각 단계별 특정 규칙에 따라서 나뉘게 됩니다. 이때 정규화 과정을 거치는데 1차 정규형(1NF), 2차 정규형(2NF), 3차 정규형(3NF)가 있으며, 단계가 높아질수록 무결성이 높아지게 됩니다.

 

정규화를 거치는 이유중의 하나로. 이상종류에 의해서 발생되어지는 문제들이 있기 때문에 이를 해결하기 위해서 정규화를 진행합니다. 삽입 이상, 삭제 이상, 갱신 이상과 같이 데이터의 중복성과 무결하지 않은 상태에 의해서 문제들이 야기될수 있습니다.

 

제1 정규화(1NF)

데이터베이스의 각 COLUMN(열)이 단 하나의 원자값을 가지도록 하는 과정으로, 하나의 데이터만 저장하며, 다중값을 갖지 않는 형태로 정규화 합니다.

 

수강과목ID 수강과목 수강자
1 PYTHON 김연아
2 JAVA 박세리
2 JAVA 홍길동

 

제 1 정규화를 통해서 java, java의 id가 겹쳐 수강자를 다수로 작성하지 않게 풀어 헤치는 방법으로, 데이터의 중복이 줄어들어서 공간적 효율성이 향상되고, 무결성 유지에 도움 및 명령어를 통해서 데이터의 수정, 삭제, 삽입 연산 과정에서 이상 문제가 발생되는 것을 방지 할 수 있다.

 

제2 정규화(2NF)

제1 정규화를 완료시킨 테이블에서, 부분 함수 종속성을 제거하는 방법으로, 기본키의 부분집합에서 의존되어지는 열들을 분리시켜 새로운 테이블을 만들어 내고, 테이블 간의 관계를 설정하는 방법으로, 즉 테이블 별 주제와 관련있는 열끼리 다른 테이블로 만드는 방법이다.

 

제3 정규화(3NF)

제2 정규화를 완료한 테이블에서 이행적 함수 종속성을 제거하는 과정으로, 예를 들어서 물건을 사는데 카테고리ID가 물건ID에 종속되어지고, 해당 물건 ID는 결국에 물건명에 대한 정보에도 종속되기 때문에 서로 엮어져 있는 형태를 제거하는 방법이라고 볼 수 있다. 카테고리는 카테고리 대로, 물건ID는 물건 아이디와 물건명, 물건에 대한 정보 테이블을 따로 만들어서 분리하는 형태이다.

 

정규화의 장점

1. 데이터 중복 삼소 : 데이터를 보다 효율적으로 저장을 통해서 저장 공간을 절약할 수 있습니다

2. 데이터의 무결성 유지 : 데이터의 일관성과 정확성을 유지하는데 도움이 됩니다.

3. 데이터의 수정 용이 : 중복된 데이터가 적기 때문에, 수정, 삽입, 삭제를 할 때 발생되어지는 오류를 줄일 수 잇습니다ㅣ.

 

정규화의 단점

1. 복잡성 증가 : 데이터 베이스 설계시에 복잡해질 수 있고, 이를 통해서 유지보수에 어려움이 따를 수 있습니다.

2. 성능 저하 : 때로는 다수의 테이블을 한번에 확인 할 때 JOIN 연산이 필요해져 쿼리 성능을 저하 시킬수 있습니다.

 

 

참고 자료 : https://hstory0208.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%95%EA%B7%9C%ED%99%94Normalization%EB%9E%80-%EC%98%88%EC%8B%9C%EB%A5%BC-%ED%86%B5%ED%95%B4-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90