[데이터베이스/ORM] 정규화

Hyo Kyun Lee·2021년 8월 3일
0

데이터베이스/ORM

목록 보기
7/12

1. 정규화 개념

데이터모델링을 진행하는 가장 효과적인 방법

데이터모델링을 진행할 때 가장 중요한 요소는 데이터 중복 최소화, 데이터 모델 단순화, 데이터 공유도 증대, 데이터 일관성 확보입니다.

해당 작업을 진행하기위해 무분별하게 table화된 DB를 정리하고, 동일한 속성으로 체계화하는 과정을 정규화라고 합니다.

2-1. 1차 정규화

반복되는 속성유형을 분할 및 제거하는 작업.

같은 성격이나 내용의 Column(Attribute)이 연속적으로 나타날 때, 해당 칼럼을 제거하고 기본 테이블에 PK(주키이자 종속관계에 있는 table의 외래키로 작용)를 추가하여 새로운 table을 생성합니다.

이러한 과정을 통해 기존의 테이블과 1:N 관계를 형성합니다.

2-2. 2차 정규화 수행

주식별자가 영향을 미치지 않는,
주식별자에 종속되지 않은 속성유형을 분할제거.

즉 1차 정규화를 통해 진행한 종속 테이블이 있을때, 기본 테이블의 주식별자(주키)의 종속관계를 받지 않으면서 다른 또 하나의 종속 테이블로 구성할 수 있는 식별자가 생성될 수 있습니다.

이 종속 테이블에 존재하는 식별자에 대해서 별도의 정규화를 다시 진행하는 작업이 2차 정규화이며, 1차 정규화와 마찬가지로 연결관계를 갖되 종속테이블에 대한 기본(부모)테이블이 별도로 생성됩니다.

종속 테이블 입장에서는 여러 개의 외래키(composite Primary key, 복합키)를 확보할 수 있습니다.

쉽게 말하면 1차 정규화를 진행한 table에 대해 다시 1차 정규화를 진행하는 작업입니다.

2-3. 3차 정규화 수행

정규화 수행 후 table 속성에 맞추어 비식별자 Column들을 정리하는 단계.

보통 한 table의 속성(attribute, =Column)들은 해당 table의 주키의 속성과 의존적인 관계, 종속관계를 지니고 있습니다.

여러번의 정규화를 수행하고 난 후, table에 존재하는 비식별자 속성유형(Column) 중, 식별자와 관계성이 없는 유형들을 별도로 분할하여 종속관계의 table 및 또 하나의 부모관계의 table을 만드는 과정입니다.

최종적으로 여러 개의 1:N table이 존재할 때, table 속성(Entity)을 명확하게하여 DB의 무결성과 명확성을 확보하게 해주는 작업입니다.

보통 3차 정규화까지 진행합니다.

3. 예시

아래 table을 1차 정규화하는 과정입니다.

속성(Column)을 서로 중복되지 않는 독립적인 table화 하여 구성

※ 각 table의 주키 구성으로 table 유형을 정의하고, 외래키 구성으로 연결관계를 정의합니다.

각 유형별로 정의한 table을 생성하고 추가적인 2/3차 정규화를 실행

4. 참조링크

https://dog-foot-story.tistory.com/61

0개의 댓글