본문 바로가기

CS 공부

CS) 데이터베이스 관계대수, 관계 함수, 정규화

1. 관계대수 ( Relational Algebra )

관계대수는 관계형 데이터베이스에서 데이터를 조작하고 검색하는 수학적 연산 집합이다. 이를 통해 원하는 데이터를 효과적으로 추출할 수 있다.

  1. 관계대수 연산

  • 순수 관계 연산 ( 기본 연산 )
    • SELECT ( σ, 시그마 연산 ) : 조건을 만족하는 튜플 ( 행 )만 선택
    • PROJECT ( π, 파이 연산 ) : 특정 속성( 열 )만 선택
    • JOIN ( ⋈, 조인 연산 ) : 두 개의 릴레이션을 특정 조건으로 결합
    • DIVISION ( ÷, 디비전 연산 ) : 특정 속성을 포함하는 부분집합을 찾는 연산
  • 일반 집합 연산
    • 합집합 ( ∪, UNION ) : 두 릴레이션을 합침 ( 중복 제거 )
    • 교집합 ( ∩, INTERSECT ) : 공통된 튜플만 선택
    • 차집합 ( -, DIFFERENCE ) : 첫 번째 릴레이션에서 두 번째 릴레이션을 제외한 결과
    • 카티션 프로덕트 ( ×, Cartesian Product ) : 모든 튜플을 조합하여 새로운 튜플 생성

2. 관계 함수 ( Relational Function )

관계 데이터 모델에서 릴레이션 간의 관계를 나타내는 함수적 종속성을 의미한다.

  1. 함수적 종속 ( Functional Dependency, FD )

  • X → Y : X가 Y를 결정한다.
  • 예시: 학번 → 학생이름 ( 학번이 같으면 학생이름도 동일해야 함 )

  2. 함수적 종속의 종류

  • 완전 함수적 종속 ( Full Functional Dependency ) : 기본키 전체가 결정자로 작용
  • 부분 함수적 종속 ( Partial Functional Dependency ) : 기본키 일부 속성만으로 결정됨
  • 이행적 종속 ( Transitive Dependency ) : A → B, B → C이면 A → C 성립
  • 다치 종속 ( Multivalued Dependency, MVD ) : 하나의 속성이 여러 값을 가질 때 발생
  • 조인 종속 ( Join Dependency, JD ) : 특정 릴레이션이 두 개 이상의 하위 릴레이션으로 분해될 수 있을 때 발생\

3. 데이터베이스 정규화 ( Normalization )

정규화는 데이터의 중복을 최소화하고 데이터 무결성을 유지하기 위한 과정이다.

  1. 정규화의 단계

  • 제1정규형 ( 1NF ) - 원자성 ( Atomicity ) 확보
    • 한 속성에 하나의 값만 저장해야 함
    • 예) ‘전화번호’ 속성에 여러 개의 번호 저장 ❌ → 별도 테이블로 분리
  • 제2정규형 ( 2NF ) - 부분 함수적 종속 제거
    • 기본키 전체가 아닌 일부 속성만으로 결정되는 경우 제거
    • 예) ( 학번, 과목코드 ) → 성적 → 학번 → 학생이름 ( 부분적 종속 발생 ) → 분리 필요
  • 제3정규형 ( 3NF ) - 이행적 종속 제거
    • 기본키가 아닌 속성 간의 종속 관계 제거
    • 예) 학번 → 지도교수ID, 지도교수ID → 교수이름 → 학번 → 교수이름 ( 이행적 종속 발생 )
  • BCNF ( Boyce-Codd Normal Form ) - 결정자가 후보키가 아니면 분리
    • 더 강력한 형태의 3NF, 모든 결정자가 후보키가 되도록 구성
  • 제4정규형 ( 4NF ) - 다치 종속 제거
    • 하나의 속성이 여러 값을 가질 경우 분리 ( MVD 해결 )
  • 제5정규형 ( 5NF ) - 조인 종속 제거
    • 데이터를 분리하여 다시 조인해도 원본이 유지될 수 있도록 구성

  2. 정규화의 장점과 단점

  • 장점
    • 데이터 중복 제거로 저장 공간 절약
    • 데이터 무결성 및 일관성 유지
    • 삽입, 삭제 이상 ( Anomaly ) 방지
  • 단점
    • 너무 높은 정규화는 성능 저하를 유발할 수 있음
    • 복잡한 질의 ( Query ) 실행 시 속도 저하 가능

4. 정리

  • 관계대수는 데이터를 조작하는 연산 방법이며, SELECT(σ), PROJECT(π), JOIN(⋈) 등이 포함됨.
  • 관계 함수는 데이터 간의 종속 관계를 나타내며, 함수적 종속 ( Functional Dependency ) 개념을 이해하는 것이 중요함.
  • 정규화는 데이터베이스 설계를 최적화하는 과정으로, 1NF → 2NF → 3NF → BCNF → 4NF → 5NF 순으로 진행됨.
  • 정규화는 중복을 최소화하고 무결성을 유지하지만, 지나치면 성능 문제가 발생할 수 있음.