데이터베이스 - 정규화

기술 면접을 준비하던 중 데이터베이스 정규화에 대해 알아보다가 유튜브에서 정호영님의 영상을 보고 정리한 글.

이것만으로는 명확하게 이해하지 못한 것 같아 일단 이렇게 rough하게 정리하고 계속 공부해야겠다.

목차



이상현상

데이터베이스의 설계가 잘못될 경우


삽입 이상

DNUMBER, DNAME, DMGRSSN 컬럼에 해당하는 데이터를 삽입하려고 하나 실패한다. 해당 테이블의 primary key인 SSN 의 컬럼의 데이터가 비어져 있기 때문이다.

데이터를 삽입하는 과정에서 primary key를 추가하지 않아서 발생하는 문제. 데이터베이스 설계를 잘못해서 발생하는 현상.


삭제 이상

EMP_DEPT 에서 사원 데이터 한 명만을 삭제하고 하더라도 위와같이 설계가 잘못이루어졌을 경우, 사원 데이터 한 명만 삭제되지 않고 사원데이터의 외래키(foreign key) 참조하는 EMP_DEPT 까지 삭제되는 정보의 손실이 발생할 수 있다.


갱신 이상

위와 같이 설계된 데이터베이스에서 부서이름(DNAME)을 바꾸려면, 커럼 하나만 바꿔서 될게 아니라 전체를 하나하나 일일히 바꿔줘야 한다. 정규화를 제대로 하지 않았기 때문에 발생한 현상.


단계별 데이터베이스 정규화

이상현상(abnormaly)이 잘 발생하지 않는 좋은 테이블이 갖추어야할 조건

  1. 1정규형
  2. 2정규형
  3. 3정규형
  4. BCNF


아직 명확하게 이해하지 못했지만, 데이터 베이스 정규화의 단계별 작업을 설명한 이미지를 첨부한다.


추가 트위터에서 발견하고 여기에 남겨본다.