본문으로 건너뛰기

스키마 3단계와 데이터 독립성

정보처리기사 목차데이터베이스와 관계 모델레슨 73 / 233

목차

데이터베이스의 구조를 사용자가 보는 외부 스키마, 조직 전체의 구조인 개념 스키마, 저장 방식인 내부 스키마의 세 층으로 나눠 적습니다. 층을 나눠 두면 아래 층을 바꿔도 위 층이 그대로인데, 이것을 데이터 독립성이라 합니다.

데이터베이스를 쓰는 사람마다 보고 싶은 것이 다릅니다. 도서관은 학번과 이름만 보면 되고, 학과 사무실은 학년과 학과명까지 봐야 합니다. 데이터베이스를 맡은 관리자는 표 전체의 짜임을 보고, 저장 장치를 다루는 사람은 데이터가 디스크에 어떻게 놓이는지를 봅니다. 이 관점들을 한 덩어리로 섞어 두면, 저장 방식을 조금만 바꿔도 데이터베이스를 쓰는 프로그램을 모두 고쳐야 합니다. 그래서 데이터베이스의 구조를 관점에 따라 세 층으로 나눠 적습니다. 이 방식을 스키마 3단계(3-level schema)라 합니다. 미국 국가 표준 협회(ANSI)의 위원회가 제안해 ANSI/SPARC 3단계 구조라고도 부릅니다. 스키마(schema)는 데이터베이스에 무엇을 어떤 짜임으로 담고 어떤 규칙을 지킬지 적은 것, 곧 데이터베이스의 설계도입니다. 앞 레슨 데이터베이스와 DBMS에서 본 DBMS의 정의 기능이 정하는 것이 바로 스키마입니다.

6단계 중 1단계. 스키마는 데이터베이스에 무엇을 어떤 구조로 담고 어떤 규칙을 지킬지 적은 것입니다.

1스키마와 데이터는 다르다

그림이 먼저 보이는 학생 표에서 머리글(학번·이름·학년·학과코드)과 '학년은 1~4' 같은 규칙이 스키마입니다. 그 아래 일곱 줄의 값은 스키마가 아니라 데이터입니다. 학생이 들어오고 나가도 스키마는 그대로입니다.

2세 층으로 나눈 스키마

그림의 가운데 층인 개념 스키마(conceptual schema)는 조직 전체의 데이터를 하나로 모은 논리 구조입니다. 학과·학생·과목·수강 네 표와 표 사이의 관계, 제약 조건, 접근 권한까지 담습니다. 데이터베이스 하나에 개념 스키마는 하나이고, '스키마'라고만 하면 보통 개념 스키마를 뜻합니다.

그 위에 생기는 외부 스키마(external schema)는 사용자나 응용 프로그램이 저마다 보는 데이터베이스의 일부입니다. 응용 프로그램은 데이터베이스를 쓰는 업무 프로그램입니다. 도서관 화면의 학번·이름, 학과 사무실 화면의 이름·학년·학과명이 각각 외부 스키마입니다. 사용자마다 있으니 여러 개이고, 자료에 따라 서브 스키마(subschema)나 사용자 뷰(user view)라고도 부릅니다.

개념 층 아래에 생기는 내부 스키마(internal schema)는 데이터를 저장 장치에 어떻게 두는지 정한 것입니다. 레코드를 어떤 형식과 순서로 저장할지, 빨리 찾으려고 무엇을 따로 둘지가 여기 들어갑니다. 저장 장치 쪽에서 본 구조라 데이터베이스마다 하나이고, 자료에 따라 저장 스키마(storage schema)라고도 부릅니다.

3아래 층이 바뀌어도 위 층은 그대로 — 데이터 독립성

데이터를 빨리 찾으려고 따로 만들어 두는 차례표를 인덱스(index)라 합니다. 책 뒤의 찾아보기와 같습니다. 그림처럼 내부 스키마에 이름 순 인덱스를 더해도 개념 스키마의 표 넷과 외부 스키마의 두 화면은 그대로입니다. 이렇게 내부 스키마가 바뀌어도 개념·외부 스키마와 응용 프로그램이 바뀌지 않는 성질을 물리적 데이터 독립성(physical data independence)이라 합니다.

이어서 학생 표에 전화번호 열을 더하면 개념 스키마가 바뀝니다. 그래도 도서관 화면은 학번·이름, 학과 사무실 화면은 이름·학년·학과명 그대로입니다. 이렇게 개념 스키마가 바뀌어도 외부 스키마와 응용 프로그램이 바뀌지 않는 성질을 논리적 데이터 독립성(logical data independence)이라 합니다.

층과 층 사이의 연결을 사상(mapping)이라 합니다. 아래 층이 바뀌면 DBMS가 바로 위 층으로 가는 연결만 고쳐서, 위 층은 바뀌지 않게 합니다. 그림에서 층 사이에 짚인 선이 이 연결입니다. 데이터 독립성은 이 연결 덕분에 생깁니다.

예제

다음 세 사례에서 어느 층이 바뀌었는지, 그래서 어느 독립성이 드러나는지 먼저 골라 보세요.

(가) 학생 데이터를 더 빠른 새 디스크로 옮겼습니다. 학과 사무실 프로그램은 한 줄도 고치지 않았습니다.

(나) 과목 표에 강의실 열을 더했습니다. 수강 신청 화면은 과목코드·과목명·학점 그대로 나옵니다.

(다) 수강 레코드를 학번 순서대로 붙여 저장하도록 저장 방식을 바꿨습니다. 성적 조회 프로그램은 그대로 돌아갑니다.

답을 정했으면 아래 표로 맞춰 보세요. 첫 칸은 두 독립성을 가르는 물음입니다.

무엇이 바뀌었나바뀐 층그대로인 층독립성
저장 장치·저장 순서·인덱스내부 스키마개념·외부 스키마물리적 데이터 독립성
표·열·관계 같은 전체 짜임개념 스키마외부 스키마논리적 데이터 독립성
  • (가)와 (다)는 저장 쪽만 바뀌었으니 물리적 데이터 독립성입니다.
  • (나)는 전체 짜임인 개념 스키마가 바뀌었는데 화면이 그대로이니 논리적 데이터 독립성입니다.

시험 포인트

  • 필기: 외부 스키마는 사용자 관점이고 여러 개, 개념 스키마는 조직 전체 관점이고 하나, 내부 스키마는 저장 장치 관점이고 하나입니다. '스키마'라고만 하면 개념 스키마입니다. 내부 스키마가 바뀌어도 위 층이 그대로이면 물리적, 개념 스키마가 바뀌어도 외부 스키마가 그대로이면 논리적 데이터 독립성입니다.
  • 실기: 스키마와 독립성의 이름을 씁니다 — 외부 스키마(External Schema)·개념 스키마(Conceptual Schema)·내부 스키마(Internal Schema), 물리적 데이터 독립성(Physical Data Independence)·논리적 데이터 독립성(Logical Data Independence).

확인 문제

1. 은행 계좌 데이터베이스입니다. 다음 가운데 개념 스키마에 적히는 것을 고르세요.

  • ① 창구 직원 화면에 나오는 계좌번호·예금주·잔액 세 칸
  • ② 계좌·고객·거래 표와 표 사이의 이음, 거래 금액은 0보다 크다는 규칙
  • ③ 거래 기록을 날짜 순으로 붙여 쓰고 계좌번호에 인덱스를 두는 방식
  • ④ 오늘 들어온 거래 1만 2천 건의 금액과 시각
정답

②입니다. 조직 전체의 데이터를 한 벌로 모은 논리 구조라, 표와 표 사이의 이음과 지킬 규칙이 여기 들어갑니다.

  • ① 사용자 한 쪽이 보는 일부라 외부 스키마입니다.
  • ③ 저장 장치에 어떻게 두고 어떻게 빨리 찾을지라 내부 스키마입니다.
  • ④ 스키마가 아니라 그 틀에 담긴 데이터입니다. 거래가 늘고 줄어도 스키마는 그대로입니다.

2. 항공편 예약 데이터베이스를 만들며 (가)~(다)를 따로 적어 두었습니다. 각각 스키마 3단계 가운데 무엇인지 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 예약 센터 직원에게는 편명·좌석·승객 이름만, 정비 담당에게는 기체 번호와 점검 이력만 보이도록 따로 적어 둔 것. 보는 사람이 늘면 함께 늘어납니다.
  • (나) 예약 기록을 어떤 꼴로 어떤 순서로 붙여 쓰고, 편명으로 빨리 찾도록 무엇을 곁에 둘지 적어 둔 것.
  • (다) 항공편·좌석·승객·예약 표와 표 사이의 이음, 지킬 규칙을 한 벌로 적어 둔 것. 데이터베이스에 한 벌뿐입니다.
정답

받는 답: (가) 외부 스키마(External Schema), 자료에 따라 서브 스키마(Subschema)·사용자 뷰(User View) · (나) 내부 스키마(Internal Schema), 자료에 따라 저장 스키마(Storage Schema) · (다) 개념 스키마(Conceptual Schema)

(가)의 실마리는 '보는 사람마다 따로 있고 사람 수만큼 늘어난다', (나)는 '저장 장치에 두는 꼴과 빨리 찾는 수단', (다)는 '조직 전체를 한 벌로, 데이터베이스에 하나뿐'입니다.

  • 같은 이름의 다른 꼴: 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
  • 틀리는 꼴 개념 스키마 — (가)에: 데이터베이스에 한 벌뿐인 전체 구조입니다. 사람마다 따로 있고 수가 늘어나는 것은 외부 스키마입니다.
  • 틀리는 꼴 물리 스키마 — (나)에: 3단계의 이름이 아닙니다. 저장 쪽에서 본 구조의 이름은 내부 스키마이고, 자료에 따라 저장 스키마라고도 씁니다.

3. 사내 급여 시스템에서 다음 두 가지 일이 있었습니다. 각각 어떤 데이터 독립성을 보여 주는지 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 급여 표를 담은 디스크가 꽉 차서, 오래된 명세를 다른 디스크에 옮겨 담도록 저장 방식을 바꿨습니다. 명세 화면과 그 프로그램은 한 줄도 고치지 않았습니다.
  • (나) 급여 표에 식대 열을 더하고 수당 표를 둘로 나눴습니다. 직원이 보는 명세 화면은 예전 칸 그대로 나오도록 DBMS의 이음만 고쳤습니다.
정답

받는 답: (가) 물리적 데이터 독립성(Physical Data Independence) · (나) 논리적 데이터 독립성(Logical Data Independence)

(가)의 실마리는 '저장하는 자리와 방식만 바뀌었다', (나)는 '표와 열이 바뀌었는데 화면은 그대로이고 이음만 고쳤다'입니다.

  • 같은 이름의 다른 꼴: 데이터 독립성 — 이름의 앞을 뺀 꼴입니다. 둘 가운데 어느 것인지가 답입니다.
  • 틀리는 꼴 논리적 데이터 독립성 — (가)에: 전체 짜임이 바뀌어도 사용자 화면이 그대로인 성질입니다. (가)에서 바뀐 것은 저장 쪽입니다.
  • 틀리는 꼴 물리적 데이터 독립성 — (나)에: 저장 쪽이 바뀌어도 위 층이 그대로인 성질입니다. (나)에서는 표와 열이 바뀌었습니다.

4. 택시 호출 앱의 데이터베이스를 고칩니다. 다음 가운데 논리적 데이터 독립성 덕분에 기사 앱과 승객 앱을 고치지 않아도 되는 것을 고르세요.

  • ① 호출 기록을 더 빠른 저장 장치로 옮깁니다.
  • ② 호출 기록에 취소 사유 열을 하나 더합니다.
  • ③ 호출 기록을 기사번호로 빨리 찾도록 인덱스를 하나 둡니다.
  • ④ 기사 앱 화면에서 보여 주던 칸 하나를 지웁니다.
정답

②입니다. 열을 더하는 것은 전체 짜임, 곧 개념 스키마가 바뀌는 일입니다. 그 열을 쓰지 않는 앱 화면은 그대로 돌아갑니다.

  • ① 저장 장치를 바꾸는 일은 내부 스키마의 변경입니다. 위 층이 그대로인 것은 물리적 데이터 독립성입니다.
  • ③ 인덱스는 내부 스키마에 듭니다. ①과 같이 물리적 데이터 독립성입니다.
  • ④ 화면에 보이는 칸은 그 사용자의 외부 스키마입니다. 외부 스키마를 바꾸면 그 화면을 쓰는 프로그램도 함께 고칩니다. 데이터 독립성은 아래 층이 바뀔 때 위 층을 지켜 주는 성질입니다.

더 자세히: SQLD의 데이터 모델의 이해에서 같은 세 층과 두 독립성을 Oracle의 뷰·인덱스로 돌려 봅니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로