데이터베이스 기초 – 2. 데이터베이스 시스템 ( Database System ) 의 주요 개념

이전 장에 이어서 데이터베이스 시스템의 주요 개념에 대하여 알아보도록 하겠습니다.
데이터베이스 시스템의 주요 개념


Contents of 데이터베이스 시스템

  1. 데이터 모델 ( Data Model )
  2. 스키마와 인스턴스  ( Schema and Instance )
  3. 3단계 스키마 아키텍처
  4. 트랜잭션 ( Transaction )

데이터 모델 ( Data Model )

데이터베이스의 구조를 기술하기 위해서 사용할 수 있는 개념들의 집합

1. 추상화 수준에 따른 분류

  1. 개념적 데이터 모델 : 사용자 입장에서 정의된 모델
    예) E-R 데이터 모델
    E-R 모델
  2. 논리적 데이터 모델 : 상용 DBMS에서 지원하는 모델
    예) 관계형 모델
    관계형 모델
  3. 물리적 데이터 모델 : 물리적 저장 방법을 기술

2. 데이터 표현 형식에 따른 분류

  1. 관계형 데이터 모델
  2. 객체 지향 데이터 모델
  3. 계층형 데이터 모델
  4. 네트워크 데이터 모델

참고 : https://en.wikipedia.org/wiki/Database_model


스키마 ( Schema ) 와 인스턴스 ( instance )

1. 스키마

  1. 메타 데이터의 다른 용어
  2. 설계 과정에서 정의
  3. 데이터의 구조 및 제약 조건들까지 포함
    예) 학생 테이블의 경우
    Course( CourseNo : string, CourseName : string, Instructor : string )
  4. 자주 변경되지 않는 특성
  5. 종종 스키마 다이어그램으로 표현

2. 인스턴스

  1. 스키마에 대한 실제 데이터, 테이블의 각 행을 의미
  2. 시간에 따라 자주 변경이 이루어짐
  3. 인스턴스의 집합 = 데이터베이스 상태(state)

3단계 스키마 아키텍쳐 ( Schema Architecture )

1. 목적 : 데이터 독립성의 지원

데이터베이스 스키마를 내부단계, 논리단계, 외부단계로 구분하여 사용자에게 하부 스키마의 세부 사항을 감추고 해당 스키마의 구조에만 관심을 갖도록 한다.

2. 3단계 스키마

  1. 논리 단계 ( 논리 스키마 )
    전체 데이터베이스의 논리적 구조를 기술
  2. 내부 단계 (내부 스키마 )
    데이터베이스의 물리적 구조를 기술
  3. 외부 단계 (외부 스키마 )
    사용자 그룹들의 DB에 대한 시각
    3단계 스키마 구조
    아마 이게 무슨 멍멍이 같은 소리인지 하는 사람이 많을 것이다.
    추가적인 보충 설명

    3단계 스키마 구조

아파트에는 다수의 세대가 살고 있다. 각 세대의 주민들은 자신의 집에만 관심을 가지면 되지 굳이 다른 집까지 알 필요가 없다. 유선이가 302호의 구조나 크기, 인테리어 등에 관심을 가질 뿐 명석이네인 301호나 다른 집이 어떤지 관심이 없는 것과 같다. 이렇게 유선이나 명석이 관점에서 아파트를 바라보는 것이 외부 단계다. 이와 달리 아파트 관리인은 어느 한 집에만 관심을 가지면 안 된다.

아파트 전체를 문제없이 관리하려면 아파트 전체를 잘 알고 있어야 하는데, 이처럼 관리인 관점에서 전체 아파트를 바라보는 것이 개념 단계다. 하지만 아파트 관리인도 아파트 뼈대, 즉 철근 콘크리트 구조가 어떻게 생겼는지, 시멘트를 얼마나 사용했는지 등은 잘 모른다. 이것은 아파트 건설 업체의 관심사다. 아파트를 건설한 업체 관점에서 전체 아파트를 바라보는 것이 바로 내부 단계가 된다.

데이터베이스를 서로 다른 추상화 레벨에서 바라보는 3단계 데이터베이스 구조를 단계별로 좀 더 자세히 알아보자.

[네이버 지식백과] 3단계 데이터베이스 구조의 개념 (데이터베이스 개론, 2013. 6. 30., 한빛아카데미(주))

3. 데이터 독립성

상위 단계의 스키마 정의에 영향을 주지 않고
해당 스키마 정의를 변경할 수 있는 능력

  1. 물리적 데이터 독립성
    1. 논리 스키마 또는 외부 스키마의 정의를 변경할 필요 없이 내부 스키마를 수정할 수 있는 능력
    2. 예) 새로운 인덱스의 추가, 테이블의 분할 또는 정렬되어도 논리적 스키마에 영향이 없을 때
  2. 논리적 데이터 독립성
    1. 외부 스키마의 정의를 변경할 필요 없이 논리 스키마를 수정할 수 있는 능력
    2. 예) 새로운 속성의 추가 또는 테이블들의 병합 시에도 기존 프로그램이 변경될 필요가 없을 때
  3. 데이터 독립성이 항상 가능한 것이 아님에 유의!

트랜잭션

데이타베이스 연산 처리 중, 다수 사용자 환경에서 데이터 일관성 유지하며 시스템 장애 시에도 데이터 손실 방지하기 위해서

1. 정의

일련의  DB 연산으로 구성된 논리적 연산 단위 또는
응용 프로그램 실행 인스턴스로 정의되며
다음의 특성들을 만족해야 한다.

  1. 원자성(atomicity) : all or nothing, 즉 부분 처리가 없어야 함.
  2. 고립성(isolation) : 다른 트랜잭션의 영향으로부터 독립적이어야
  3. 지속성 : 완료한 트랜잭션은 시스템 장애 발생 시에도 그 효과가 지속적이어야

2. 항공편 예약 업무를 통한 사례

  1. 고립성 조건 위반 예
    항공편 좌석 확인 후 예약이 이루어지는데, 다중 사용자 시스템의 경우, 중복된 예약 발생 가능
  2. 지속성 위반 예
    사용자에게 예약 확인이 이루어진 후 시스템 장애가 발생, 실제로는 DB에 반영되지 않은 경우
  3. 원자성 위반 예 ??

참조 : https://en.wikipedia.org/wiki/ACID