정규화 개념 정리

BlackHan·2024년 2월 9일
0

제 1정규화

  • 모든 속성은 더 이상 쪼갤 수 없는 하나의 값만 가져야 한다.

다가 속성 ➡ 전화번호가 여러 개 존재. 콤마(,)로 구분되어 있는 것
고객번호가 결정되어도 전화번호가 결정되지 않음..



즉 전화번호를를 나누고 새로운 테이블을 만들어야 한다.
새로 테이블을 만들때는 새로 생긴 마스터 테이블끼리 관계를 가지고있느냐를 판단..

복합 속성➡ 고객명은 성과 이름으로 복합되어 있다. 이런것을 나누느냐를 판단한다. ex) 주민등록번호 -> 생년,월일 등등..

유사 속성
중첩 릴레이션
➡ 한 릴레이션에서 반복형태 속성이 있으면 안된다.
이것처럼 반복 속성을 분리한다.

제 2정규화

  • 두개 이상의 PK가 존재한다. 모든 비 식별자 속성은 후보 식별자 속성에 완전 함수 종속돼야 한다.

부분함수 종속이 존재하는 릴레이션

A와 B를 통해서 C와 D가 결정되어야 하는데, B만으로도 C를 알 수 있는 상황
즉, B 왕비가 사조직이 있다. -> 왕족의 반란이다.
B와C 를 따로 빼서 통치한다. 이는 마스터테이블이 돼서 1:M의 관계를 가지게 된다.

아래 테이블은 소분류와 소분류명으로 묶어서 테이블을 나눌 필요가 있는가 ?

나누었을 때 소분류명이 딱히 의미를 가지지 않기때문에 대분류와 붙여준다.

만약 소분류명이 나누었을 때 의미가 있다면 아래처럼 구분한다.

제 3정규화

-일반 속성간에는 종속성이 존재하지 않는다.

이 테이블은 C가 결정되면 D가 결정된다. 즉 D는 C에 종속된다. -> 왕권은 문제없는데 지방 호족이 사조직이 있다.

C와 D를 내보내서 테이블을 만든다. 마치 2정규화랑 비슷하다.

BC정규화 (잘 나오지않음)

문제없이 A,B가 결정되면 C와 D가 잘 결정되는데, C가 결정되면 PK인 B가 결정된다.

진짜 왕족C는 신분을 속이고 B를 세워놓는다. -> 처갓집의 반란
장인어른이 진짜권력이고 처가 왕비의 역할을 하고있다.


B자리에 C를 PK로 넣어주고, B와 C를 따로 뽑아서 테이블을 만든다. 여기서도 C가 PK가 된다. 결국 장인어른이 PK가 되도록 만들었다.

역정규화

-효율을 위해서 일부를 중복 허용
Join시 발생되는 엄청난 계산량을 해결하기 위해 사용

데이터가 많은데 JOIN을 하자니 너무 오래 걸린다. 그냥 중복되더라도 분리를 시키지않으면 조인을 할 필요가 없어서 빠르게 처리가 가능해진다.


그러나 위 그림처럼 K를 두개의 테이블에 모두 놓으면 실패된 모델링이다.
한곳에만 있으면 됨. 나머지는 FK로 찾아들어간다.
위 그림처럼 고객명이라는 사조직을 가지고 있지만, 일부러 냅둔다.

profile
Slow-starter

0개의 댓글