- 정규화
- 정규화의 정의
정규화 작업은 불필요하게 같은 데이터가 반복되어 나타나는 것을 방지하기 위한 작업으로 E-R Diegram의 검증 및 원시데이터의 관계형 테이블 전환시 사용된다. 정규화 작업은 총 6단계 또는 7단계로 구분 될 수 있다. 하지만 일반적으로 3단계까지만 진행하면 충분하다고 볼 수 있다. - 정규화의 이점
불필요한 데이터 반복을 제거함으로써 저장공간을 최소화 할 수 있으며, 데이터의 변경 시 데이터의 불일치성을 최소화하고, 연산작업을 최소화 할 수 있다. - 용어 정의
- Nomal Form ( 정규형 ) : 수학자인 Codd의 이론으로 관계형 테이블을 생성하기 위해 지켜야 하는 일련의 규칙이다. 이론적으로는 다양한 정규형이 있지만 일반적인 업무에서는 3차 정규형이면 충분하다.
- Key : 데이터의 그룹을 유일하게 식별하기 위한 데이터이다. Primary key
- Repeating Group : 데이터의 일부가 주어진 key의 값에 대해 여러 개의 값을 가질 수 있을 때 발생하는 데이터의 집합이다. 즉 반복그룹은 하나 이상의 값이 존재하는 데이터 그룹이다.
- Dependency : 데이터 항목의 존재가 다른 데이터 항목에 의존될 때 이 데이터는 이 항목을 결정하는 데이터 항목없이는 의미를 갖지 못한다.
A. 1NF ( First Normal Form ) - Remove Repeating Group
테이블에서 반복되는 여러 개의 항목들을 Repeating group 이라 하고, 이를 별도의 Row로 분리하는 작업이 1NF 이다. 다음 예제는 스포츠 클럽의 회원 테이블이다. 각 회원들은 최대 두가지 활동을 할 수 있다고 가정한다.위의 테이블에서 중복되는 데이터를 분리하여 각각 다른 Row를 만들어 1NF의 조건에 맞는 테이블을 다시 작성하면 다음과 같다.
B. 2NF ( Second Normal Form ) - Remove Part Key Dependevcies
2NF는 1NF 조건을 만족하면서 Key가 아닌 다른 Column 들은 기본 Key에 의존성이 있어야 한다. 따라서 의존성이 없는 데이터 항목들을 제거하여 분리하는 작업이 2NF 이다. 위의 데이터를 2NF 조건에 맞게 변형한 것이다.
테이블을 분리 함으로써 2NF의 조건인 기본 Key의 의존성은 확보했다. 하지만 현재 회원의 활동 상태를 파악하지 못하는 단점이 있으므로 이 두 테이블의 관계를 정의하는 테이블이 필요하다.
C. 3NF ( Third Normal Form ) - Remove non-key dependencies
3NF는 2NF의 조건으로 만족하면서 Key가 아닌 항목들간의 종속성을 제거하는 작업이다. 위의 회원 상태 테이블에서 지역코드는 회원ID에 의존성을 가지고, 거주지는 지역코드에 의존성을 가기므로 거주지는 회원ID에 의존성을 가진다. 따라서 Key가 아닌 데이터 항목이 다른 항목의 결정요소가 되므로 이것을 제거하기 위해 이와 같은 항목들을 분리한다.여기에서 '총비용' Column은 별도로 데이터를 저장하기 않아도 각 테이블의 조인 연산으로 통해 쉽계 계산이 가능하므로 별도의 데이터를 관리할 필요가 없다.
- Structured Query Language ( SQL )
관계형 데이터베이스에서 데이터를 조작하기에 가장 알맞은 언어로서 다음과 같은 역할을 수행한다.- 데이터 쿼리
- 테이블에 있는 데이터에 대한 삽입, 변경, 삭제 ( 데이터 관리 )
- 스키마 오브젝트에 대한 생성, 변경
- 데이터베이스, 스키마 오브젝트 관리
- 데이터 무결성 보장
- 정규화의 정의
'DB - ORACLE > DB Tunning(TABLE,SQL,...)' 카테고리의 다른 글
SQL 성능을 위한 기초적인 SQL 작성 25가지 규칙 (0) | 2015.09.07 |
---|---|
RDBMS ( Relational DataBase Management System ) (0) | 2015.09.07 |
Oracle LOCK의 유형 (0) | 2015.09.07 |
SQL 문의 Processing 순서 (0) | 2015.09.03 |
오라클 프로세스가 Free Buffer 를 찾는 과정 (0) | 2015.09.03 |