Back-End/DBMS(Oracle)

[Oracle] 무결성, 정규화

챌링킴 2021. 6. 9. 22:04
반응형

1) 무결성
- 데이터의 정확성, 일관성, 유효성이 유지 되는것

  1. 개체 무결성
    모든 테이블이 PK로 설정된 컬럼을 가져야 한다.
  2. 참조 무결성
    두 테이블의 데이터가 항상 일관된 값을 갖도록 유지하는 것
  3. 도메인 무결성
    컬럼의 타입, NULL값 허용 등에 대한 사항을 정의하고
    올바른 데이터가 입력 되었는지를 확인하는 것

1. 정확성
- 데이터는 애매하지 않아야 한다.


2. 일관성
- 각 사용자가 일관된 데이터를 볼 수 있도록 해야한다.

 

3. 유효성

- 데이터가 실제 존재하는 데이터여야 한다.


2) 정규화
- 삽입 / 수정 / 삭제의 이상현상을 제거
- 데이터 중복 최소화
- 대부분 3차 정규화까지만 진행

3) 정규화의 목적
- 데이터베이스를 잘못 설계하면 불필요한 데이터의 중복으로 인해 공간이 낭비된다.

이러한 현상을 이상(Anomaly) 라고 한다.

4) 이상현상의 종류

아이디  이름  전공  수업코드  수업명  수업인원
apple 김사과 컴공과 C001 자바 30
apple 김사과 컴공과 C002 DBMS 35
apple 김사과 컴공과 C003 파이썬 30
banana 반하나 경영과 D001 경영학개론 35

 

  1. 삽입이상
    새 데이터를 삽입하기 위해 불필요한 데이터도 삽입해야하는 문제
    수강신청을 하지 않은 학생이 있다면 수업명에 NULL을 작성할 수
    없으므로 이 학생은 테이블에 추가될 수 없다.
    따라서 의미없는 데이터를 약속 후 삽입해야 하고 이러한 현상을
    삽입 이상이라고 한다.
  2. 수정이상
    중복 행 중 일부만 변경해서 데이터가 불일치하게 되는 모순의 문제
    한 명의 학생은 반드시 하나의 전공만 가질 수 있다. "김사과"가
    기계과로 전과해서 데이터를 수정해야 할 때 3개의 행 모두 수정해야 한다.
    그렇지 않으면 컴공과인지 기계과인지 알 수가 없다. 이러한 현상을
    수정 이상이라고 한다.
  3. 삭제이상
    행을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 문제
    반하나가 듣고 있는 경영학개론이 폐강된다면 반하나 행을 모두 삭제하게 된다.
    따라서 수업에 관한 데이터만 삭제해도 학생 정보 모두를 삭제하게 된다.
    이러한 현상을 삭제 이상이라고 한다.

1차 정규화
- 하나의 컬럼에 값이 1개씩만 있어야 한다.

더보기

영화코드 배우
A001 '강동원,원빈,박보검'

>>

 

영화코드 배우
A001 '강동원'
A001 '원빈'
A001 '박보검'

영화코드 배우
A001 '강동원,원빈,박보검'

>>

 

영화코드 배우
A001 '강동원'
A001 '원빈'
A001 '박보검'

2차 정규화
- 테이블의 모든 컬럼이 서로 관계가 있어야 한다.

더보기

USER
이름 나이 상품명
김사과 10 바지
반하나 20 치마
이체리 30 자켓
--------------------------
USER
이름 나이
김사과 10
반하나 20
이체리 30

PRODUCT
상품명
바지
치마
자켓

USER
이름 나이 상품명
김사과 10 바지
반하나 20 치마
이체리 30 자켓
--------------------------
USER
이름 나이
김사과 10
반하나 20
이체리 30

PRODUCT
상품명
바지
치마
자켓

3차 정규화
- 하나의 컬럼은 그 외 다른 컬럼을 결정할 수 없다.

더보기

이름 시 구 동 우편번호
김사과 서울 강남 역삼 01234
반하나 서울 강남 대치 56789
이체리 서울 강남 역삼 01234
------------------------------------------
이름 우편번호
김사과 01234
반하나 56789
이체리 01234

우편번호 시 구 동
01234 서울 강남 역삼
56789 서울 강남 대치

이름 시 구 동 우편번호
김사과 서울 강남 역삼 01234
반하나 서울 강남 대치 56789
이체리 서울 강남 역삼 01234
------------------------------------------
이름 우편번호
김사과 01234
반하나 56789
이체리 01234

우편번호 시 구 동
01234 서울 강남 역삼
56789 서울 강남 대치


반정규화
- 데이터베이스를 응용하는데 있어서 더 편리하다면 정규화를 거치지 않기도 한다.

 

반응형