---
title: "오라클 DBMS 정리 17"
date: "2018-11-13"
tags: ["오라클DBMS"]
status: archived
verified: false
---

## 오라클 DBMS 정리 17 - 정규화

---


![17-01](/md/legacy-assets/oracle/17-01.webp)

### Table = Entity =  Relation

* Column = Field = Attribute 
  * Columns = Relation Schema
  * 컬럼의 수 = Degree
* Record, Row = Tuple
  * Records = Relation Instance
  * 튜플의 수 = Cardinality

---


### 정규화 (Normalization)

* **테이블을 나눠 이상현상을 없애는 것**
* 1NF-2NF-3NF-BCNF-4NF-5NF
  * 도부이결다조..(시나공)
  * 1NF - 도메인의 원자성이 된 상태
  * 2NF - 부분 함수 종속 제거된 상태
  * 3NF - 이행적 함수 종속 제거된 상태
    * 보통 3정규형까지 정규화 진행
  * BCNF - 후보키가 아닌 결정자가 제거된 상태
  * 4NF - 다치 종속 제거
  * 5NF - 조인 종속 제거
* **역정규화**
  * 진행된 정규화를 이전 상태로 되돌리는 것
* **결정자, 종속자**
  * 결정자는 키, 종속자는 키로 식별할 수 있는 값
* **완전함수종속**
  * 결정자로만 의미있는 데이터를 검색할 수 있는 것
* **부분함수종속**
  * 결정자가 여러컬럼으로 구성될 때 그 중 하나의 컬럼으로만 컬럼을 사용하여 의미있는 레코드를 검색할 수 있는 것
* **비정규 테이블**
  * 도메인이 원자값을 갖도록 만듦 ->  1NF
  * 다가속성
    * 컬럼에 여러개의 값을 가지게 되는 것
  * 반복속성
    * 여러 레코드에 동일한 값이 반복해서 나오는 것

![17-02](/md/legacy-assets/oracle/17-02.webp)

* **1NF**
  * 부분함수 종속 제거 -> 2NF
    * 결정자가 여러개인 경우 하나의 결정자로 조회

![17-03](/md/legacy-assets/oracle/17-03.webp)

* **2NF**
  * 이행함수 종속 제거 -> 3NF
    * 일반컬럼으로 의미있는 데이터를 조회할 수 없도록 분리하는 것


![17-04](/md/legacy-assets/oracle/17-04.webp)
