쥬로그

오라클 - 중복정보 수정, 정규형, 참조무결성 본문

Study/Oracle

오라클 - 중복정보 수정, 정규형, 참조무결성

쥬쥬씨 2021. 8. 31. 17:54
반응형

< 중복정보 수정, 정규형, 참조무결성 >

* 정규화가 필요한 이유는 동일한 정보가 여러 군데 나오는 것을 막고 데이터의 무결성을 유지하기 위해서다.

* 외래 키로 연결되어 있는 때, 레코드를 추가하는 경우 원래 테이블에 레코드가 이미 존재해야 한다.

  삭제할 경우에는 참조되는 원래 테이블의 레코드가 아무도 자신을 참조하지 않아야 삭제 가능하다.

  즉, 외래 키로 연결되어 있는 테이블의 경우 삽입/삭제 순서를 신중하게 해야한다.


* 중복정보 제거

- 테이블 간의 정보는 중복되지 않아야 한다.

  : 동일한 정보가 여러 군데 테이블에 저장되어 있으면 수정에 대한 부담과 무결성(Integrity) 유지가 쉽지 않다.

  : 하나의 정보는 한 군데만 나오도록 한다.

 

- 이를 위해 정규화(Normalization)을 통해 중복성 제거

  : 제 1 정규형, 제 2 정규형, 제 3 정규형, ...

 

- 중복성 제거 후 필요한 정보는 외래 키를 통한 조인(JOIN)으로 필요한 정보를 구한다.

 

  => RDBMS의 특징

 

 

* 정규형

- 중복을 제거하기 위한 테이블 정의 규칙

 

♧ 제 1 정규형

나눌 수 있을 만큼 쪼개라

 

♧ 제 2 정규형

테이블의 컬럼들이 기본키와 직접 연관되는 컬럼만으로 구성하라

 

♧ 제 3 정규형

컬럼들 간의 종속 관계가 있으면 안 됨

 

 

* 참조무결성 (Referential Integrity)

- 외래키(FK)에 적용되는 규칙

- 외래키와 참조되는 원래 테이블의 키와 관계를 명시

- 외래키를 참조하면 원래 테이블에 해당 레코드 값이 반드시 존재해야 함

- 만약 원래 레코드를 삭제하려면 참조하는 외래키(FK)값을 먼저 NULL로 만들어야 함

- 외래키 참조 관계가 있을 경우에 레코드 추가/삭제 시 선후관계를 나타냄

 

ex) emp 테이블에 deptno가 99 직원 레코드를 하나 추가하시오.

-> insert into dept values (99, 'Academy', 'Seoul');

-> insert into emp values ('80000', 'Alex', 'Lecture', null, null, 10000, 0, 99);

    ※ 순서를 바꾸면 에러 발생함

 


< Point >

☆ 테이블의 기본 키와의 연관관계가 아닌 컬럼들 간의 연관관계를 제거하는 것은 제 3 정규형이다.

☆ 정규화(Normalization)은 데이터의 중복을 제거하기 위해서 테이블 스키마를 분리하는 것이다.

☆ '나눌 수 있는 데이터는 최대한 테이블을 나눠서 모델링하는 것'은 제 1 정규형에 해당한다.


< 요약 >

* 중복성 제거

- 동일한 정보가 다양한 테이블에 중복되어 있으면 내용을 수정할 경우 다양한 문제가 있음(일관성 문제)

* 정규형

- 데이터의 중복성을 제거하는 방법

- 다양한 정규형이 있으나 보통 1, 2, 3 정규형까지 많이 사용함

* 참조무결성

- 외래키 값이 NULL이거나 NULL이 아니면 해당 테이블에 반드시 존재

- 외래키(FK) 제약 조건이 있으면 레코드 추가/삭제 시 순서가 지켜져야 함

 

반응형