학번 : 20021558	성명 : 경규성

1. 연습문제 1.3 논리적 데이터 독립성과 물리적 데이터 독립성의 차이점을 설명하시오.

외부스키마의 뷰 릴레이션은 원칙적으로 개념 스키마에 해당하는 릴레이션들로부터 필요할 때 생성된다. 개념 스키마가 변경될 경우에는, 이전과 동일한 뷰 릴레이션이 계산되도록 뷰 릴레이션의 정의가 수정될 수 있다. 사용자들은 데이터의 논리적인 구조의 변경, 또는 저장될 릴레이션들의 선택 변경으로부터 보호될 수 있다. 이러한 특성을 논리적 데이터 독립성이라고 한다.

개념스키마는 데이터의 물리적인 저장의 세부적인 변화로부터 사용자들을 격리한다. 개념 스키마는 데이터가 디스크에 실제로 배치되는 방법, 파일 구조, 인덱스의 선택과 같은 세부사항들을 감춘다. 이러한 특성을 물리적 데이터 독립성이라고 한다.

2. 연습문제 1.4 외부, 내부, 개념 스키마의 차이점을 설명하시오. 이 다양한 스키마 층들은 논리적 데이터 독립성과 물리적 데이터 독립성의 개념과 어떻게 관련되어 있는가?

- 외부 스키마 (서브스키마, 사용자 뷰) :

사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다. 외부스키마는 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브스키마라고도 한다. 하나의 데이터베이스 시스템에는 여러 개의 외부스키마가 존재할 수 있으며, 하나의 외부스키마를 여러 개의 응요 프로그램이나 사용자가 공용할 수도 있으며 같은 데이터베이스에도 서로 다른 관점을 정의할 수 있도록 허용한다.

- 개념 스키마 (전체적인 뷰) :

개념스키마는 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다. 개념 스키마는 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다. 기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다. 관리자에 의해서 구성된다.

- 물리적 스키마 (내부 스키마) :

물리적 스키마는 데이터베이스의 물리적 구조이며 실제 저장 방법을 기술한다. 물리적 저장장치와 밀접한 계층이며 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.

- 논리적 데이터 독립성(logical data independence)은 외부 스키마나 응용 프로그램들을 변경하지 않으면서 개념 스키마를 변경하는 능력이다. 데이터베이스를 확장(레코드 타입이나 데이터 항목을 추가)하거나, 데이터베이스를 축소(기존의 레코드 타입이나 데이터 항목의 삭제)시킴으로써 개념스키마를 변경할 수 있다. 후자의 경우에, 남아있는 데이터만 참조하는 외부 스키마들이 영향을 받아서는 안된다.

- 물리적 데이터 독립성(physical data independence)은 개념(또는 외부)스키마를 변경하지 않으면서 물리적 스키마를 변경할 수 있음을 말한다. 물리적 스키마에 대한 변경은 파일에 대한 검색이나 갱신 성능을 향상시키기 위해서 접근 구조를 추가하는 것처럼, 어떤 파일들이 재구성될 때 필요할 수 있다. 데이터베이스에 이전과 똑같은 데이터가 남아 있다면 개념 스키마는 변경할 필요가 없다.

3. 다음 용어를 간단하게 설명하시오.

3.1 트랜잭션

트랜잭션은 DBMS에서 사용자 프로그램의 일회 실행이다. (동일 프로그램을 여러 번 실행하는 것은 여러 개의 트랜잭션을 생성하게 된다.) 트랜잭션은 DBMS가 보는 변경의 기본단위이다. 부분적으로 수행된 트랜잭션들은 허용되지 않으며, 한 그룹의 트랜잭션들의 효과는 모든 트랜잭션들이 어떤 직렬 순서에 따라 수행한 효과와 동등하다.

3.2 트랜잭션의 4가지 성질

1. 사용자가 각 트랜잭션의 수행을 원자적(atomicity)으로 생각할 수 있도록 해야 한다. 원자적 실행은 각 트랜잭션의 모든 연산이 실행되든지 혹은 실행되지 않든지 해야 한다는 것이다. 사용자가 완료되지 않은 트랜잭션의 영향에 대하여 걱정하지 않도록 해야 한다는 것이다. 예를 들면 시스템에 장애가 발생할 경우이다.

2. 다른 트랜잭션들과 동시에 수행되지 않는 각 트랜잭션은 데이터베이스의 일관성을 유지해야 한다. 즉, DBMS는 각 트랜잭션의 단독 수행은 일관성(consistency)을 보장한다고 가정하고 있다. 그러나 트랜잭션의 이러한 성질을 보장하는 것은 사용자의 책임이다.

3. 사용자는 동시 수행하고 있는 다른 트랜잭션들의 영향을 고려하지 않고 트랜잭션의 수행결과를 이해할 수 있어야만 한다. 이 성질이 트랜잭션의 고립성(isolation)이다. 각 트랜잭션은 동시에 스케줄된 다른 트랜잭션들의 영향으로부터 고립되거나 보호된다는 것이다.

4. DBMS가 트랜잭션이 성공적으로 완료하였다는 것을 사용자에게 통보하자마자 그 트랜잭션의 효과가 디스크에 반영되기 전에 시스템에 장애가 발생한다 하더라도 지속적으로 남아 있어야 한다. 이 성질이 영속성(durability)이다.

3.3 3단계 스키마 아키텍쳐

3단계 스키마 (외부, 개념, 물리적) 아키텍처는 데이터 독립성의 개념을 설명하기 위해 사용될 수 있다. 데이터 독립성은 고수준의 스키마를 변경할 필요 없이 데이터베이스 시스템의 어떤 단계에서 스키마를 변경할 수 있는 능력으로 정의된다. 스키마가 어느 단계에서 변경될 때 위 단계의 스키마는 변경되지 않는 상태로 남아 있게 되기 때문에 데이터 독립성이 유지된다. 단지 두 단계 상이의 사상만 변경된다. 따라서 고수준의 스키마를 참조하는 응용 프로그램들은 변경할 필요가 없다.

4. 연습문제 2.2 어떤 대학의 데이터베이스는 교수들(ssn으로 식별)과 과목(courseid로 식별)에 대한 정보를 포함한다. 교수는 과목을 강의한다. 다음의 각 상황이 Teaches 관계집합과 관계된다. 각 상황에 대하여, (더 이상의 제약조건들은 없다고 가정하고) 그것을 기술하는 ER 다이어그램을 작성하시오.

1. 교수는 같은 과목을 여러 학기에 걸쳐 강의할 수 있으며, 각 개설 학기는 기록되어야 한다.

2. 교수는 같은 과목을 여러 학기에 걸쳐 강의할 수 있으며, 가장 최근의 개설 학기만 기록될 필요가 있다. (이 조건이 다음의 모든 질문에 똑같이 적용된다고 가정한다).

3. 모든 교수들은 어떤 과목을 반드시 강의하여야 한다.

4. 각 교수들은 오직 한 과목만을 강의한다.

5. 각 교수들은 오직 한 과목만을 강의하며, 각 과목은 어떤 교수에 의해 반드시 강의되어야 한다.

6. 어떤 과목은 교수들의 팀에 의하여 공동으로 강의될 수 있으나, 한 팀에 있는 어느 교수도 이 과목을 혼자서는 가르칠 수 없다. 필요하다면 추가적인 개체집합과 관계집합을 도입하여, 이 상황을 설계하시오.