Oracle 12c 데이터베이스 08 - 중복정보 수정, 정규형, 참조무결성

💡 본 글은 ‘실습과 함께하는! 데이터베이스 Oracle 12c’ 강의 내용을 바탕으로 정리하였습니다.

중복정보 제거

  • RDB의 특성 상 테이블 간의 정보는 중복되지 않아야 함
    • 동일한 정보가 여러 테이블에 중복 저장되어 있으면 수정에 대한 부담과 무결성(Integrity) 유지가 쉽지 않음
    • 하나의 정보는 한 테이블에만 나오도록 해야 함
  • 정규화를 통해 중복성 제거
  • 제거한 후 필요한 정보는 Join을 통해 구하기

정규형

  • 중복을 제거하기 위한 테이블 정의 규칙
종류 설명
제1정규형 나눌 수 있을 만큼 쪼개야 함
제2정규형 테이블의 컬럼들이 기본키와 직접 연관되는 컬럼만으로 구성해야 함
제3정규형 컬럼들 간의 종속관계가 없어야 함

제 1 정규형

  • 관례(전화번호, 주소, 성-이름) 외에는 최대한 쪼개서 저장하기
  • 한 컬럼에는 하나의 값만 저장하기

제 2 정규형

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

제 3 정규형

  • 컬럼들 간의 종속관계가 있으면 안 됨
  • 종속관계가 있는 컬럼들은 따로 테이블로 분리
    • 예를 들어 http status code(200 - OK, 404 - Not found) 에러인 경우 코드와 메시지는 종속관계가 있음

참조 무결성(Referential Integrity Constraints)

  • 외래키(FK)에 적용되는 규칙
  • 외래키와 참조되는 원래 테이블의 키와 관계를 명시
  • 외래키를 참조하면 원래 테이블에 해당 레코드 값이 반드시 존재해야 함
  • 만약 원래 레코드를 삭제하려면 참조하는 외래키(FK) 값을 먼저 Null로 만들어야 함
  • 외래키 참조관계가 있을 경우에 레코드 추가/삭제 시 선후관계를 나타냄