[DB] 관계 데이터 모델의 개념 및 제약

이민선(Jasmine)·2024년 5월 14일
0

[CS] 데이터베이스

목록 보기
1/2

데이터 베이스 설계 단계

  • E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정
    3단계: 논리적 설계
    • DBMS에 적합한 논리적 구조 설계
    • 결과물: 논리적 스키마(릴레이션 스키마)

관계 데이터 모델의 기본 개념

  • 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
  • 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장 (ex. 고객 릴레이션)

관계 데이터 모델의 기본 용어

  • 릴레이션 (relation)
    • 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
    • 파일 관리 시스템 관점에서 파일(file)에 대응
  • 속성 (attribute)
    • 릴레이션의 열, 애트리뷰트
    • 파일 관리 시스템 관점에서 필드(field)에 대응
  • 튜플 (tuple)
    • 릴레이션의 행
    • 파일 관리 시스템 관점에서 레코드(record)에 대응
  • 도메인 (domain)
    • 하나의 속성이 가질 수 있는 모든 값의 집합
    • 속성 값을 입력 및 수정할 때 적합성의 판단 기준이 됨
    • 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의
  • 널 (null)
    • 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
  • 차수 (degree)
    • 하나의 릴레이션에서 속성의 전체 개수
  • 카디널리티 (cardinality)
    • 하나의 릴레이션에서 투플의 전체 개수

릴레이션

  • 릴레이션의 구성
    • 릴레이션 스키마(relation schema)
      • 릴레이션의 논리적 구조
      • 릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의
        • ex) 고객(고객 아이디, 고객 이름, 나이, 등급, 직업, 적립금)
      • 릴레이션 내포(relation intension)라고도 함
      • 정적인 특징이 있다.
    • 릴레이션 인스턴스(relation instance)
      • 어느 한 시점에 릴레이션에 존재하는 투플들의 집합
      • 릴레이션 외연(relation extension)이라고도 함.
      • 동적인 특징이 있다.
  • 데이터베이스의 구성
    • 데이터베이스 스키마(database schema)
      • 데이터베이스의 전체 구조
      • 데이터베이스를 구성하는 릴레이션 스키마의 모음
    • 데이터베이스 인스턴스(database instance)
      • 데이터베이스를 구성하는 릴레이션 인스턴스의 모음
  • 릴레이션의 특성
    • 투플의 유일성
      • 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
    • 투플의 무순서
      • 하나의 릴레이션에서 투플 사이의 순서는 무의미하다.
    • 속성의 무순서
      • 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
    • 속성의 원자성
      • 속성 값으로 원자 값만 사용할 수 있다. (다중 값을 속성으로 가질 수 없다. -> 다중값일 경우 relation을 분해해야 함.) ex. 직업으로 회사원, 학생 둘 다 가질 수 없다.

키(key) ⭐️

  • 릴레이션에서 투플들을 유일하게 구별하는 속성 또는 속성들의 집합

  • 키의 특성

    • 유일성(uniqueness)
      • 하나의 릴레이션에서 모든 투플은 서로 다른 키 값을 가져야 함
    • 최소성(minimality)
      • 꼭 필요한 최소한의 속성들로만 키를 구성

키의 종류

  • 슈퍼키(super key)
    • 유일성을 만족하는 속성 또는 속성들의 집합
    • ex) 고객 아이디, (고객 아이디, 고객 이름), (고객 이름, 주소) 등
    • 최소성은 만족하지 않을 수도 있다.
  • 후보키(candidate key)
    • 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
    • ex) 고객 릴레이션의 후보키: 고객 아이디, (고객 이름, 주소) 등
    • (고객 아이디, 고객 이름)은 후보키가 아니다. 고객 아이디만으로도 유일성을 만족하기 때문에 고객 이름과 같은 집합에 있으면 최소성을 만족하지 못하기 때문이다.
  • 기본키(primary key)
    • 후보키(최소성과 유일성을 만족하는 키) 중에서 기본적으로 사용하기 위해 선택한 키
      • 널값을 가질 수 있는 속성이 포함된 후보키는 부적합
      • 값이 자주 변경되는 속성이 포함된 후보키는 부적합 (ex. 주소)
      • 단순한 후보키를 선택 -> 고객 아이디가 가장 적합!
  • 대체키(alternative key)
    • 기본키로 선택되지 못한 후보키
      • 고객 아이디를 기본키로 선택했으니, (고객 이름, 주소)가 후보키가 된다.
  • 외래키(foreign key)
    • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
    • 릴레이션들 간의 관계를 표현
      • 참조하는 릴레이션: 외래키를 가진 릴레이션(주문 릴레이션)
      • 참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션(고객 릴레이션)
    • 외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 되지만, 도메인은 같아야 한다. (ex. 주문 고객 속성이 고객 아이디를 참조 해도 무방. char[20]인 속성이 char[10]인 속성을 참조하는 것은 안된다.)
    • 하나의 릴레이션에는 외래키가 여러개 존재할 수도 있고, 외래키를 기본키로 사용할 수도 있다. ex. 상담 릴레이션의 학번 속성이 학생 릴레이션의 외래키이고, 학번 속성은 학생 릴레이션의 기본키인 경우.)
    • 같은 릴레이션의 기본키를 참조하는 외래키도 정의할 수 있다. 그리고 외래키 속성은 null값을 가질 수도 있다. (ex. 고객 릴레이션에서 추천고객이 외래키, 고객 아이디가 기본키)

관계 데이터 모델의 제약

  • 무결성 제약조건(integrity constraint)

    • 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
    • 무결성: 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것.

    무결성 제약 조건

    • 개체 무결성 제약조건(entity integrity constraint)
      기본키를 구성하는 모든 속성은 널 값을 가질 수 없다.
    • 참조 무결성 제약조건(referential integrity constraint)
      외래키는 참조할 수 없는 값을 가질 수 없다. (단, 외래키 속성이 널 값을 가진다고 해서 참조 무결성 제약 조건을 위반한 것은 아니다.)
profile
기록에 진심인 개발자 🌿

0개의 댓글