[Database] 데이터 독립성

[Database] 데이터 독립성

1. 데이터 독립성에 대한 정의

데이터 독립성의 개요

  • DBMS의 궁극적 목적
  • 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성
  • 파일시스템의 경우 응용 프로그램과 데이터가 상호 밀접하게 연관되어 있어 데이터의 종속성과 중복성이 발생
    • 데이터 종속성 : 데이터가 변경되면 응용 프로그램이 수정되어야 한다.
    • 데이터 중복성 : 데이터의 일관성 문제 발생
->이러한 배경으로 DBMS의 탄생


데이터 독립성의 종류


논리적 데이터 독립성

  • 응용 프로그램에 영향을 주지 않고 데이터베이스 논리적 구조를 변경할 수 있는 능력
  • DBMS가 하나의 논리적 데이터 구조를 가지고 많은 응용 프로그램이 제각각 요구하는 다양한 형태의 논리적 구조로 mapping시킬 수 있는 능력이 있을 때 가능
  • 데이터베이스를 확장(새로운 레코드 타입이나 데이터 항목 추가)히거나 데이터베이스를 축소(기존의 레코드 타입이나 데이터 항목 삭제)하면서 개념 스키마를 변경할 수 있으며, 후자의 경우 남아있는 데이터만 참조하는 외부 스키마들이 영향을 받으면 안됨
    • 즉, 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원
  • 외부스키마에 영향을 미치지 않으면서 개념스카마에 적용되는 제약조건들을 변경가능

물리적 데이터 독립성

  • 응용 프로그램이나 데이터베이스의 논리적 구조에 영향을 미치지 않고 데이터의 물리적 구조를 변경할 수 있는 능력
  • 하나의 논리적 구조로부터 여러 가지의 상이한 물리적 구조를 지원할 수 있는 mapping 능력이 있을 때 가능
  • 내부 스키마가 변경되어도 외부/개념 스키마가 영향을 받지 않도록 지원

데이터 독립성의 기대효과

  • 데이터베이스 관리자는 데이터베이스를 사용하는 응용 프로그램을 수정하지 않고도 데이터의 구성, 표기방법, 저장위치를 변경 가능
  • 데이터를 접근하는 응용프로그램에 영향을 미치지 않고도 데이터를 처리하는 하드웨어나 소프트웨어를 보다 발전된 형태로 변경 또는 대체 가능


2.  데이터독립성 구현방법: 3레벨 스키마 구조

3단계 스키마 구조의 개념

  • 하나의 데이트베이스를 데이터를 이용하는 각 개인의 관점, 
  • 개인의 관점이 모두 종합된 조직의 관점 
  • 물리적 저장 장치의 입장에서 보는 저장 장치의 관점 3단계로 나누어 데이터베이스를 기술하고 이들간의 관계를 정의한 것

3단계의 내용

  • 외부 스키마 레벨
    • 데이터베이스 사용자 그룹별 뷰 기술(= 뷰 레벨). 즉, 개개 사용자가 보는 개인적 DB 스키마
    • DB의 개개 사용자나 응용프로그래머가 접근하는 DB 정의
    • 사용자 그룹이 관심 있는 데이터베이스 부분만 기술하고 나머지 데이터베이스 부분은 감춘다.
    • 복수개의 스키마로 구성
  • 개념 스키마 레벨 
    • DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
    • 전체 사용자 그룹을 위한 전반적인 데이터베이스 구조 기술
    • 외부스키마의 각 뷰들을 통합한 전체적인 DB의 개념적 묘사
    • 개체, 관계성, 제약조건 등을 나타내는데 중점 (예: ER 모델)
    • 자세한 물리적 저장장치는 감추고 데이터베이스의 골격에만 관심을 둠
    • 고급 데이터모델이 주로 사용됨.(예: 관계형 모델, 네트워크 모델 등)
  • 내부 스키마 레벨
    • 데이터베이스의 물리적 저장구조 기술
    • 물리적 데이터모델을 사용하여 저장구조의 액세스 패스를 처리
    • 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마


사상(Mappigg)

  • 상호 독립적인 개념을 연결 시켜주는 다리를 뜻함
  • 외부적/개념적 사상, 개념적/내부적 사상

외부적/개념적 사상 = 논리적 사상

  • 외부 화면이나 사용자에게 인터페이스를 하기 위한 스키마 구조는 전체가 통합된 개념적 스키마와 연결된다는 것

개념적/내부적 사상 = 물리적 사상

  • 통합된 개념적 스키마 구조와 물리적으로 저장된 구조의 물리적인 테이블 스페이스와 연결되는 구조


출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?