원래 정규화란 중복성을 최소화하고 정보의 일관성을 보장하기 위한 관계형 데이터 베이스에서 제일 중요한 개념인데요


제1정규화는
여러 값을 가진 컬럼이 존재할 수 없다. 즉 반복되는 그룹이 존재해서는 안 된다. 각 행과 열에는 하나의 값만이 올수 있다.

예를 들면


고객번호(P.K) 고객명  취미       
1                   이윤호영화 여행
2                   이민호  등산


이런 테이블이 있을수는 없고 이걸 수정한다면


고객번호(P.K)  고객명
1                    이윤호
2                    이민호  하고 또하나


고객번호(P.K) 일련번호(P.K) 취미
1                   1                   영화
1                   2                   여행
2                   1                   등산

이런식으로 두개로 분리해야 한다는거죠


제2정규화
모든키가 아닌 컬럼은 기본 키 전체에 의존적이여야 한다. 기본키의 일부분에 의존적이어서는 안 된다.


예를 들어

사번(p.k)    프로젝트번호(p.k)   부서   프로젝트역할   고과율
1                a                         전산    팀장               A
1                b                         전산    조원               C
1                c                         전산    부팀장            B
2                c                         경리    팀장               A
3                c                         기획    팀장               A


이 테이블의 기본키는 사번과 프로젝트번호인데 부서 컬럼은 사번에만 의존적이다.

이것은 2정규화를 거치면


사번(p.k) 프로젝트번호(p.k) 프로젝트역할 고과율
1             a                        팀장             A
1             b                        조원             C
1             c                        부팀장          B
2             c                        팀장             A
3             c                        팀장             A


요렇게 하고 부서 테이블을 다시 따로 때네서

사번   부서
1        전산
2        경리
3        기획

요렇게 해서 릴레이션을 걸면 됩니다.


제3정규화
키가아닌 컬럼은, 다른 키가 아닌 컬럼에 의존적일어서는 안된다.
예를 들어


사번(p.k) 프로젝트번호(p.k) 프로젝트역할 고과율
1            a                        팀장              A
1            b                        조원              C
1            c                        부팀장           B
2            c                        팀장             A
3            c                        팀장              A


요 테이블을 다시 보면 고과율은 프로젝트 역할에 의존적인걸 알수 있습니다.


이것을 또 3정규화 거치면

사번(p.k) 프로젝트번호(p.k) 프로젝트역할
1             a                        팀장
1             b                        조원
1             c                        부팀장
2             c                        팀장
3             c                        팀장

프로젝트역할   고과율
팀장               A
조원               C
부팀장            B


요렇게 또 따로 때네줘야 합니다


BCNF 정규화는

3정규형에서 BCNF 정규형이 되려면 비결정자에의한 함수종속을 제거해야 하는것을 알고계시죠..

비결정자에 의한 함수종속을 제거해서 분해된 BCNF정규형

결과적으로 모든 속성들이 후보키로서 사용이 가능한 형태로 분해됩니다.

다시 말해 분해된 테이블의 모든 결정자들이 후보키이면

BCNF정규형이라 말합니다

 

제4정규화는
2정규화 된 테이블은 다대다 관계를 가질수 없다.

이건 따로 예를 안들어도 되겠죠?ㅋㅋ


제5정규화는 실무에서 정말 안쓴다고 알고 있습니다.

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon anyjava 2009.04.20 16:37 신고  댓글주소  수정/삭제  댓글쓰기

    감사합니다 퍼갑니다^^ ㅋㅋ

  2. BlogIcon 이진우 2012.07.06 11:29  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 정말 좋은 자료네요. ㅎㅎ 퍼가겠습니다!!

  3. BlogIcon Uggs On Sale Uk 2012.12.11 15:29  댓글주소  수정/삭제  댓글쓰기

    어떤 알려진 것은 그들이부터 호주가 착용 한 것입니다

  4. BlogIcon replica watches 2013.01.22 16:49  댓글주소  수정/삭제  댓글쓰기

    당신은 접대하고 당신은 여전히​​ 스마트 유지 관리 할 수​​ 있습니다.