데이터베이스 테이블을 정규화하는 의의는 무엇입니까?

  • 정규화 (Normalization)의 개념

함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정이다. 좋은 데이터베이스 스키마를 생성해 내고 불필요한 데이터의 중복을 방지하여 정보 검색을 용이하게 할 수 있도록 허용한다.

  • 정규화의 목적

▪ 데이터 구조의 안전성 최대화

▪ 중복 데이터의 최소화
▪ 수정, 삭제 시 이상 현상 최소화
▪ 테이블 불일치 위험 간소화

  • 정규화의 의의

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

테이블을 수정(갱신, 삽입, 삭제)시, 원치 않던 부작용이 발생할 수 있다. 이부작용은 충분히 정규화 되지 않은 테이블에서 발생할 수 있다. 충분히 정규화 되지 않은 테이블은 아래와 같은 특성들이 있다.

▪ 같은 정보가 복수개의 열에서 표현된다; 그래서 갱신은 논리적인 모순을 낳게 된다. 예를 들어, "고용자의 기술"이라는 테이블에서 모든 레코드가 고용자 ID, 고용자 주소도 포함하고 있다고 하면, 특정 고용자의 주소 변경 시 여러 개의 레코드를 수정하여야 한다(그 고용자가 보유한 모든 기술만큼의 레코드가 수정되어야 한다).

성공적인 갱신이 이루어지지 않을 경우-즉, 변경된 고용자의 주소가 그가 가지고 있는 기술 레코드들 중에서 일부는 변경되었으나, 일부는 변경되지 않을 경우- "고용자의 기술" 테이블은 모순 상태가 된다. 특히, 그 특정 고용자의 주소가 무엇인가에 대한 질문에 대해서 혼동스러운 답안을 내놓게 된다. 이 현상을 갱신 이상이라고 한다.

▪ 어떠한 특정 사실은 전혀 기록되지 않는 경우가 발생한다. 예를 들어, "교수와 그들의 강의"라는 테이블에서는 교수 ID, 교수 이름, 교수 고용일자, 강의 코드를 가지고 있다고 하자. 새 교수를 고용하였을 경우, 그가 아직 맡은 강의가 없기 때문에 강의 코드를 null로 하지 않는 이상 새 교수를 테이블에 추가할 수가 없다. 이 현상을 삽입 이상이라고 한다.

▪ 데이터의 삭제가 전혀 다른 사실에 대한 데이터의 삭제도 필요로 하게 되는 현상이 있다. "교수와 그들의 강의"라는 위 예제에도 한 교수가 임시로 강의를 중단하고자 할 때 이 이상현상이 발생한다. 이런 경우 그가 기록된 레코드들을 삭제해야 하는데, 그럴 경우 교수 자체가 사라지게 된다. 이 현상을 삭제 이상이라고 한다.

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

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

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

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

4) 다양한 질의 지원

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

예를 들어서, 고객이 가지고 싶은 책들의 목록을 가지고 있는 온라인 서점을 생각해보자. 분명하게 예상되는 질의 -- 고객이 원하는 책은 무엇입니까? -- 는 고객이 가지고 싶은 책들의 목록 테이블에 저자와 제목이 있으면 된다.

이 테이블 디자인은 그 한 질의에 대해서는 답할 수 있다. 그러나 다른 예상되거나 관심 있는 질의들은 답할 수 없다: 고객들이 가장 선호하는 책은? 어떤 고객들이 2차 세계대전 스파이들에 대해서 관심 있는가? 이 질의에 대한 답을 구하기 위해서는 데이터베이스와 완전히 분리되어 이 질의를 다루는 소프트웨어를 구현하여야 하며, 이 소프트웨어의 목표는 한가지이다: 비 정규화된 항목을 정규화한다.

정규화된 테이블에서는 예측되지 않는 질의라고 하여도 순전히 데이터베이스의 테두리 안에서 쉽게 답변이 가능하다.

  • 이상 (Anomaly)

▪ 삽입 이상 (Insertion Anomaly) : 데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상

▪ 삭제 이상 (Deletion Anomaly) : 릴레이션의 한 튜플을 삭제함으로써 연쇄 삭제로 인해 정보의 손실을 발생시키는 현상

▪ 갱신 이상 (Updating Anomaly) : 튜플 중에서 일부 속성을 갱신함으로써 정보의 모순성이 발생하는 현상

  • 함수적 종속적 의미

▪ 개체 내에 존재하는 속성들 간의 관계를 종속적인 관계로 정리하는 방법

▪ 데이터 속성들의 의미와 속성들 간의 상호 관계로부터 도출되는 제약조건

▪ 기준값을 결정자 (Determinant)라 하고 종속되는 값을 종속자 (Dependent)라고 한다.

▪ 릴레이션 R에 존재하는 데이터 항목들 중 속성 Y가 속성 X에 함수적으로 종속된다는 말은 속성 X를 이용해 속성 Y를 식별할 수 있다는 것이다.

▪ 속성 Y는 속성 X에 함수적 종속이라 하고 표현은 X → Y 라고 표현한다. 이때 X를 결정자, Y를 종속자라고 부른다.

▪ 완전 함수적 종속이란 복함 속성 X에 대하여 X → Y가 성립할 때이다.

▪ 이행 함수적 종속이란 속성 X, Y, Z가 주어졌을 때 X → Y, Y → Z 하면 X → Z가 성립된다는 것이다.

  • 정규화 과정

① 1정규형

- 어떤 릴레이션에 속한 모든 도메인이 원자값 (Atomic value) 만으로 되어 있는 릴레이션이다.

- 하나의 속성만 있어야 하고 반복되는 속성을 별도 테이블로 분리한다.

- 하나의 항목에는 중복된 값이 입력될 수 없다.

② 2정규형

- 1정규형을 만족하고, 내재된 부분 함수적 종속을 제거한다.

- 기본키가 아닌 애트리뷰트 모두가 기본키에 완전 함수 종속이 되도록 부분 함수적 종속에 해당하는 속성을 별도 테이블로 분리한다.

③ 3정규형

- 1정규형, 2정규형을 만족하고, 이행 함수적 종속을 제거한다.

- 이행 함수적 종속 : A -> B, B -> C, A -> C

④ BCNF 정규형

- 1정규형, 2정규형, 3정규형을 만족하고, 결정자가 후보키가 아닌 함수적 종속을 제거한다.

- 강력한 3정규형이라고도 한다.

⑤ 4정규형

- 1정규형, 2정규형, 3정규형, BCNF 정규형을 만족하고 다가 (다치) 종속을 제거한다.

⑥ 5정규형

- 1정규형, 2정규형, 3정규형, BCNF 정규형, 4정규형을 만족하고, 후보키를 통하지 않은 조인 종속을 제거함.

데이터베이스

일대일, 일대다, 다대다 관계 모델에 대해 설명해보세요.

데이터베이스

데이터 처리 과정에서 데이터의 누락 및 중복을 방지하거나 검증하는 방법에 대해 설명해보세요

커뮤니티 Q&A

이론과 관련된 게시글이에요.

이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!

게시글 작성하기