[DB] 2. 관계 데이터 모델과 제약 조건

Cherish·2023년 10월 14일
0

DataBase

목록 보기
2/7
post-thumbnail

🍏 관계 데이터 모델

사용자는 원하는 데이터(what)만 명시하고, 어떻게 이 데이터를 찾을 것인가(how)는 명시할 필요가 없음

장점

  • 간단한 테이블(릴레이션) 사용 / 복잡한 구조 X
  • 집합 위주로 데이터 처리
  • 효율적인 질의 처리
  • 새로운 사용자가 쉽게 이해할 수 있다.

✅ 기본적인 용어

  • 릴레이션(relation) : 2차원 테이블
  • 레코드(record) : 릴레이션의 각 행
  • 투플(tuple) : 레코드를 공식적으로 부르는 용어
  • 애트리뷰트(attribute) : 릴레이션에서 이름을 가진 하나의 열

✅ 도메인(domain)

  • 한 애트리뷰트에 나타날 수 있는 값들의 집합
  • 동일한 도메인이 여러 애트리뷰트에서 사용될 수 있다

✅ 차수(degree)와 카디날리티(cardinality)

  • 차수 : 한 릴레이션에 들어 있는 애트리뷰트들의 수
    유효한 릴레이션의 최소 차수는 1
  • 카디날리티 : 릴레이션의 튜플(행) 수
    유효한 릴레이션은 카디날리티 0을 가질 수 있음
    시간에 따라 계속 변한다

🍏 릴레이션(relation)

  • tuple들의 집합
  • 릴레이션 스키마
    • 내포 (intension)
    • 하나 이상의 릴레이션 스키마들로 이루어짐
    • 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합
  • 릴레이션 인스턴스
    • 외연(extension)
    • 릴레이션에 어느 시점에 들어 있는 투플들의 집합


✅ 릴레이션 - 특성

  • 각 릴레이션은 오직 하나의 레코드 타입만 포함
  • 애트리뷰트 순서가 달라도 동일한 릴레이션
  • 동일한 튜플이 두개 이상 존재하지 않는다
    • key가 존재
  • 한 투플의 각 애트리뷰트는 원자값을 가진다.
  • 각 애트리뷰트의 이름은 한 릴레이션 내에서만 고유

✅ 릴레이션 - Key

= 각 튜플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임

  • 수퍼 키(superkey)
  • 후보 키(candidate key)
  • 기본 키(primary key)
  • 대체 키(alternate key)
  • 외래 키(foreign key)

✅ 슈퍼 키 (super key)

  • 한 릴레이션 내의 특정 투플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합

✅ 후보 키 (candidate key)

  • 각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임
  • 후보 키가 두개 이상의 애트리뷰트를 가지면 복합키(composite key)라 부른다.
  • 아래 예시에서 (학번,과목번호)가 후보키이다.

✅ 기본 키 (primary key)

  • 릴레이션에 후보 키가 두 개 이상 있으면 설계자 또는 데이터베이스 관리자가 이들 중에서 하나를 기본 키로 선정

✅ 대체 키 (alternate key)

  • 기본 키가 아닌 후보 키

✅ 외래 키 (foreign key)

  • 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트
  • 다른 릴레이션의 기본 키를 참조하는 외래 키
  • 자체 릴레이션의 기본 키를 참조하는 외래 키
  • 기본 키의 구성요소가 되는 외래 키



🍏 무결성 제약 조건


✅ 데이터 무결성(data integrity)

  • 데이터의 정확성, 유효성
  • 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의

✅ 도메인 제약조건(domain constraint)

  • 각 애트리뷰트 값이 반드시 원자값
  • 애트리뷰트 값의 디폴트 값, 가능한 값들의 범위 등을 지정할 수 있다.

✅ 키 제약조건(key constraint)

  • key attribute에 중복값이 존재하면 안된다.

✅ 기본 키와 엔티티 무결성 제약조건

= entity integrity constraint)

  • 릴레이션의 기본키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없다
  • 대체 키에는 적용 X
  • 사용자는 릴레이션을 생성하는 데이터 정의문에서 어떤 애트리뷰트가 릴레이션의 기본 키의 구성요소인가를 DBMS에게 알려준다.

✅ 외래 키와 참조 무결성 제약조건

= referential integrity constraint

  • 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용


✅ 갱신 연산 & 무결성 제약 조건

삽입

  • 제약조건을 위배하는 삽입 연산은 DBMS가 거절함으로써 무결성 유지

삭제

  • 참조하는 릴레이션에서 튜플 삭제 -> 모든 조건 위배 X
  • 참조되는 릴레이션에서 튜플 삭제 -> 참조 무결성을 위배할 가능성 O

수정

  • DBMS는 수정하는 애트리뷰트가 기본 키인지 외래 키인지 검사
  • 기본키X, 외래키X -> 위배 X
  • 기본키, 외래키를 수정할 때는 삭제와 같은 문제를 가짐. 그래서 아래의 옵션들을 이용해야 한다.

✅ DBMS의 옵션

참조 무결성 제약조건을 만족시키기 위해서 DBMS가 제공하는 옵션

1. 제한(restriced)

  • 위배하는 연산을 거절

2. 연쇄(cascade)

  • 튜플을 삭제할 때 참조하는 릴레이션쪽에도 연관된 애들을 함께 삭제

3. 널값(nullify)

  • 참조하는 릴레이션의 외래키에 널값을 삽입

4. 디폴트 값

  • 널값 대신 디폴트 값

✅ 수정

  • 수정하려는 애트리뷰트가 기본키인지 외래 키인지 검사
  • 둘다 아니면 수정 연산이 무결성 제약 조건 위배 X
  • 기본키/외래키 수정 : 튜플 삭제 + new 튜플 삽입
  • 오라클에서는 제학적으로 참조 무결성 제약 조건 유지
    • 기본 키는 변경 불가능하다는 원칙
















0개의 댓글

관련 채용 정보