728x90
반응형
SMALL

(1) 기본 목표
테이블 간의 중복된 데이터를 허용하지 않는 것
무결성을 유지하며 DB의 저장공간을 줄일 수 있다.

(2) 정의
삽입, 수정, 삭제 시 발생할 수 있는 이상 현상을 줄이는 과정
테이블을 분해하는 것이며 보통 3차 정규화까지 진행

(3) 필요 이유
테이블을 잘못 설계하면 불필요한 데이터 중복으로 인해
공간이 낭비되는데, 이를 이상현상(Anomaly)이라고 함

아이디  이름     전공   수업코드  수업명  인원
-------------------------------------------------------------

apple   김사과   컴공      C001        Java      30
apple   김사과   컴공      C002       DBMS    35
apple   김사과   컴공      C003       Python   30
Hpple  홍길동   경영      A001       아버지   10
Lpple   이순신   해양      B001         선박     15

 

  1. 삽입 이상 : 새로운 데이터를 삽입하기 위해 불필요한 데이터도 넣어야 하는 문제
    예) 과목이 정해지지 않은 학생을 넣으려면 수업명에 NULL을 입력할 수 없어서 수업명을 '미정',
  2. 갱신 이상 : 중복된 행 중 일부만 변경해서 데이터가 불일치 되는 것
    예) 김사과 학생이 전공을 때려치고 기계 로 바꾸려면 3개 데이터를 변경해야 함
  3. 삭제 이상 : 행을 삭제하면 필요한 데이터까지 삭제되는 현상
    예) 아버지 수업을 폐강하는 경우 홍길동 정보를 지우는 실수 발생

(4) 정규화의 종류

  1. 1차 정규화 하나의 컬럼에는 하나의 값만 존재해야 한다(원자성)
1) 1차 정규화
하나의 컬럼에는 하나의 값만 존재해야 한다(원자성)

   * 도시건설 게임
   User   Building      Cost       Place            Place_size
   -----------------------------------------------------------------
   Bach   Farm,Fac      50,70      Plain,City       100, 200
   Mozart Farm,Fac,Cos  50,70,200  Plain,City,City  100, 200, 200
   Tscai  Fac           70         Shore            500

   User   Building      Cost       Place            Place_size
   ------------------------------------------------------------
   Bach   Farm          50         Plain            100
   Bach   Fac           70         City             200
   Mozart Farm          50         Plain            100
   Mozart Fac           70         City             200
   Mozart Cos           200        City             200
   Tscai  Fac           70         Shore            500

2) 2차 정규화(2nd Normal Form, 2NF)
   후보키의 진부분집합에서 부분함수 종속성을 제거하는 작업
   부분함수적 종속을 완전함수적 종속으로 만드는 과정

   User   Building     Place    Place_size         Building  Cost
   ---------------------------------------         --------------
   Bach   Farm         Plain    100                Farm      50
   .....                                           Fac       70
   Tscai  Fac          Shore    500                Cos       200

3) 3차 정규화
   1차 정규화 및 2차 정규화를 만족하고
   이행적 함수적 종속을 갖지 않는 정규형
   이행적 함수적 종속 : A값을 알면 B값을 알고, B값을 알면 C값을 아는 관계

   User   Building     Place       Building  Cost
   -------------------------
   Bach   Farm         Plain       Place     Place_size
   ...
   Tchai  Fac          Shore

(5) 반정규화 활용 단계에서 정규화를 진행하지 않는 게 더 편리하다면 반정규화를 진행한다.

예)
hash_tag
1   DBMS
1   LIKE
1   Good
3   DBMS
3   Boring

board
1   Funny DBMS   apple
2   Funny Python apple
3   Boring DBMS  melon

-- 반정규화 --
board
1   Funny DBMS   apple  #DBMS#LIKE#Good
2   Funny Python apple
3   Boring DBMS  melon  #DBMS#Boring

 

728x90
반응형
LIST

'개발 > 정리 내용' 카테고리의 다른 글

서블릿(Servlet)  (0) 2023.01.14
CGI (Common Geteway Interface)  (0) 2023.01.14
MariaDB Built-in Function  (0) 2023.01.13
SQL II  (0) 2023.01.13
데이터 모델링 1  (0) 2023.01.13

+ Recent posts