데이터베이스 정규화

unow30·2021년 3월 13일
0

liner

목록 보기
5/8

나무위키

데이터베이스 정규화

  • 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다.
  • 일반적으로 정규화란 크고, 제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다. 정규화의 목적은 하나의 테이블에서의 데이터의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것이다.

정규화의 목적

1. 데이터베이스의 변경시 이상 현상 제거

테이블 수정 시 정규화가 잘 되있지 않으면 여러 문제가 생긴다.

1) 갱신이상: 같은 정보가 복수의 행에서 일어난다.
id 519는 다른 레코드에서 다른 데이터(주소)를 가지고 있다.
데이터 수정 시 id 519의 정확한 주소를 파악할 수 없다.

2) 삽입 이상
새로 들어오는 레코드에 course code 칼럼이 없다.
강의코드를 null로 지정하지 않으면 삽입 이상 오류가 생긴다.

3) 삭제 이상
데이터의 삭제가 원치 않는 데이터도 삭제시키는 문제가 생길 수 있다.
id 389는 강의 코스를 삭제하려고 한다. 하지만 강의코드 삭제와 함계 name, hire date도 같이 삭제가 된다.
name, date, course를 각기 다른 테이블에 저장하고 이를 하나의 테이블에 매핑하여 불러온다면 각 칼럼의 데이터를 자유롭게 수정할 수 있을 것이다.

2. 데이터베이스 구조 확장시 재 디자인 최소화

정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 되는 경우가 있다. 이는 이 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 주며, 응용 프로그램의 생명을 연장시킨다.

3. 사용자에게 데이터 모델을 더욱 의미있게

정규화된 테이블들과 정규화된 테이블들간의 관계들은 현실세계에서의 개념들과 그들간의 관계들을 반영한다. 즉 데이터 모델을 사용자에게 더욱 의미(informative)있게 한다.

4. 다양한 질의 지원

정규화된 테이블은 일반적인 목적의 질의에 적합하다. 이는 테이블에 대하여 세부사항이 예측되지 않은 장래의 질의를 포함한 어떠한 질의도 지원한다는 의미이다. 반대로 정규화되지 않은 테이블은 (향후 발생할 수 있는) 어떤 질의들은 지원하지 않을 수 있다.

0개의 댓글