Anomaly(이상)
- DB를 잘못 설계하면 데이터 조작시 데이터가 중복되어 정확성에 문제되는 현상
- 종류
- 삽입이상 : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입하는 현상
- 삭제이상 : 릴레이션에 데이터를 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄삭제현상
- 갱신이상 : 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보무결성에 침해현상
Normalization(정규화) 개념
- 정규화는 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
- 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형
- 정규화는 데이터베이스의 개념적 설계 단계와 논리적 설계 단계 사이에서 수행
- 개체들에 존재하는 데이터 속성의 중복을 최소화하여 일치성을 보장하며 데이터 모델을 단순하게 구성함.
- 개체에 존재하는 함수적 종속 관계를 이용하여 데이터베이스 구조를 안정화 시킴.
- 정규화는 논리적 처리 및 품질에 큰 영향을 미침.
- 데이터베이스의 이상현상을 방지,제거하기 위해 정규화를 진행함
Normalization(정규화) 방법
- 이상 현상을 제거하기 위해 데이터의 종속성 및 중복성 제거
- 원인: 여러 종류의 사실이 한 테이블에 존재
- 해결법: 관계 모델링한 릴레이션에 제한 사항을 두어 정규화
제1정규형(1단계)
- 어떤 관계에 속한 모든 인스턴스의 속성 값이 원자값만으로 되어 있다.
- 모든 특성에 반복되는 그룹이 나타나지 않는다.
- 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.
<예제>
ID | First | Surname | Telephone |
---|---|---|---|
123 | Pooja | Singh | 555-861-2025, 192-122-1111 |
456 | San | Zhang | (555) 403-1659 Ext. 53; 182-929-2929 |
789 | John | Doe | 555-808-9633 |
- 위 Relation은 1인당 전화번호가 여러 개므로 Atomic하지 않아 제1정규형중 1번 규칙을 위반
제1정규형(2단계)
ID | First | Surname | Telephone1 | Telephone2 |
---|---|---|---|---|
123 | Pooja | Singh | 555-861-2025 | 192-122-1111 |
456 | San | Zhang | (555) 403-1659 Ext. 53 | 182-929-2929 |
789 | John | Doe | 555-808-9633 |
- 위 테이블은 인스턴스마다 전화번호 속성이 여러개 생겼으므로 제1정규형 규칙 중 2번 규칙을 위반하여 아래 테이블처럼 바꿀 수 있다.
ID | First | Surname | Telephone |
---|---|---|---|
123 | Pooja | Singh | 555-861-2025 |
123 | Pooja | Singh | 192-122-1111 |
456 | San | Zhang | (555) 403-1659 Ext. 53 |
456 | San | Zhang | 182-929-2929 |
789 | John | Doe | 555-808-9633 |
- 위 테이블에서 ID로는 각 인스턴스를 고유하게 식별할 수 있는 키가 확인했으므로 별도의 테이블을 나누어 디자인하는 것이 좋다
ID | First | Surname |
---|---|---|
123 | Pooja | Singh |
456 | San | Zhang |
789 | John | Doe |
ID | Telephone |
---|---|
123 | 555-861-2025 |
123 | 192-122-1111 |
456 | (555) 403-1659 Ext. 53 |
456 | 182-929-2929 |
789 | 555-808-9633 |
함수적 종속성
- 함수적 종속성(FD: functional dependency)은 좋은 릴레이션 설계의 정형적 기준
- X, Y가 개체의 속성이라고 할 때, X가 Y를 유일하게 결정한다면, X는 Y를 함수적으로 결정한다고 보고, X → Y로 표기
- 함수적 종속성의 검사 방법 → 릴레이션 R에 해당하는 두 행에 대해 속성들의 집합 X에 대해 동일한 값을 가질 때, Y에서도 동일한 값을 가지면 함수적 종속성이 성립한다.
예시
- 주민등록번호는 사원의 이름을 결정한다. SSN → ENAME
- 프로젝트 번호는 프로젝트 이름과 위치를 결정한다. PNUMBER → {PNAME, PLOCATION}
- 사원의 주민등록번호와 프로젝트 번호는 그 사원이 일주일동안 그 프로젝트을 위해서 일하는 시간을 결정한다. {SSN, PNUMBER} → HOURS
제2정규형
- 기본키와 완전 함수적 종속성의 개념에 기반 -완전 함수적 종속성: Y→Z에서 Y의 어떤 속성이라도 제거하면 더 이상 함수적 종속성이 성립하지 않는 경우
예제
- {SSN, PNUMBER} → HOURS는 SSN → HOURS와 PNUMBER → HOURS가 성립하지 않기 때문에 완전 함수적 종속성이다.
- {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 정규형)를 갖게 하는 것이다