이상(Anomaly)
릴레이션에서 일부 속성들의 종속으로 인해 데이터 중복이 발생하여 테이블 조작시 불일치 발생
- 갱신(Update) 이상 : 반복된 데이터 중 일부 수정시 데이터 불일치 발생
- 삽입(Insert) 이상 : 불필요한 정보를 함 께 저장하지 않고는 어떤 정보를 저장하는 것이 불가능
- 삭제(Delect) 이상 : 유용한 정보를 사용하지 않고 어떤 정보를 삭제하는 것이 불가능
정규화(Normalization)
정규화를 하는 이유는 중복 방지와 효율적인 데이터 저장
(릴레이션 분리 -> 삽입, 삭제, 갱신 이상의 발생 가능성을 줄임)
-단점 : 연산 시간이 증가됨
제1 정규형(1NF: First Noraml Form)
반복되는 속성 제거한 뒤 모든 속성이 원자 도메인 만으로 된 정규형
(제1정규형에 위배되는 테이블은 중복이 발생해서 무결성 위배 가능성이 있다)
번호 | 이름 | 취미 |
---|---|---|
001 | 홍길동 | 낚시,봉사 |
002 | 최홍만 | 격투기 |
취미에 값이 2개들어가서 위반됨
번호 | 이름 | 취미 |
---|---|---|
001 | 홍길동 | 낚시 |
001 | 홍길동 | 봉사 |
002 | 최홍만 | 격투기 |
중복되는 속성이 발생해서 위반됨
이를 해결하기 위해 중복되는 릴레이션을 분리하여 저장하고
데이터를 찾을 땐 JOIN 연산을 사용하여 조회
도메인은 속성이 지닐 수 있는 값의 집합이며 원자도메인으로 구성됐다는건
속성의 값이 그 집합의 원소들로만 이루어졌다는 뜻
위 테이블의 제1정규형을 거치게 되면
사람 테이블
번호 | 이름 |
---|---|
001 | 홍길동 |
002 | 최홍만 |
취미 테이블
번호 | 취미 |
---|---|
001 | 낚시 |
001 | 봉사 |
002 | 격투기 |
이렇게 릴레이션을 분리하여 만들 수 있다.
[사람] 테이블에서 기본키가 [취미]테이블에서 외래키로 전이됨으로서 관계가 형성된다.
[취미] 테이블은 기본키가 복합키(Composite Key 2개 이상의속성으로 구성된 키) 임
(번호와 취미를 묶어 기본키로 취급)
제2 정규형 (2NF)
제 1정규형인 상태에서 부분함수적 종속을 제거하여 완전 함수적 종속을 만족하는 정규형을 의미한다.
함수적 종속(함수 종속)
어떤 릴레이션 R에서 X와 Y를 각각 R의 애트리뷰트 집합의 부분집합 이라고 할 경우, X는 값 각각에 대해 Y와 값이 오직 하나만 연결되어 있을 때 Y는 X에 함수종속 이라고 하고, X를 결정자, Y를 종속자 라고 한다.
예) 회원번호 -> 이름
표기법 : X -> Y
부분 / 완전 함수적 종속
성적
학번 | 이름 | 과목 | 성적 |
---|---|---|---|
0001 | 민우 | 수학 | 80 |
002 | 지연 | 수학 | 90 |
002 | 지연 | 과학 | 100 |
001 | 민우 | 과학 | 70 |
학번에 대해 이름은 바로 구할 수 있다.
이 경우를 부분 함수적 종속이라고 한다.
하지만 성적은 학번만으로 구할 수 없다.
구하기 위해선 과목도 필요하다
이 경우를 완전 함수적 종속이라고 한다.
이 때 이름 컬럼을 분리해주면
성적 테이블은 완전함수적 종속 상태가 되므로
2정규형을 만족하게 된다.
제3 정규형 (3NF)
제 2 정규인 상태에서 이행적 함수적 종속 관계 제거(이행함수종속) 하여 비이행적 함수적 종속 관계를 만족하는 정규형
신청
대기번호 | 회원번호 | 회원취미 |
---|---|---|
1 | A01 | 기타연주 |
2 | A02 | 독서 |
신청 릴레이션에서는 대기번호를 알면 회원 번호를 알 수 있고
회원번호를 알면 회원취미를 알 수 있다.
이 때 대기번호 -> 회원취미 의 관계를 이행적 함수적 종속 관계라고 한다.
회원번호, 회원취미 속성을 분리하면 비이행적함수종속상태가 되므로 신청 테이블은 3정규형을 만족한다.
BCNF(Boyce/Codd Normal Form)
제3 정규형이고, 결정자가 후보키가 아닌 함수 종속 제거 모든 결정자가 후보키이어야 하는 것
이행함수종속으로 정해진 결정자가 후보키가 아닐경우 BCNF를 만족하지 않는다.
제4 정규형 (4NF)
BCNF에 속하며 다치 종속 (다중 값 종속, MVD: Multi Valued Dependency) 제거
- 함수적 종속 : 아이디 -> 주민번호 (1:1로 대응해야 하므로 하나의 아이디 값이 2개 이상의 주민번호 속성을 결정해선 안됨)
- 다치 종속 : 아이디 ->> 수강과목 (1:N 대응되므로 릴레이션에서 중복이 발생할 수 있어 무손실 분해(정규화)가 되어야 함 1NF에 원자 성질과 비슷하나 1NF에서는 도메인 값이 정해져 있을 때 발생하고 여기선 도메인 값이 정해지지 않았으며 릴레이션의 속성들이 독립되었을 때 발생)
무손실 분해란 분해 이후에도 의미있는 연결이 유지되어야 한다는 뜻
제5 정규형 (5NF)
후보키를 통하지 않은 조인종속(제거)
조인 종속 : 릴레이션이 그 어떤 프로젝션을 조인한 결과와 똑같아야 한다.
프로젝션 : 분리
조인 : 재조립
다시 말하면 한 릴레이션을 쪼갰다가 다시 합쳤을 때 결과가 동일해야 한다는 뜻이며
이런 경우를 제거해야 한다는 뜻이다.
정리
- 제1 정규형 (모든 속성 값이 원자값 / 반복속성 제거)
- 제2 정규형 (부분 함수적 함수 종속 제거, / 다른 속성이 기본키 외 종속되면 안됨)
- 제3 정규형 (이행적 함수적 종속 제거, 모든 속성이 기본키에 직접 종속되야함 **비이행적)
- BCNF (모든 결정자가 후보키여야함)
- 제4 정규형 (다치 종속 제거 / 기본키 속성의 종속되는 컬럼들이 서로 다양한 값을 가질 때 다치 종속 발생, 이를 제거하여 무결성을 유지하여함)
- 제5 정규형 (후보키를 통하지 않은 조인종속 제거, 조인종속 : 릴레이션을 분해했다가 조립해도 똑같아야함)
정규화의 목적은 데이터베이스의 이상현상(anomaly)를 제거하는데 있다.
데이터 사전(Data Dictionary), 자료사전
시스템이 필요한 객체 정보를 담고 있는 시스템 데이터 베이스(시스템 카탈로그)
사용자도 SQL을 이용해 검색 가능하나 갱신은 DBMS만 되고 사용자 갱신은 안됨.
(객체는 테이블, 뷰, 인덱스, 접근권한 등)
시스템에서 사용하는 모든 파일, 속성, 변수목록 등 어떤 자료가 있는지 쉽게 알 수 있게함
'IT개념 > 정보처리산업기사' 카테고리의 다른 글
[정처산기] 물리적 설계 (0) | 2021.04.18 |
---|---|
[정처 산기] 관계대수, 관계해석 (0) | 2021.04.18 |
[정처산기] 데이터베이스 개념 (0) | 2021.04.13 |
[정처산기] 소프트웨어 아키텍쳐와 분석기법 (0) | 2021.04.11 |
[정처산기] 알고리즘 - 석차구하기 (0) | 2021.04.10 |