The Debugging Chronicles : "코드의 미학"

정규화 본문

DBMS

정규화

sweetseonah1004 2024. 8. 12. 20:58

정규화

 

데이터 관리의 편의성을 증진시키기 위해서 테이블을 분리

 

 변경사항이 발생했을 때, 한 곳만 변경가능하기 때문에 응집도가 높고 결합도가 낮다. 즉 유지 보수가 용이 하다

 

예를 들어 

 

대학교 입학생 을 위한 테이블이 있다고 하자

 학번     이름      과       동아리     전공

1                                   축구부

2                                  야구부

3                                  농구부

4                                  축구부

...

근데 야구부가 야구 관람부 , 축구부가 축구 관람부로 바뀌었다고 하자

그럼 모든 표를 돌아다니면서 다 수정을 해야한다.

 

그래서 생각 해낸 것이

동아리 

동아리번호      동아리명

101                  축구부

102                  야구부

103                 농구부

--------------------------

 학번     이름      과       동아리     전공

1                                   101

2                                  101

3                                  102

4                                  103

------------------------

자 이렇게 테이블을 하나 더 만든 경우 축구부에서 축구 관람부 딱 한번만 변경하면 된다.

 

 

자 쇼핑몰을 만든다고 생각해보자

회원

회원번호       ID         이름        pw.          총 구매 금액        등급

1                  teemo    티모                        1000                 브론즈

2                                아리                         100001            실버

3                                아무무                      500100           골드

4                                모르가나                   200000           실버

 

여기서 데이터 중복이 일어났음을 알수 있다.

만약 총구매 금액을 살려두고 등급을 가렸을 때 아리가 어떤 등급을 가졌을 지 알수 을까?

 

대답은 알 수 있다.

실버임을 예측할 수 있다.

 

어떤 특정 컬럼이 존재하지 않아도 그 컬럼 값을 예상할 수 있을 때, "데이터 중복 발생" 했다고 한다.

그리고 DBMS에서 가장 중요하게 생각하는 1원칙은

데이터 중복은 DB내에 없어야한다는 것이다.

 

만약 테이블 안에 데이터 중복이 있다면 틀린 것이다. 손해다

이때

데이터 중복을 피하기 위해서 정규화를 실행, 데이터를 분리한다!

 

등급 

 PK        등급명          최소범위       최대범위

1            브론즈          0                  9999

2           실버             10000          99999

3           골드             100000        499999

5          마스터            .                   100000000000000 

'DBMS' 카테고리의 다른 글

정규화 - 2 (JOIN문)  (0) 2024.08.12
PRODUCT.SQL - NVL 함수  (0) 2024.07.30
MVC 패턴 , SQL , 웹크롤링  (0) 2024.07.30