데이터베이스 정규화

정종일·2023년 2월 20일
0

Develop

목록 보기
3/5
💡 데이터 정규화는 관계가 없는 데이터베이스에서의 사용은 권장되지 않는다.

데이터 정규화는

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다.
출처) 위키백과

정규화 단계

정규화는 단계별로 제1, 제2, 제3 정규화로 나뉜다.

제1 정규화

제 1정규화는 한 칸에는 하나의 데이터만 보관하는 것이다.

위처럼 데이터를 저장하게 되면 추후 골프초급 수강신청한 사람을 찾을 때

WHERE 프로그램 LIKE “%골프초급%

이런 SQL문을 사용해야 하기 때문에 귀찮아질 수 있다.

이것은 수강명을 변경해야 할 때도 마찬가지

그렇기 때문에 한 칸에는 한 가지 데이터만을 보관하는 제1 정규화를 적용한 우측 데이터베이스로 만드는 것이 좋다. 이러한 데이터베이스를 제1 정규형을 만족하는 데이터베이스라고 한다.

제2 정규화

Partial Dependency를 제거한 테이블 (PK 중 일부에만 종속되는 컬럼 없이)

Partial Dependency가 뭔데?

Composite Primary Key, 즉 Primary Key가 없는 상태에서 2개 이상의 컬럼을 합쳐 Primary Key 역할을 수행할 수 있는 경우를 말한다.

어떠한 컬럼이 Composite Primary Key에 부분종속(그 중 하나의 컬럼에만 종속됨)된 경우 Partial Dependency가 있다고 간주한다.

다시 제2 정규화로 돌아와서,

이러한 테이블에서 프로그램의 수강 가격을 조정하려면 또 모든 테이블을 일일이 수정해줘야 한다. 이러한 비효율성을 없애기 위해 partial dependency를 제거한다고 보면 된다.

이처럼 나누는 것이 제2 정규화이고 이러한 데이터베이스를 제2 정규형을 만족하는 데이터베이스라고 한다.

제3 정규화

제3 정규화는 Primary Key가 아닌 일반 컬럼에만 종속되는 컬럼이 없도록 하는 것이다.

제2 정규화를 하는 목적과 비슷하게 강사의 대학을 변경하고 싶다면 일일이 수정해주어야 하는 수고를 없애고자 함이다.

이처럼 일반 컬럼에만 종속되어있는 컬럼을 따로 빼어 효율성을 높일 수 있다. 이것을 제3 정규형을 만족하는 데이터베이스라 한다.


코딩애플님의 Youtube 영상을 참고해 포스팅했습니다.

profile
제어할 수 없는 것에 의지하지 말자

0개의 댓글