-- *** 정규화(Normalization) ***
# 정규화란?
고유한 식별자를 가지는 모든 개체(Entity = 테이블)에 대해
더 이상 분리할 수 없는 상태로 나누는 과정을 말한다.
정규화 과정을 통해 불필요하게 중복된 데이터 제거 작엄을
하게 된다. 정규화를 통한 개체의 분리는 관계가 있는 개체간의
참조 관계로 데이터를 유지 보수하게 된다.
정규화 수준을 높이면 뎅터량이 줄고 데이터 갱신 속도가
빠르며 같은 자료가 여러 개체에 분산된 것보다 일관성을
유지하기 쉽다. 그러나 관계된 여러 속성을 동시에 조회하는
작업을 수행하기 위해서는 여럭 개체를 JOIN 하여 작업해야 하는
어려움이 있을 수 있다.
또한 갱신 작업에 있어 여러 개체(Entoty= 테이블)에 동시에
반영해야 하는 작업의 겨우는 명시적으로 트랜잭션 처리해야
하는 수고가 따른다. 따라서 먼저 정규화 과정을 수해하고 나서
수행속도나 프로그램을 구현하기 어려운 경우에는
역정규화(비정규화)과정으로 문제를 해결해야 한다.
# 정규화의 종류
1. 제1정규화
-- 어떤 컬럼의 값들이 똑같은 값으로 반복되어져 나온다면
-- 이 컬럼들은 분리해서 새로운 개체(Entity = 테이블)를
-- 만들어야 한다.
-- 즉, 또 다른 개체로 판단할 수 있는 컬럼들을 분리하고
-- 각 개체의 컬럼들중 유일한 식별자를 가지게 해야 한다.
-- 부모테이블의 식별자는 자식테이블의 Foreign Key로
-- 전이된다.
2. 제2정규화
-- 제1정규화를 했을 때의 결과물에서 Single Primary Key 로
-- 되어진 테이블에는 제2정규화는 할 필요가 없다.
-- 하지만 제1정규화를 했을 때의 결과물에서
-- Composite PRIMARY KEY 로 되어진 테이블에는
-- 반드시 제2정규화를 해야 한다.
-- 식별자가 아닌 컬럼은 식별자 전체 컬럼에 대해
-- 의존적이어야 하며 식별자 일부 컬럼에 대해 의존적이라면
-- 그 컬럼은 의존적인 식별자 일부 컬럼과 함께 분리되어
-- 새로운 개체(테이블)를 만든다.
<성적에 관련된 아래와 같은 자료가 있다.
동일한 과목에 대해서 서로 다른 교수가 강의를 할 수 있고
한명의 교수는 서로 다른 과목을 여러개 강의를 할 수 있다.>
<기존 테이블>
'IT. 컴퓨터' 카테고리의 다른 글
[오라클] triggger로 패스워드 바꾸기 (0) | 2020.04.17 |
---|---|
[오라클] DB 모델링 요령, 트리거생성, 제약조건 종류 (0) | 2020.04.15 |
[오라클] 데이터의 값을 변경하기 (0) | 2020.04.15 |
[오라클] 테이블스페이스 생성 (0) | 2020.04.13 |
[오라클] 서버구조 (0) | 2020.04.11 |