관계 데이터 모델 설계

망고·2024년 6월 2일
0

데이터베이스

목록 보기
4/8

🎯 목표

DBMS에 적합한 논리적 구조 설계를 통해
논리적 스키마(릴레이션 스키마)를 도출


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

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

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

릴레이션(relation)

  • 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장
  • 파일 관리 시스템에서 파일에 대응
  • 테이블의 형태

속성(attribute)

  • 릴레이션의 열
  • 파일 관리 시스템에서 필드에 대응

튜플(tuple)

  • 릴레이션의 행
  • 파일 관리 시스템에서 레코드(record)에 대응

도메인(domain)

  • 하나의 속성이 가질 수 있는 모든 값의 집합
  • 속성 값을 입력 및 수정할 때 적합성의 판단 기준이 됩니다.
  • 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의

null

  • 속성 값을 아직 모르거나 해당되는 값이 없음을 표현합니다.

차수(degree)

  • 하나의 릴레이션에서 속성의 전체 개수

cardinality

  • 하나의 릴레이션에서 튜플의 전체 개수
  • ex) degree: 4, cardinality: 4

🏠 릴레이션의 구성

릴레이션 스키마

  • 릴레이션의 논리적 구조
  • 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
  • 릴레이션 내포(relation intension)라고도 함
  • 정적인 특징이 있습니다.(=동적으로 변화하지 않습니다)

릴레이션 인스턴스(relation instance)

  • 어느 한 시점에서 릴레이션에 존재하는 튜플들의 집합
  • 릴레이션의 외연(relation extension)이라고도 합니다.
  • 시기와 상황에 따라 동적으로 변화합니다.

💎 릴레이션의 특성

튜플의 유일성

  • 하나의 릴레이션에는 동일한 튜플이 존재 X

튜플의 무순서

  • 하나의 릴레이션에서 튜플 사이의 순서는 무의미합니다.

속성의 무순서

  • 하나의 릴레이션에서 속성 사이의 순서는 무의미합니다.

⭐ 속성의 원자성

  • 속성 값으로는 원자 값만 사용할 수 있습니다.
  • E-R 다이어그램의 다중 값을 분해해서 릴레이션을 생성해야 합니다.

🗝️ Key

특성

  • 유일성(uniqueness)

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

키의 종류

  • 수퍼키(super key)
    • 유일성을 만족하는 속성 또는 속성들의 집합
    • 각각의 개체들이 유일하게 가지고 있는 값으로 개체들을 식별할 수 있습니다.
    • ex) (ID, 이름) 등

  • 후보키(candidate key)

    • 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
    • ex) ID, 이름, (이름, 주소) 등
    • +) (ID, 이름)의 경우 ID와 이름을 분리해도 개체들을 식별할 수 있으므로 최소성을 만족하지 못합니다.

  • 기본키(primary key)

    • 후보키 중에서 기본적으로 사용하기 위해 선택한 키
      • null을 가질 수 있는 속성이 포함된 후보키는 부적합
      • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
      • 최대한 단순한 후보키를 선택
      • ex) ID

  • 대체키(alternate key)

    • 기본키로 선택되지 못한 후보키
    • ex) 이름, (이름, 주소) 등



  • 외래키(foreign key)

    • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
    • 릴레이션들 간의 관계를 표현
      • 참조하는 릴레이션: 외래키를 가진 릴레이션
      • 참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션
      • ex) 주문 릴레이션의 주문 고객 (유저 릴레이션의 ID)

    역할

    • 릴레이션 사이의 관계를 맺어 각 릴레이션의 튜플과 연관성 있는 튜플을 연결할 수 있습니다.
    • 하나의 릴레이션에는 외래키가 여러 개 존재할 수 있고
      외래키를 기본키로 사용할 수도 있습니다.
    • 같은 릴레이션의 기본키를 참조하는 외래키도 정의할 수 있습니다.

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

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

개체 무결성 제약조건

  • 기본키를 구성하는 모든 속성은 null을 가질 수 없습니다.

참조 무결성 제약조건

  • 외래키는 참조할 수 없는 값을 가질 수 없습니다.

⚗️ E-R 다이어그램->릴레이션 변환 규칙

규칙 1

  • 모든 개체는 릴레이션으로 변환

규칙 2

  • N:M 관계는 릴레이션으로 변환
    • 기본키(N측 외래키 + M측 외래키) + 릴레이션의 속성으로 스키마를 구성합니다.

규칙 3

  • 1:N 관계는 외래키로 표현
    • 일반적인 1:N 관계는 외래키로 표현합니다.
    • 1측 개체 릴레이션의 기본키를 N측 개체 릴레이션에 포함시켜 외래키로 지정합니다.
    • 관계의 속성은 N측 개체 릴레이션에 포함시킵니다.

  • Weak Entity가 참여하는 1:N 관계는 외래키를 포함해서 기본키로 지정합니다.
    • N측 개체 릴레이션(Weak Entity)은 외래키를 포함하여 기본키를 지정합니다.
      +) Weak EntityStrong Entity에 따라 존재 여부가 결정되므로 해당 개체의 기본키를 이용해서 식별해야 합니다.

규칙 4

  • 1:1 관계는 외래키로 표현
  • 일반적인 1:1 관계는 외래키로 서로 주고 받습니다.
    • 한계: 불필요한 데이터 중복이 발생

  • 1:1 관계에 필수적으로 참여하는 개체가 존재하면
    해당 릴레이션만 외래키를 받습니다.

  • 모든 개체가 1:1 관계에 필수적으로 참여하면 릴레이션을 하나로 합칩니다.
    • 관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 표현
    • 관계의 이름을 릴레이션의 이름으로 사용
    • 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함
    • 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정

규칙 5

  • 다중 값 속성원자 값으로 분해해 릴레이션으로 변환
    • 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키외래키로 가져와 새로운 릴레이션에 포함
    • 새로운 릴레이션의 기본키다중 값 속성외래키를 조합하여 지정

기타 고려 사항

  • 모든 관계를 독립적인 릴레이션으로 변환할 수 있습니다
    • 속성이 많은 관계는 유형과 무관하게 릴레이션으로의 변환
  • 개체가 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용

📚 참고자료

관련 강의 - 데이터베이스의 원리와 응용(KOCW) 6, 7강
관련 깃허브 - tech interview for developer_CS_Database

0개의 댓글