데이터베이스 정규화 (정보 처리 시험에 자주 나오는 사람)

DB 정규화란?



DB에서 취급하는 데이터의 중복성을 제거하고 독립성을 높이는 것입니다. 이렇게 하면 DB 유지보수가 용이해집니다.
그러나 깔끔한 규칙을 기반으로 정규화를 수행하지 않으면 무결성과 일관성을 보장 할 수 없습니다.

정규형의 거친 설명



・비정규형
1 레코드 내에 반복 항목을 가지고 있습니다. 데이터베이스에 저장하고 SQL로 조작하고 ...라는 처리를 할 수 없다.

・제1 정규형
키를 설정하고 테이블의 반복 항목을 제거합니다.

・제2 정규형
부분 함수 종속성을 다른 테이블로 분리.

・제3 정규형
추이 함수 종속성을 다른 테이블로 분리.

비정규형



다음과 같은 전표 테이블이 있다고 가정합니다. (마크다운으로 쓸 ​​수 없었기 때문에, Excel로 만든 녀석의 스쿠쇼입니다.)
1 레코드에 상품 코드, 상품명, 단가, 수량이 여러 개 입력되어 있습니다. 이것이 반복 항목입니다.
한 레코드에 데이터가 혼합되어 있기 때문에 Mysql과 같은 RDBMS는 이 테이블을 관리할 수 없습니다.


제1 정규형



반복 항목을 제거하고 문서 번호와 제품 코드 당 하나의 레코드로 설정합니다. 이것이 첫 번째 정규형입니다.
레코드 수는 많지만 문서 번호와 제품 코드를 기본 키로 문서를 고유하게 나타낼 수 있습니다.


문서 번호
담당자 ID
담당자
상품 코드
상품명
단가
수량


1
001
다나카
A1
책상
10000
2

1
001
다나카
B1
의자
20000
3

1
001
다나카
C1
책장
5000
4

2
002
스즈키
A1
책상
10000
2

2
002
스즈키
D1
TV
50000
1


제2 정규형



부분 종속성을 없애면 테이블을 두 번째 정규형으로 만들 수 있습니다.
부분종속성이란, 주키(이번의 경우는 전표 번호와 상품 ID)의 일부로부터 레코드를 특정할 수 있는 일입니다.
제1 정규형의 전표 테이블을 보면, 상품 ID로부터 상품은 특정할 수 있는 것을 알 수 있습니다.
따라서 전표 테이블은 다음과 같이 전표 테이블과 상품 테이블로 나눌 수 있습니다.

· 전표 테이블 (상품명 컬럼과 단가 컬럼은 상품 테이블로 분리)


문서 번호
담당자 ID
담당자
상품 코드
수량


1
001
다나카
A1
2

1
001
다나카
B1
3

1
001
다나카
C1
4

2
002
스즈키
A1
2

2
002
스즈키
D1
1


・상품 테이블(New!)


상품 코드
상품명
단가


A1
책상
10000

B1
의자
20000

C1
책장
5000

A1
책상
10000

D1
TV
50000


제3 정규형



전이적 종속성을 제거하면 테이블을 세 번째 정규형으로 만들 수 있습니다.
전이적 종속성은 기본 키 이외의 레코드를 식별할 수 있습니다.
두 번째 정규형 전표 테이블을 보면 담당자 ID에서 담당자가 식별할 수 있음을 알 수 있습니다.
그 때문에, 제3 정규화를 실시하는 것으로, 이하와 같이 전표 테이블, 상품 테이블, 사원 테이블로 나눌 수가 있습니다.

· 전표 테이블 (담당자 컬럼은 직원 테이블로 분리)


문서 번호
담당자 ID
상품 코드
수량


1
001
A1
2

1
001
B1
3

1
001
C1
4

2
002
A1
2

2
002
D1
1


・사원 테이블(New!)


담당자 ID
담당자


001
다나카

001
다나카

001
다나카

002
스즈키

002
스즈키


・상품 테이블


상품 코드
상품명
단가


A1
책상
10000

B1
의자
20000

C1
책장
5000

A1
책상
10000

D1
TV
50000

좋은 웹페이지 즐겨찾기