DBMS/DBMS Common

[DBMS] Common (2) - Data Model

vincent77 2025. 9. 10. 13:50

데이터 모델

정의

현실 세계의 데이터를 데이터베이스에 어떻게 저장하고 관리할 것인지에 대한 논리적인 구조와 규칙을 정의한 것. 어떤 모델을 사용하느냐에 따라 저장방식, 관계 표현 방식, 데이터 표현 방식 등이 달라짐

종류

계층 모델 (Hierarchical Model)

  • 데이터를 트리 구조로 표현
  • 부모-자식 관계가 명확하며 데이터 검색은 빠르지만 관계의 유연성이 떨어지고 다대다 관계표현 어려움 (과거에 사용되던 모델)

망 모델 (Network Model)

  • 데이터를 그래프 형태로 표현
  • 계층 모델보다 더 복잡한 관계 표현 가능
  • 구조가 복잡해 이해 및 사용 어려움 (과거 사용 모델)

관계형 모델 (Relational Model)

  • 가장 보편적으로 사용되는 모델
  • 2차원 테이블 형태로 표현하며, 테이블 간의 관계는 키를 이용해 나타냄
  • 표준 질의어인 SQL을 사용하여 데이터를 효율적으로 관리하고 조작할 수 있음
  • 예시 : MySQL, PostgreSQL

NoSQL 모델

  • Not Only SQL의 약자
  • 전통적 관계형 모델의 한계를 극복하거나 특정 목적(대규모 데이터 처리, 높은 확장성, 유연한 스키마 등)에 최적화된 다양한 데이터 모델 포함
  • 키-값(Key-Value), 도큐먼트(Document), 칼럼 패밀리(Column-Family), 그래프(Graph) 모델 등
  • 예시 : MongoDB(Document), Redis(Key-Value)

관계형 데이터베이스(RDB) 핵심 개념

스키마와 인스턴스

스키마(Schema)

  • 데이터베이스의 구조와 제약조건을 정의한 것
  • 테이블의 이름, 컬럼 이름, 데이터 타입, 관계 (키 등) 등을 포함
  • 데이터베이스가 만들어질 때 정의되며 쉽게 바뀌지 않음

인스턴스(Instance)

  • 특정 시점에 DB에 저장되어 있는 데이터의 집합
  • 테이블에 현재 들어있는 행(튜플)들을 의미
  • 인스턴스 수시 변경

도메인

  • 하나의 속성(컬럼)이 가질 수 있는 값들의 유효 범위를 정의한 것
  • 데이터 무결성을 유지하는데 사용됨
  • ex: 성별 (남, 여), 나이(0 이상의 정수)

  • 관계형 데이터베이스에서 테이블의 각 행들을 고유하게 식별하거나 테이블 간의 관계를 설정하는 데 사용되는 하나 이상의 속성 집합
  • 슈퍼 키 (Super Key)
    • 하나의 테이블에서 각 튜플을 유일하게 식별할 수 있는 속성들 집합
    • 최소성을 만족하지 않아도 됨
      • ex: 학생 테이블에서 {학번}, {학번, 이름}, {학번, 학과, 이름} 등 학번을 포함하는 모든 속성 집합은 슈퍼키가 될 수 있음
  • 후보 키 (Candidate Key)
    • 슈퍼 키 중에서 최소성을 만족하는 속성들 집합
    • 튜플을 유일하게 식별할 수 있는 가장 작은 집합
  • 기본 키(Primary Key)
    • 여러 후보 키들 중에서 테이블의 대표 키로 선택된 하나
    • 행을 구분하고 다른 테이블과의 관계를 맺는 기준
    • 특징 :
      • 유일성 : 테이블의 모든 행을 고유하게 식별 (값 중복 금지)
      • 최소성 : 후보 키이므로 최소성 만족
      • 개체 무결성 : NULL 값을 가질 수 없음
      • 테이블 당 하나만 지정
  • 대체 키(Alternate Key)
    • 후보 키 중 기본 키 이외의 키
  • 외래 키(Foreign Key)
    • 다른 테이블의 기본 키(또는 후보 키)를 참조하는 속성
    • 특징
      • 두 테이블 간의 관계를 설정하는 데 사용
      • 참조하는 테이블(자식 테이블)에서 외래키를 지정하고, 참조되는 테이블(부모 테이블)의 기본 키를 가리킴
      • 참조 무결성 제약 조건과 관련이 깊음. 외래키의 값은 부모 테이블 기본키에 존재하는 값이거나 NULL(제약 조건에 따라 다름)이어야함
    • 예시
      • ‘주문’ 테이블의 ‘고객 ID’ 컬럼이 ‘고객’테이블의 ‘고객 ID’컬럼(기본키)를 참조하는 경우, ‘주문’테이블의 ‘고객 ID’가 외래키가 됨

무결성 제약조건 (Integrity Constraints)

  • 데이터베이스에 저장된 데이터의 정확성과 일관성을 유지하기 위한 규칙들
  • 제약조건을 자동으로 검사하여 데이터의 유효성을 보장
  • 개체 무결성 (Entity Integrity)
    • 기본 키는 NULL 값을 가질 수 없으며, 중복된 값을 가질 수 없다는 규칙
  • 참조 무결성 (Referential Integrity)
    • 외래 키 값은 참조하는 테이블의 기본 키 값으로 존재하거나 NULL을 허용하는 경우 NULL이어야 한다는 규칙
  • 도메인 무결성 (Domain Integrity)
    • 속성의 값이 해당 도메인에 정의된 유효한 값의 범위 내에 있어야 한다는 규칙
  • 사용자 정의 무결성 (User-Defined Integrity)
    • 위 세가지 외에 사용자가 규칙에 맞게 추가로 정의하는 제약조건