본문 바로가기

DB

데이터베이스(4)

정규화란?

  • 테이블 간에 중복된 데이터를 제거하여 무결성을 유지하게 하는 것

정규화 단계

제 1정규화

  • 테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것

제 2정규화

  • 제 1정규형 릴레이션에서 부분 함수 종속성을 제거하는 것
    • 부분 함수 종속성 : 기본키가 복합키일 경우 기본키를 구성하는 속성 중 일부에게 종속된 것
     

기본키(복합키) : 학생번호, 강좌이름 → 성적

강좌이름(기본키의 부분집합) → 강의실

 

제 3정규화

    • 이행 함수 종속 : A -> B, B -> C가 성립할 때 A -> C가 성립되는 것
    • 이행 함수 종속의 문제 : 학생번호 → 강좌이름 → 수강료인 경우 강좌 이름이 바뀌어도 학생은 수강료를 그대로 내고 수업을 들을 수 있음, 강좌이름에 맞게 수강료를 변경하는 과정 번거로움제 2정규형 릴레이션에서 이행 함수 종속성을 제거하는 것

 

BCNF 정규화

  • 제 3정규형 릴레이션에서 모든 결정자가 후보키가 되도록 테이블을 분해하는 것

 

N대M 자기참조 관계 해결방법

  • 한 테이블 내의 레코드들 사이에 존재하는 N대 M관계
  • 보조 테이블 생성 후 원래 테이블과의 관계를 맺은 후 일대다 관계로 변환

 

뷰란?

데이터베이스의 하나 이상의 테이블의 필드들로 구성된 가상테이블

뷰의 사용이유?

데이터 무결성을 강화하고 여러 테이블들로부터 동시에 온 데이터로 작업하기 위해 사용

뷰 정의문

CREATE VIEW 뷰이름[(속성이름[,속성이름])]AS SELECT문; //뷰 생성
DROP VIEW 뷰이름 RESTRICT or CASCADE //뷰 삭제

 

'DB' 카테고리의 다른 글

MySQL (1)  (0) 2024.07.18
데이터베이스(5)  (0) 2024.05.13
데이터베이스(3)  (0) 2024.05.13
데이터베이스(2)  (0) 2024.05.09
데이터베이스(1) - 용어  (1) 2024.05.09