데이터베이스 제3강

Sunhee·2024년 3월 21일
0
post-thumbnail

뷰와 자료 독립성

자료 추상화(data abstraction) 세 단계

: 자료의 추상화(Data Abstraction) : 우리가 실제로 만들어야 할 어떠한 물체를 코드로 형상화 시키는 것입니다.

  1. 물리적 수준(physical level) : 자료가 실제로 저장되는 수준이며, 가장 아래 수준
  2. 논리적 수준(logical level) : 데이터베이스 관리자(DBA: DataBase Administrator)가 처리하는 수준
  3. 뷰(=가상 테이블) 수준 (view level) : 일반 사용자가 쓰는 수준

자료 독립성

: 자료의 독립성 - 어느 단계의 스키마를 바꾸었을 때, 그 윗 단계의 스키마에 영향을 주지 않는 것을 가리킴.
단계로 되어 있는 참조 모델에서는 자료 독립성이 두 가지

  1. 물리적 (physical) 자료 독립성 : 맨 아랫 단계인 물리적 단계의 스키마를 바꾸어도, 논리적 단계 스키마뷰 단계의 스키마에는 물론 영향을 주지 않고 응용 프로그램에도 영향을 주지 않는 것을 말함.
  2. 논리적 (logial) 자료 독립성 : 가운데 단계인 논리적 단계의 스키마를 바꾸어도, 그 윗 단계인 뷰 단계의 스키마영향을 주지 않고, 그 결과 응용 프로그램에도 영향을 주지 않는 것을 말함.

자료 독립성 보기 1: 색인 (index)

  • 자료 독립성 보기 1 : 색인(index)
  • SQL로 구현한 예.(1)
    create table 학생(학번 char(7), 이름 char(20);

  • SQL로 구현한 예.(2)
  • 학생 테이블에서 이름이 '홍길동'인 학생의 속성들을 검색하려면?
    select * from 학생 where 이름 = '홍길동';

- SQL로 구현한 예(색인사용)

sreate index 이름_색인 on 학생 (이름); select * from 학생 where 이름 = '홍길동';

  • 색인이 새로 만들어지더라도, 위의 select 명령을 전혀 바꾸지 않고도 꼭 같은 결과를 얻을 수 있다.
  • 이것이 바로 자료 독립성
    • 색인이 있든 없든, select 명령은 바뀌지 않고 그대로이고, 다만 실행 속도가 달라질 뿐이다.

자료 독립성 보기2 : 뷰(view)

`create table 학생(학번 char(7), 이름 char(20), 집전화 char(15));

  • 테이블에서 학번과 이름만으로 이루어진 학생 view라는 뷰를 정의.

create view 학생view as select 학번, 이름 from 학생;

  • 응용 프로그램에서 사용.
    select * from 학생view where 학번 = 'jc02101';

  • 학생이 휴대전화라는 속성이 하나 더 들어가서 학생의 스키마가 바뀐 상황

학생 (학번 char(7), 이름 char(20), 집전화 char(15), 휴대전화 char(15));

  • 학생의 스키마가 바뀐 상황
    • 학생view를 정의하는 create view 학생view as ...명령을 바꿀 필요가 전혀 없으며,

    • 또한 학생view를 쓰는 응용 프로그램에서 select 문장을 전혀 바꾸지 않아도, 결과는 제대로 나온다.

      select * from 학생view where 학번 = 'jc02101';

    • 자료 독립성

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

데이터베이스, 테이블등의 경우 스키마와 인스턴스 구별

  • 테이블의 스키마와 테이블의 인스턴스
  • 데이터베이스의 스키마와 데이터베이스의 인스턴스

테이블의 스키마와 테이블의 인스턴스

  • 테이블 스키마
    create table 학생(학생char(7), 이름char(20));
  • 이 명령은 테이블의 (=뼈대, 스키마)만 나타낼 뿐, 테이블 안에 어떤 자료가 실제로 들어있는지는 말하지 않음.
  • 테이블에 있는 속성 이름과 속성의 자료형 등에 관하여 규정한 것을 테이블의 스키마라고 한다.

테이블의 인스턴스

  • 어떤 특정 시점에 테이블 안에 있는 구체적인 값의 집합을 테이블의 인스턴스라고 함.

스키마와 인스턴스가 바뀌는 경우

  • 테이블의 스키마는 일단 스키마를 한 번 만들고 나면 잘 바꾸지 않는다.
  • 테이블의 인스턴스는 상대적으로 스키마보다는 자주 바뀌는 것이 보통이다.

보기 1: 학생 테이블의 스키마가 바뀌는 보기

  • 학생 테이블에 현재 없는 속성(보기: 집전화)을 더 넣기.
    `create table 학생 (학성 char(7), 이름 char(20), 집전화 char(15));

학생 테이블의 스키마가 바뀌는 보기

  • 현재 있는 학번, 이름, 집전화 속성 가운데 어떤 속성을 제거, (보기) 집전화 속성을 제거
    create table 학생(학번 char(7), 이름 char(20));

  • 현재 없는 속성을 더 추가.
    (보기) 휴대전화 속성을 추가
    create table 학생 (학번 char(7), 이름 char(20), 집전화 char(15), 휴대전화 char(15));

  • 속성의 자료형을 변경
    (보기) 학번의 자료형을 char(7)에서 char(9)로 변경
    create table 학생 (학번 char(9), 이름 char(20), 집전화 char(15));


0개의 댓글

관련 채용 정보