Anomaly(이상)

  • DB를 잘못 설계하면 데이터 조작시 데이터가 중복되어 정확성에 문제되는 현상

  • 종류
    • 삽입이상 : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입하는 현상
    • 삭제이상 : 릴레이션에 데이터를 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄삭제현상
    • 갱신이상 : 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보무결성에 침해현상

Normalization(정규화) 개념

  • 정규화는 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
  • 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형
  • 정규화는 데이터베이스의 개념적 설계 단계와 논리적 설계 단계 사이에서 수행
  • 개체들에 존재하는 데이터 속성의 중복을 최소화하여 일치성을 보장하며 데이터 모델을 단순하게 구성함.
  • 개체에 존재하는 함수적 종속 관계를 이용하여 데이터베이스 구조를 안정화 시킴.
  • 정규화는 논리적 처리 및 품질에 큰 영향을 미침.
  • 데이터베이스의 이상현상을 방지,제거하기 위해 정규화를 진행함

Normalization(정규화) 방법

  • 이상 현상을 제거하기 위해 데이터의 종속성 및 중복성 제거
  • 원인: 여러 종류의 사실이 한 테이블에 존재
  • 해결법: 관계 모델링한 릴레이션에 제한 사항을 두어 정규화

제1정규형(1단계)

  1. 어떤 관계에 속한 모든 인스턴스의 속성 값이 원자값만으로 되어 있다.
  2. 모든 특성에 반복되는 그룹이 나타나지 않는다.
  3. 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.

<예제>

IDFirstSurnameTelephone
123PoojaSingh555-861-2025, 192-122-1111
456SanZhang(555) 403-1659 Ext. 53; 182-929-2929
789JohnDoe555-808-9633
  • 위 Relation은 1인당 전화번호가 여러 개므로 Atomic하지 않아 제1정규형중 1번 규칙을 위반

제1정규형(2단계)

IDFirstSurnameTelephone1Telephone2
123PoojaSingh555-861-2025192-122-1111
456SanZhang(555) 403-1659 Ext. 53182-929-2929
789JohnDoe555-808-9633
  • 위 테이블은 인스턴스마다 전화번호 속성이 여러개 생겼으므로 제1정규형 규칙 중 2번 규칙을 위반하여 아래 테이블처럼 바꿀 수 있다.
IDFirstSurnameTelephone
123PoojaSingh555-861-2025
123PoojaSingh192-122-1111
456SanZhang(555) 403-1659 Ext. 53
456SanZhang182-929-2929
789JohnDoe555-808-9633
  • 위 테이블에서 ID로는 각 인스턴스를 고유하게 식별할 수 있는 키가 확인했으므로 별도의 테이블을 나누어 디자인하는 것이 좋다
IDFirstSurname
123PoojaSingh
456SanZhang
789JohnDoe
IDTelephone
123555-861-2025
123192-122-1111
456(555) 403-1659 Ext. 53
456182-929-2929
789555-808-9633

함수적 종속성

  • 함수적 종속성(FD: functional dependency)은 좋은 릴레이션 설계의 정형적 기준
  • X, Y가 개체의 속성이라고 할 때, X가 Y를 유일하게 결정한다면, X는 Y를 함수적으로 결정한다고 보고, X → Y로 표기
  • 함수적 종속성의 검사 방법 → 릴레이션 R에 해당하는 두 행에 대해 속성들의 집합 X에 대해 동일한 값을 가질 때, Y에서도 동일한 값을 가지면 함수적 종속성이 성립한다.

예시

  1. 주민등록번호는 사원의 이름을 결정한다. SSN → ENAME
  2. 프로젝트 번호는 프로젝트 이름과 위치를 결정한다. PNUMBER → {PNAME, PLOCATION}
  3. 사원의 주민등록번호와 프로젝트 번호는 그 사원이 일주일동안 그 프로젝트을 위해서 일하는 시간을 결정한다. {SSN, PNUMBER} → HOURS

제2정규형

  • 기본키와 완전 함수적 종속성의 개념에 기반 -완전 함수적 종속성: Y→Z에서 Y의 어떤 속성이라도 제거하면 더 이상 함수적 종속성이 성립하지 않는 경우

예제

  1. {SSN, PNUMBER} → HOURS는 SSN → HOURS와 PNUMBER → HOURS가 성립하지 않기 때문에 완전 함수적 종속성이다.
  2. {SSN, PNUMBER} → ENAME은 SSN → ENAME이 성립하기 때문에 완전 함수적 종속성이 아니다 (이는 부분 함수 종속성이라고 부름).

정의

  • 릴레이션 R의 모든 속성이 기본키에 대해서 완전 함수적 종속이면, R은 제2정규형(2NF)에 속한다.

제3정규형(3NF)

  • 이행 함수적 종속성의 개념에 기반을 둔다.
    • 이행 함수적 종속성: 두 FD Y → X와 X → Z에 의해서 추론될 수 있는 FD Y → Z

예제

  • SSN → DMGRSSN은 SSN → DNUMBER과 DNUMBER → DMGRSSN이 성립하기 때문에 이행적 함수적 종속성이다.
  • SSN → ENAME는 SSN → X이고 X → ENAME인 속성 집합 X가 존재하지 않기 때문에 이행적 종속성이 아니다.

정의

  • 릴레이션 R이 제2정규형을 갖고 R의 어떤 속성 기본키에 대해서 이행적으로 종속되지 않으면 R은 제3정규형을 갖는다고 한다.

BCNF

  • 릴레이션 R에서 성립하는 임의의 FD X → A에서 X가 R의 슈퍼키이면 R은 BCNF을 갖는다고 한다.

각 정규형은 그의 선행 정규형보다 더 엄격한 조건을 갖는다.

  • 모든 제 2 정규형 릴레이션은 제 1 정규형을 갖는다.
  • 모든 제 3 정규형 릴레이션은 제 2 정규형을 갖는다.
  • 모든 BCNF 릴레이션은 제 3 정규형을 갖는다.
  • 제 3 정규형에는 속하나 BCNF에는 속하지 않는 릴레이션이 존재한다. 관계 데이타베이스 설계의 목표는 각 릴레이션이 BCNF(또는 제 3 정규형)를 갖게 하는 것이다

About the author

대학교에서 소프트웨어를 전공하는 백엔드와 데이터베이스에 관심이 많은 주니어 개발자입니다.
제가 진행중인 프로젝트에 관심이 많으시다면, 제 깃허브에 방문해주세요.