[DataBase] 문제풀이 7장

DB 2009. 3. 17. 02:19
7.1 SQL에서의 릴레이션(테이블)과 4장에서 정의한 릴레이션의 차이점은 무엇인가? 용어상의 기타 차이점도 설명하라. 왜 SQL은 테이블이나 질의 결과에 중복 투플들을 허용하는가?
SQL의 테이블(릴레이션)은 모든 애트리뷰트 값이 동일한 투플을 하나 이상 가질 수 있다. 일반적으로 집합은 두 개의 동일한 원소를 허용하지 않기 때문에 SQL테이블은 투플들의 집합이 아니고 투플들의 다중 집합이다.
SQL 질의 결과에서 중복된 투플이 나타나는 이유
- 중복을 없애는 것은 비용(시간)이 많이 드는 연산이다. 한 가지 구현 방법은 먼저 투플들을 정렬하고 중복된 투플들을 제거하는 것이다.
- 사용자가 질의 결과에 중복된 투플들이 나타나는 것을 원하는 경우가 있다.
- 집단 함수가 투플들에 적용될 때 대부분의 경우에 중복 삭제가 필요하지 않다.

7.2 SQL 애트리뷰트에 허용되는 데이터 타입들을 나열하라.
숫자 -  integer, int, smallint,  float, real, double precision
문자열 - char, varchar, clob
비트열 - blob
불리언 - true, false, unknown
날짜,시간 - date, time
타임스탬프 - timestamp

7.3 SQL에서는 4장에서 설명한 엔티티 무결성과 참조 무결성 제약조건을 어떻게 구현하였는가? 참조 트리거된 동작이란 무엇인가?
엔티티 무결성을 나타내는 제약조건은 not null로 한다. 일반적으로 애트리뷰트의 정의에 대한 디폴트값은 null이며 널 값이 허용되지 않을 때는 not null을 명시한다.
키와 참조 무결성을 위한 절로 primary key 절이 있다. primary key 절은 릴레이션의 기본키를 구성하는 하나 이상의 애트리뷰트를 명시한다. 만약 기본키가 하나의 애트리뷰트로 되어 있다면 이 절은 그 애트리뷰트 바로 뒤에 직접 올 수 있다. foreign key절도 참조 무결성을 명시한다. 투플들을 삽입 또는 삭제하거나 외래키 애트리뷰트 값을 수정할 때 참조 무결성 제약조건을 위반할 수 있다. SQL에서 무결성 제약조건을 위반할 때 취하는 디폴트 동작은 위반을 초래한 갱신 연산을 거절하는 것이다. 그러나 외래키 제약조건에 참조 트리거된 동작절을 추가하여 참조 무결성 제약조건이 위반된 경우에 취할 다른 동작을 명시할 수 있다. 참조 트리거된 동작에는 set null, cascade, set default가 있으며 위반된 경우를 가리키는 on delete나 on update 와 함께 사용해야 한다.

7.4 SQL 질의 구문 내의 6개의 절을 설명하고 6개의 절 각각에서 명시할 수 있는 구문 유형은 무엇인지 보여라. 6개의 절 중에서 필수적인 것은 무엇이며 선택적인 것은 무엇인가?
select 애트리뷰트 리스트 : 질의를 통해 값들이 검색되는 애트리뷰트 이름들의 리스트(필)
from 테이블 리스트 : 질의 처리를 위해 필요한 릴레이션들의 리스트(필)
where 조건 : 질의를 통해 검색되는 투플들을 식별하기 위한 조건식(선)
group by 컬럼 조건에 따른 연산(선)
having group에 대한 제한 : 그룹을 새로운 조건으로 분류(선)
order by 정렬 : 하나 이상의 애트리뷰트를 기준으로 질의 결과에 들어 있는 투플들을 정렬(선)

7.5 각 6개의 절을 실행하는 개념적 순서를 명시함으로써 어떻게 SQL 질의가 수행되는가를 개념적으로 설명하라.
from절, where절, group by절, having절 의 순서로 적용함으로써 평가된다. 개념적으로 order by절은 질의 결과를 정렬하기 위해 마지막에 적용된다.

7.6 SQL 내의 비교 연산자에서 널은 어떻게 다루는지 설명하라. SQL 질의에 집계 함수가 적용될 때 널을 어떻게 다루는가? 그룹핑 애트리뷰트에 널이 존재할 때는 어떻게 다루는가?
SQL에서는 참true, 거짓false, 모름unknown의 세 가지 값을 가진 논리를 사용한다. SQL에서는 애트리뷰트를 널과 비교학기 위하여 IS나 IS NOT을 사용한다. 그 이유는 SQL에서 각 널값은 모든 다른 널값과는 다르다고 간주하므로 = 형태의 비교가 적당하지 않다. 집계 함수에서 널인 투플들은 계산에 포함되지 않는다. 일반적으로 널값은 버린다. 그룹핑 애트리뷰트에 널이 존재하면 그 널값을 가진 모든 투플들을 위한 별도의 그룹을 만든다.
Posted by zeide
,

[DataBase] 문제풀이 4장

DB 2009. 3. 11. 22:03

4.1 다음 용어들을 정리하여라.
도메인 - 더 이상 나누어질 수 없는 값들의 집합. 이름, 데이터 타입, 포맷을 가진다.
애트리뷰트 - 열의 제목
n-투플 - n 개의 값의 순서 리스트.
릴레이션 스키마 - 릴레이션 이름과 애트리뷰트로 구성, 릴레이션을 표현하기 위해 사용된다.
릴레이션 상태 - n-투플의 집합.
릴레이션의 차수 - 릴레이션 스키마의 애트리뷰트 수.
관계 데이터베이스 스키마 - 릴레이션 스키마의 집합과 무결성 제약조건들의 교집합이다.
관계 데이터베이스 상태 - 무결성 제약조건을 만족하는 릴레이션 상태들의 집합.

4.2 릴레이션의 투플들에 순서가 없는 이유는 무엇인가?
릴레이션은 투플들의 집합으로 정의된다. 수학적으로 집합의 원소들 사이에는 순서가 없다. 따라서 릴레이션에서도 투플들은 특정 순서를 갖지 않는다.

4.3 릴레이션에 중복 투플들이 허용되지 않는 이유는 무엇인가?
집합의 모든 원소는 중복되지 않으므로 이 정의에 의하면 릴레이션의 모든 투플도 중복되지 않아야 한다.

4.4 키와 슈퍼키의 차이점은 무엇인가?
슈퍼키는 같은 값을 가지는 서로 다른 투플이 존재하지 않는다는 유일성 제약 조건을 명시한다. 그러므로 모든 릴레이션은 적어도 하나의 슈퍼키를 갖는다. 그러나 슈퍼키는 중복되는 애트리뷰트들을 가질 수 있으므로 이런 중복성을 갖지 않는 개념이 필요한데 그것이 키이다. 키와 슈퍼키에 적용되는 조건은 서로 다른 두 투플은 동일한 키 애트리뷰트 값을 가질 수 없다는 것이다. 키는 최소의 슈퍼키이다. 그리고 일반적으로 단일 애트리뷰트의 슈퍼키는 키이다.

4.5 릴레이션의 후보키들 중의 하나를 기본키로 지정하는 이유는 무엇인가?
중복의 애트리뷰트 값을 가지는 것을 일차적으로 배제할 수 있기 때문에 후보키들 내에서 선택한다.

4.6 릴레이션이 보통의 테이블이나 파일과 다른 특성을 설명하라.
1.릴레이션은 투플들의 순서에 영향을 받지 않는다. 투플들에는 순서가 없다.
2. 릴레이션 스키마내의 애트리뷰트들의 순서와 그에 따른 투플 내의 값들의 순서는 같다.

4.7 릴레이션에 널값이 생기는 여러 가지 이유를 설명하라.
값이 정의되지 않은 경우
값을 알 수 없는 경우
값이 현재 가능하지 않은 경우

4.8 엔티티 무결성과 참조 무결성 제약조건을 설명하고, 그것들이 중요한 이유를 기술하라.
엔티티 무결성 - 어떠한 기본키 값도 널 값이 될 수 없다. 기본키 값은 한 릴레이션 내의 각 투플을 식별하는 데 사용하는데 기본키 값이 널값이면 투플들을 식별할 수 없기 때문이다.
참조 무결성 - 두 릴레이션 사이에 명시되는 제약조건으로 한 릴레이션에 있는 투플이 다른 릴레이션에 있는 투플을 참조하려면 반드시 참조되는 투플이 그 릴레이션 내에 존재해야 한다. 한 릴레이션의 외래키의 값이 참조하는 릴레이션의 기본키 값과 일치해야 한다는 것을 의미한다. 이렇게 함으로써 두 개체들 간의 관계를 나타내는 것이다.

4.9 외래키를 정의하라. 왜 이 개념이 필요한가? 이것이 조인 연산에서 어떤 역할을 하는가?
참조 무결성 제약조건이 만족된 두 릴레이션 스키마에서 다음과 같은 조건을 만족하면 외래키라고 한다.
1. 외래키의 애트리뷰트는 참조하는 릴레이션의 기본키의 애트리뷰트와 동일한 도메인을 가진다.(이때 '외래키는 그 릴레이션을 참조한다'고 한다.)
2. 한 릴레이션의 투플의 외래키 값은 참조하는 릴레이션의 투플의 기본키 값과 일치하거나 널값을 가져야 한다.
 
4.10 트랜잭션이란 무엇인가? 갱신과 무엇이 다른가?
데이터베이스에 존재하는 값들에 대한 읽기 연산. 추가, 삭제, 갱신 연산. 데이터베이스에 대해 모든 제약조건들을 만족하는 일관된 상태로 수행을 끝마쳐야 한다. 하나의 트랜젝션은 데이터베이스로부터 값을 읽는 검색 연산들과 갱신 연산들을 여러 개 포함할 수 있다.

Posted by zeide
,

[DataBase] 문제풀이 3장

DB 2009. 3. 9. 23:56

3.1 데이터베이스 설계 과정에서 고수준 데이터 모델의 역할을 설명하라.
데이터베이스에 대한 개념 스키마를 만든다. 개념적 설계라고 부르는데 개념 스키마는 사용자들의 데이터 요구사항들을 간단히 기술한 것으로서 데이터 타입, 관계, 제약조건들을 자세하게 설명한 것이다. 이것들은 고수준의 데이터 모델이 제공하는 개념들을 사용하여 표현된다.

3.2 널값을 사용하는 것이 적합한 경우들을 나열하라.
한 애트리뷰트에 적용할 값이 없을 때.
한 엔티티의 특정 애트리뷰트 값을 모를 때.
- 애트리뷰트 값이 존재하지만 누락되었을 때.
- 애트리뷰트 값이 존재하는지의 여부를 알지 못할 때.

3.3 다음의 용어들을 정의하라.
엔티티 - ER 모델을 나타내는 기본 객체. 실세계에서 독립적으로 존재하는 실체.
애트리뷰트 - 엔티티를 기술하는 속성.
애트리뷰트 값 - 특정 엔티티를 설명.
관계 인스턴스 - 엔티티들의 연관.
복합 애트리뷰트 - 속성을 작은 구성요소로 나누어 계층을 형성한다. 복합 애트리뷰트의 값은 계층을 구성하는 단순 애트리뷰트들의 값을 연결한 것이다.
다치 애트리뷰트 - 한 엔티티에서 애트리뷰트가 여러 값을 가지는 경우, 이런 애트리뷰트를 다치 애트리뷰트라 한다. 다치 애트리뷰트는 각 엔티티가 가질 수 있는 값의 개수를 제한하기 위해 하한과 상한의 범위를 가질 수 있다.
유도된 애트리뷰트 - 두 개 이상의 애트리뷰트 값들이 서로 연관을 가지고 있는 경우, 관련 엔티티로부터 애트리뷰트의 값이 유도될 수 있다.
복잡한 애트리뷰트 - 복합 애트리뷰트와 다치 애트리뷰트가 임의의 방식으로 중첩되어 그것을 표현할 때 이를 복잡한 애트리뷰트라고 한다.
키 애트리뷰트 - 엔티티 집합 내에서 각 엔티티마다 서로 다른 값을 가지는 하나의 애트리뷰트.
값 집합(도메인) - 각 엔티티에서 해당 애트리뷰트가 가질 수 있는 값들의 집합.

3.4 엔티티 타입과 엔티티 집합이 무엇인가? 엔티티, 엔티티 타입, 엔티티 집합의 서로 다른 점을 설명하라.
엔티티 - 실세계에서 독립적으로 존재하는 실체, 개념적으로 존재하는 객체.
엔티티 타입 - 같은 애트리뷰트를 갖는 엔티티들의 집합, 이름과 애트리뷰트들의 리스트로 기술된다.
엔티티 집합 - 임의의 시점에 데이터베이스 내의 특정 엔티티 타입과 모든 엔티티의 모임, 엔티티 집합은 엔티티 타입과 같은 이름을 사용하여 부른다.

3.5 애트리뷰트와 값 집합의 차이점을 설명하라.
애트리뷰트는 각 엔티티가 갖는 속성을 말한다.
값 집합은 각 엔티티에서 해당 애트리뷰트가 가질 수 있는 값들의 집합을 말한다.

3.6 관계 타입이 무엇인가? 관계 인스턴스, 관계 타입, 관계 집합의 차이점을 설명하라.
엔티티 타입들에 속하는 엔티티 간의 연관들의 집합을 정의, 수학적으로 관계 타입은 관계 인스턴스들의 집합이다.
관계 타입은 각각의 엔티티를 연결하는 속성을 의미한다. 즉, 서로의 관계가 어떠한가에 대한 기술이다. 예를 들어 교수, 학생, 강의 라는 엔티티들이 있다. 교수 - 강의의 관계 타입은 강의를 한다는 타입이며 학생 - 강의는 강의를 듣는다는 타입을 갖게 되는 것이다. 관계 인스턴스는 관계가 있는 두 엔티티의 요소들을 연관시키는 역할을 하는데 학생 {A, B, C, D} 와 강의 {1, 2, 3} 을 A - r1 - 1(학생 A는 1번 강의를 듣는다.), B - r2 - 2(학생 B는 2번 강의를 듣는다.), ...식으로 표현할 수 있다. 관계 집합은 이러한 관계 인스턴스의 집합을 말한다.

3.7. 참여 역할이 무엇인가? 관계 타입을 기술하는데 언제 역할 이름이 필요한가?
관계 타입에 참여하는 각 엔티티 타입은 관계 내에서 특정 한 역할을 담당한다. 역할 이름은 엔티티 타입에 속한 한 엔티티가 각 관계 인스턴스에서 가지는 역할을 강조하고 관계가 무엇을 의미하는지 설명하는 데 도움이 된다. 같은 엔티티 타입이 어떤 관계 타입에 두 번 이상 참여하는 경우에는 각 참여의 의미를 구분하기 위해 역할 이름이 필수적이다.(이러한 관계 타입을 순환적 관계라고 한다.)

3.8 관계 타입에 대한 구조적 제약조건을 명시하는 두 가지 방법을 설명하라. 또한 각각의 장단점을 논의하라.
카디날리티 비율 - 엔티티가 참여할 수 있는 최대 관계 인스턴스들의 수를 명시한다.
참여 제약조건 -  한 엔티티의 존재가 관계 타입을 통해 연관되어 있는 다른 엔티티에 의존하는지의 여부를 명시한다. 이 제약 조건은 각 엔티티가 참여할 수 있는 관계 인스턴스의 최소 수를 명시하며 최소 카디널리티 제약조건이라고도 한다.

3.9 어떤 조건하에서, 이진 관계 타입의 애트리뷰트가 참여하는 엔티티 타입들 중 한 엔티티 타입의 애트리뷰트로 옮겨질 수 있는지 설명하라.
1:1 관계 타입의 애트리뷰트들은 참여하고 있는 엔티티 타입들 중의 하나로 이동될 수 있다.

3.10 관계를 애트리뷰트들로 표현하는 경우에 이런 애트리뷰트의 값 집합은 무엇인가? 어떤 데이터 모델이 이런 개념을 사용하는가?
애트리뷰트에 대한 값 집합은 모든 엔티티들의 집합이다. 이는 고수준의 개념적 데이터 모델에서 사용한다.

3.11 순환적 관계 타입이 무엇인가? 순환적 관계 타입의 예를 몇 개 보여라.
같은 엔티티 타입이 어떤 관계 타입에 두번 이상 참여하는 경우 그 관계 타입을 순환적 관계 타입이라고 한다. 예를 들어 사원 엔티티에서 그 원소들은 사원과 상사의 역할을 가지고 있다. 이럴 때 관계는 [사원 엔티티] - [상사관계] - [사원 엔티티] 로 나타낼 수 있다.

3.12 데이터 모델링에서 약한 엔티티 개념이 필요한 경우는? 또한 다음의 용어들을 설명하라.
한 엔티티 타입이 다른 엔티티 타입과 연관되어 있을 때 이 개념이 필요하다.
소유 엔티티 타입 - 약한 엔티티 타입의 어떤 속성으로 연계된 다른 엔티티 타입.
약한 엔티티 타입 - 자신의 키 애트리뷰트가 없는 엔티티 타입.
식별 관계 타입 - 약한 엔티티 타입과 강한 엔티티 타입을 연관시키는 타입.
부분키 - 동일한 소유엔티티에 연관되는 약한 엔티티들을 서로 구분할 수 있는 애트리뷰트들의 집합.

3.13 약한 엔티티 타입의 식별 관계가 삼진 이상일 수 있는지 설명하고, 있다면 그 예들을 보여라.
삼진 식별 관계 타입을 갖는 약한 엔티티 타입도 가능한다. 이 경우, 약한 엔티티 타입은 몇 개의 소유 엔티티 타입들을 가질 수 있다.

3.14 ER 스키마를 ER 다이어그램으로 도식화하기 위해 사용하는 표기법을 설명하라.
엔티티 타입은 사각 상자로 표기한다. 관계 타입들은 다이아몬드 상자로 표기하며 이 관계에 참여하는 엔티티 타입들과는 직선으로 연결한다. 애트리뷰트들은 타원으로 표기하며 각 애트리뷰트는 해당되는 엔티티 타입 또는 관계 타입에 직선으로 연결한다. 복합 애트리뷰트의 구성 요소 애트리뷰트들은 타원형의 복합 애트리뷰트에 연결한다. 다치 애트리뷰트는 이중 타원으로 나타낸다. 키 애트리뷰트는 애트리뷰트 이름에 밑줄을 그어 표현한다. 유도된 애트리뷰트들은 점선으로 된 타원으로 표기한다. 약한 엔티티 타입은 이중 상자로 엔티티 타입을 표시하고 식별 관계를 이중 다이아몬드로 표기한다. 약한 엔티티 타입의 부분키는 점선으로 밑줄을 그어 표기한다. 이진 관계 타입의 카디날리티 비율은 참여를 표시하는 선에 1, M 또는 N을 명시함으로써 표현한다. 참여 제약조건은 부분 참여에 대해서는 단일선으로, 전체 참여에 대해서는 이중선으로 나타낸다.

3.15 ER 스키마 다이어그램에서의 이름 지정 규칙을 설명하라.
엔티티 타입의 이름은 그 엔티티 타입에 속하는 각 엔티티에 적용되기 때문에 복수 이름보다는 단수 이름을 선택한다. ER 다이어그램에서는 엔티티 타입과 관계  타입의 이름은 대문자로, 애트리뷰트의 이름은 첫 글자만 대문자로, 역할 이름은 소문자로 표기한다. ER다이어그램을 왼쪽에서 오른쪽, 위에서 아래로 읽기 쉽게 관계 이름을 선택한다.

Posted by zeide
,

[DataBase] 문제풀이 2장

DB 2009. 3. 5. 20:50

2.1 다음 용어들을 정의하라.
데이터 모델 - 데이터베이스의 구조를 명시하기 위해 사용할 수 있는 개념들의 집합으로서 이와 같은 추상화를 달성하기 위해 필요한 수단을 제공.
데이터베이스 스키마 - 데이터베이스의 기술.
데이터베이스 상태 - 어떤 특정 시점에 데이터베이스에 들어 있는 데이터.
내부 스키마 - 데이터베이스의 물리적 저장구조, 물리적 데이터 모델을 사용하여 데이터 저장구조의 세부사항과 데이터베이스에 대한 접근경로들을 기술.
개념 스키마 - 모든 사용자들을 위한 전체 데이터베이스의 구조를 기술. 물리적 저장구조의 세부 사항을 은폐시키고 엔티티, 데이터타입, 관계, 사용자 연산, 제약조건들을 나타내는 데 중점.
외부 스키마 - 특정 사용자 그룹이 관심들 갖는 데이터베이스의 부분을 기술하고 그 사용자 그룹에게 데이터베이스의 나머지 부분을 은폐.
데이터 독립성 - 고수준의 스키마를 변경할 필요없이 데이터베이스 시스템의 어떤 단계에서 스키마를 변경할 수 있는 능력.
데이터 정의어 - 데이터베이스에서 데이터와 데이터간의 관계를 정의하여 데이터베이스 구조를 설정하는 SQL문.
데이터 조작어 - 데이터베이스 내의 데이터를 검색, 수정, 삭제, 저장할 수 있는 SQL문.
저장구조 정의어 - 내부 스키마를 지정하는데 사용된다.
뷰 정의어 - 사용자 뷰를 명시하고 개념 스키마 사이의 사상을 나타낸다.
질의어 - 고수준 데이터 조작어가 그 자체로 대화식으로 사용될 때.
호스트 언어 - 고수준이든 저수준이든 범용 프로그래밍 언어 내에 데이터 조작어 명령이 삽입된 경우의 프로그래밍 언어.
데이터 부속어 - 범용 프로그래밍 언어 내에 데이터 조작어 명령이 삽입된 경우의 데이터 조작어.
데이터베이스 유틸리티 -  데이터베이스 관리자가 데이터베이스 시스템을 관리하는 것을 도와준다.
카탈로그 - DBMS 모듈들이 필요로 하는 파일의 이름과 크기, 데이터 항목의 이름과 데이터 타입, 각 파일의 자세한 저장 형태, 스키마 사이의 사상 정보, 제약조건들에 대한 정보 등을 포함한다.
클라이언트/서버 아키텍처 - 많은 수의 PC, 워크스테이션, 파일 서버, 프린터, 데이터베이스 서버, 웹 서버, 기타 구성 요소들이 네트워크를 통해서 서로 연결되어 있는 컴퓨팅 환경을 다루기 위해 개발. 각각의 서비스를 제공하는 서버들이 네트워크로 연결되어 이와 연결된 클라이언트 컴퓨터에 그 서비스를 제공한다.
3-층 아키텍처 - 클라이언트와 데이터베이스 서버 사이에 중간 단계-응용서버 혹은 웹서버-를 하나 더 추가한 것.
n-층 아키텍처 - 사용자와 저장된 데이터 사이를 좀 더 세밀하게 나누어 층을 추가한 것.

2.2 데이터 모델들을 분류하라.
물리적 데이터 모델(저수준)
개념적 데이터 모델(고수준)
표현 데이터 모델(구현)

2.3 데이터베이스 스키마와 데이터베이스 상태의 차이점은 무엇인가?
데이터베이스 스키마는 데이터베이스의 기술을 말하는데 데이터베이스 설계 과정에서 명시하며 자주 변경되지 않는다. 데이터베이스 설계시 각각의 사용자 집단들의 요구사항들을 도출하면서 변경된다.
데이터베이스는 실제로 변경이 자주 일어난다. 데이터의 변경이 일어나면 데이터베이스의 내용도 변경된다. 이 때 특정 시점에 데이터베이스에 들어 있는 데이터를 데이터베이스 상태(스냅샷)라고 한다. 

2.4 3단계-스키마 아키텍처를 설명하라. 왜 스키마 단계들 사이에 사상이 필요한가? 어떻게 상이한 스키마 정의어들이 이 아키텍처를 지원하는가?
사용자 응용들과 물리적 데이터베이스를 분리시키는 것을 목적으로 하며 내부 스키마, 개념 스키마, 외부 스키마 이렇게 세 단계로 정의된다. 3단계-스키마 아키텍처는 사용자가 데이터베이스 시스템 내에서 스키마 단계들을 시각화하는 데 편리한 수단으로 사용되나 스키마는 단지 데이터데 대한 기술임을 주의해야 한다.
3단계-스키마 아키텍처에 기반을 둔 DBMS는 각 사용자 그룹은 단지 각자의 외부 스키마만을 참조한다. 따라서 DBMS는 외부 스키마상에서 표현된 요구를 개념 스키마에 대한 요구로 변환시키고 다시 내부 스키마에 대한 요구로 변환 시켜서 저장된 데이터베이스를 접근한다.
이 때 단계들 간의 요구와 접근 결과를 변환하는 과정을 사상이라고 한다.

2.5 논리적 데이터 독립성과 물리적 데이터 독립성의 차이점은 무엇인가? 어느 독립성을 달성하는 것이 더 어려운가? 그 이유는 무엇인가?
논리적 데이터 독립성 - 외부 스키마나 응용 프로그램들을 변경하지 않으면서 개념 스키마를 변경하는 능력. 데이터베이스의 확장, 제약조건의 갱신, 데이터베이스의 축소 등. 변경시 남아있는 데이터만 참조하는 외부 스키마들이 영향을 받아서는 안 된다. 외부/개념 스키마간의 사상에 의해 제공된다.
물리적 데이터 독립성 - 개념 스키마를 변경하지 않으면서 내부 스키마를 변경할 수 있음을 말한다. 따라서 외부 스키마도 변경할 필요가 없다. 개념/내부 스키마간의 사상에 의해 제공된다.(데이터의 물리적 저장방법과 그 구성 변경의 투명성을 제공)
논리적 데이터 독립성이 달성하기 더 어려운데 왜냐하면 데이터의 물리적 저장방법이 변경되었을 경우 데이터 표현방식의 변화로 프로그램을 수정하면 되지만 프로그래머가 생각하는 논리적 구조가 변경되면 그에 따른 프로그램의 구조가 변경되기 때문에 전체적인 수정을 필요로 하기 때문이다.

2.6 절차적 데이터 조작어와 비절차적 데이터 조작어의 차이점은 무엇인가?
절차적 데이터 조작어 - 저수준 데이터 조작어, 반드시 범용 프로그래밍 언어 내에 삽입해서 사용한다. 이 유형은 데이터베이스로부터 각 레코드 또는 객체 단위로 검색하여 처리하기 때문에 프로그래밍 언어의 반복문 등을 이용한다. 한 번에 한 레코드 데이터 조작어라고도 부른다.
비절차적 데이터 조작어 - 고수준 데이터 조작어, 복잡한 데이터베이스 연산들을 간결하게 나타내는 데 사용한다. 한 데이터 조작어 명령으로 여러 개의 레코드들을 검색할 수 있기 때문에 한 번에 레코드 집합 조작어 또는 집합지향 데이터 조작어라고 부른다.

2.7 여러 가지 편리한 사용자 인터페이스 유형들과 각 유형을 주로 사용하는 사용자의 부류에 대해서 설명하라.
브라우징을 위한 메뉴 기반 인터페이스
폼 기반 인터페이스
그래식 사용자 인터페이스
자연어 인터페이스
음성 입력과 출력
초보자를 위한 인터페이스
데이터베이스 관리자를 위한 인터페이스

2.8 DBMS는 컴퓨터 시스템 소프트웨어들과 상호 작용하는가?
DBMS는 컴파일러와 인터페이스하면서 범용 호스트 프로그래밍 언어를 지원하고 시스템 네트워크 인터페이스를 통하여 별도의 컴퓨터에서 수행되는 클라이언트 및 응용 서버와 상호 작용한다.

2.9 2-층과 3-층 클라이언트/서버 아키텍처의 차이점이 무엇인가?
2-tier 아키텍처는 소프트웨어의 구성 요소들이 클라이언트와 서버에 분산되어 있다. 사용자 인터페이스 프로그램과 응용 프로그램들은 클라이언트 쪽에서 수행되며 SQL처리와 관련된 질의와 트랜잭션 기능은 서버(데이터 서버) 측에서 수행한다.
3-tier 아키텍처는 웹의 등장으로 개발되었는데 클라이언트와 데이터베이스 서버 사이에 미들 티어를 하나 더 추가한 것이다. 클라이언트는 정보를 사용자에게 보여주고 데이터를 입력받으며 미들 티어(웹서버 또는 응용서버)에서는 데이터를 사용자에 전달하거나 DBMS에게 보내기 전에 중간의 규칙과 제약조건들을 다룬다. 데이터베이스 서버에서는 데이터 관리의 모든 서비스를 수행한다.

2.10 데이터베이스 유틸리티의 유형과 기능들에 대해서 설명하라.
적재 - 텍스트 파일이나 순차 파일과 같은 기존의 데이터 파일들을 데이터베이스에 적재하기 위해 사용하는 유틸리티.
백업 - 전체 데이터베이스를 테이프에 복사해서 데이터베이스의 백업 사본을 만든다.
파일 재조직 - 성능을 향상시키기 위하여 데이터베이스 파일들의 구조를 다른 파일 구조로 재조직하는 유틸리티.
성능 모니터링 - 데이터베이스의 사용을 모니터링해서 사용 통계를 데이터베이스 관리자에게 제공.

2.11 어떤 기능이 n-층 아키텍처에 추가되었는가(n>3)?
n-층 아키텍처에서 비즈니스 논리 층은 다수의 층으로 나누어지는데 네트워크를 통해서 프로그램과 데이터를 분산시키는 것 외에 한 개의 층이 적절한 프로세서나 운영체제에서 동작할 수 있다는 장점이 있다. ERP나 CRM 패키지 업체들은 주로 미들웨어 층을 사용한다. 미들웨어 층은 뒷단의 데이터베이스들과 통진하는 앞단의 모듈을 맡는다.

*커드의 12규칙
http://ko.wikipedia.org/wiki/%EC%BB%A4%EB%93%9C%EC%9D%98_12_%EA%B7%9C%EC%B9%99

Posted by zeide
,

[DataBase] 문제풀이 1장

DB 2009. 3. 4. 23:16
1.1 다음 용어들을 정의하라.
데이터 - 알려진 사실, 의미를 가지고 기록될 수 있는 것들.
데이터베이스 - 어떤 특정한 의미를 가지는 데이터의 모임.
DBMS - 데이터베이스 관리 시스템, 다양한 응용들에서 필요로 하는 데이터베이스를 정의, 생성, 조작, 공유할 수 있도록 편리한 기능을 제공하는 범용 소프트웨어 시스템.
데이터베이스 시스템 - 데이터베이스와 DBMS.
데이터베이스 카탈로그 - 데이터베이스의 정의(데이터베이스에 속하는 각 파일들의 구조, 각 데이터 항목의 타입과 저장 형식, 데이터에 대한 다양한 제약조건 등)가 저장된 것.
프로그램-데이터 독립성 - 데이터 파일의 구조가 변경되어도 응용 프로그램은 거의 변하지 않는 성질.
사용자 뷰 - 데이터베이스의 일부이거나 데이터베이스로부터 유도되는 가상 데이터, 뷰의 데이터는 실제로 데이터베이스에 저장되지 않는다.
데이터베이스 관리자 - DBA, 데이터베이스나 DBMS, 관련 소프트웨어를 관리하고 감독. 데이터베이스에 대한 접근을 감독하며 자원의 사용을 모니터링하고 조정한다. 필요한 경우에 소프트웨어나 하드웨어 자원을 구입, 데이터베이스의 보안이나 시스템의 성능 문제를 책임진다.
최종 사용자 - 데이터베이스에 대하여 질의하고, 변경하고, 보고서를 작성하는 사람. 캐주얼 사용자, 초보 사용자, 전문 사용자, 독자적인 사용자로 분류.
미리 작성된 트랜잭션 - 초보 사용자가 데이터베이스에 제한적으로 접근하게 하기 위해 사용.
연역 데이터베이스 시스템 - 데이터베이스에 저장되어 있는 사실로부터 새로운 정보를 추론하는 연역적 규칙을 정의할 수 있는 기능을 가진 시스템.
지속성 객체 - 데이터베이스에 저장된 객체, 프로그램의 수행이 끝난 후에도 데이터베이스에 영구적으로 남아 필요하면 언제든지 다른 프로그램들에 접근이 가능.
메타데이터 - 카탈로그에 저장된 정보, 기본 데이터베이스의 구조를 기술.
트랜잭션 처리 응용 - 동시에 수행되는 트랜잭션들이 상호 방해를 받지 않고 효율적으로 수행되도록 보장.

1.2 데이터베이스를 사용하는 데 수반되는 중요한 세 가지 작업은 무엇인가? 각각을 간단하게 설명하라.
데이터베이스 정의 - 데이터베이스에 저장되는 데이터에 대한 데이터 타입, 구조, 제약조건들을 명세하는 과정.
데이터베이스 구축 - DBMS가 관리하는 기억 장치에 데이터를 저장하는 과정.
데이터베이스 조작 - 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 데이터로부터 리포트를 생성하는 기능.

1.3 데이터베이스의 방식의 중요한 특징을 설명하고, 기존의 파일처리 시스템을 사용하는 경우에 비하여 다른 점을 논의하라.
파일처리 방식에서는 소프트웨어 응용을 프로그래밍하는 작업의 일환으로 사용자가 특정한 소프트웨어 응용을 위하여 필요한 파일들을 별도로 정의하고 구현한다. 각각의 응용 프로그램들은 자유롭게 데이터 항목들을 독립적으로 명명할 수 있다.
데이터베이스 방식에서는, 데이터는 한 번만 저장되며 여러 사용자가 공유하게 된다. 데이터의 이름은 한 번만 정의되고, 정의와 트랜잭션 및 응용프로그램에서 반복해서 사용된다. 중요한 특징은 다음과 같다.
- 데이터베이스 시스템의 자기 기술성
- 프로그램과 데이터의 격리 및 데이터 추상화
- 데이터에 대한 다중 뷰의 제공
- 데이터의 공유와 다수 사용자 트랜잭션 처리

1.4 데이터베이스 관리자와 데이터베이스 설계자의 역할을 무엇인가?
데이터베이스 관리자는 데이터베이스나 DBMS, 관련 소프트웨어를 관리하고 감독한다. 즉, 데이터베이스에 대한 접근을 감독하며 자원의 사용을 모니터링하고 조정한다. 데이터베이스의 보안이나 시스템의 성능 문제를 책임지며 소프트웨어나 하드웨어 자원을 구입한다.
데이터베이스 설계자는 데이터베이스에 저장될 데이터를 선정하고 데이터를 나타내고 저장하는 구조를 정의하는 역할을 담당한다. 사용자 그룹들과 만나서 요구사항들을 도출하고 그것을 만족하는 데이터베이스 뷰를 개발한다.

1.5 데이터베이스의 최종 사용자들을 분류하고 각자의 주요 업무를 논하라.
캐주얼 사용자 - 데이터베이스에 가끔 접근하지만 매전 다른 정보를 찾는다. 정교한 데이터베이스 질의어를 사용하여 데이터를 요구한다. 중상급의 관리자.
초보 사용자 - 미리 잘 프로그램되고 테스트된 기작성 트랜잭션들을 사용하여 데이터베이스를 검색하고 변경하는 사용자.
전문 사용자 - 복잡한 요구사항을 가진 엔지니어, 과학자, 비즈니스 분석가 등.
독자적인 사용자 - 메뉴나 그래픽 사용자 인터페이스를 제공하는, 편리한 패키지를 사용하여 개인 데이터베이스를 유지하는 사용자.

1.6 DBMS가 제공해야 할 기능들을 설명하라.
중복성의 제어
권한이 없는 접근의 통제
프로그램 객체를 위한 지속성 기억 공간 제공
효율적인 질의처리를 위한 저장 구조 제공
백업과 회복 제공
다수의 사용자 인터페이스 제공
데이터 간의 복잡한 관계의 표현
무결성 제약조건의 시행
규칙을 사용한 추론과 수행
표준 강화
응용 개발 시간의 단축
융통성
최신 정보의 가용성
규모의 경제성

1.7 데이터베이스 시스템과 정보 검색 시스템 사이의 차이점을 논하라.
정보 검색 시스템 - 데이터베이스 시스템을 사용하는 한 분야. 키워드를 사용하여 데이터를 색인하고 카탈로그화 한다. 이러한 키워드에 기반하여 문서들을 찾는 것을 다루며 문서처리와 자유로운 비정형 텍스트 처리를 다룬다.
데이터베이스 시스템- 사용자의 질의를 처리, 수행하는 과정과 데이터베이스의 저장, 조작 등에 관한 모든 처리를 다룬다.
Posted by zeide
,
※데이터의 무결성
- 데이터의 정확성과 일관성이 보장된 상태
- 무결성 제약 조건은 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건

※무결성의 종류
1. 엔티티 무결성 : 한 엔티티는 중복과 누락이 있을 수가 없음. 동일한 PK를 가질 수 없으며 PK의 속성이 Null을 허용할 수 없음
2. 참조 무결성 : 외래키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본키 값이나 Null이어야 함
3. 속성 무결성 : 속성의 값은 기본값, Null여뷰, 지정된 도메인(데이터타입, 길이)규칙을 준수하여 존재해야 함
4. 사용자 무결성 : 사용자의 의미적 요구사항을 준수해야 함

※제약조건의 종류
1. 엔티티 무결성 : Primary Key. Unique Index
2. 속성 무결성 : Check, Null/Not Null, Default
3. 참조 무결성 : Foreign Key
4. 사용자 정의 무결성 : Trigger, User Define Data Type

※각 요소의 내용

Primary Key

컬럼의 유일성 보장, PK Null이 될 수 없음

Unique Index

다중의 보조 키 개념을 지원, 컬럼의 유일성 보장, Null 허용

Foreign Key

테이블 간의 논리적 관계가 유지됨을 보장, FK는 참조하는 테이블의 PK, Null 허용

Cascaded Option : Master 삭제 시 레코드가 함께 삭제

Nullified Option : Master 삭제 시 해당 값을 Null로 세팅

Restricted Option : FK가 존재하면 Master 레코드를 삭제할 수 없음

Data Type

데이터의 형을 제한하여 데이터 무결성 유지

Check

데이터를 추가할 때마다 SQL서버가 해당 값이 해당 컬럼들에 지정된 Check제약을 위배하는지를 검사함으로써 데이터 무결성 유지

Default

특정 컬럼에 대해 명시적으로 값을 입력하지 않은 경우에 SQL서버가 자동적으로 지정된 값을 삽입할 수 있도록 함으로써 데이터 무결성 유지

INSERT 또는 UPDATE에서 DEFAULT 키워드를 사용할 수 있음

Trigger

테이블의 내용을 변경하려는 특정 사건(DB연산)에 대해서 DBMS가 미리 정의된 일련의 행동(DB연산)을 수행하는 메커니즘, DBMS서버에 의해 자동으로 호출

데이터에 대한 변경을 시도할 때마다 자동적으로 호출

트랜젝션의 철회(rollback)와 같은 동작을 수행가능

저장 프로시저의 특별할 형태로서 SQL의 모든 기능을 이용가능

참조 무결성을 위해 사용가능

Posted by zeide
,

[DataBase] 중요한 정규화

DB 2008. 12. 26. 20:56
※정규화(Normalization)
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
- 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것

정규화

정규화 내용

1차 정규화

복수의 속성값을 갖는 속성을 분리

2차 정규화

주식별자에 종속적이지 않은 속성을 분리, 부분종속 속성을 분리

3차 정규화

속성에 종속적 속성을 분리, 이전(이행적)종속(Transitive Dependency) 속성을 분리

보이스-코드 정규화

다수의 주식별자를 분리

4차 정규화

다가 종속(Multi-Valued Dependency) 속성 분리

5차 정규화

결합 종속(Join Dependency)일 경우, 두 개 이상의 N개로 분리


※함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분 집합이라고 하면, 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때, Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X→Y로 표기한다.
- X→Y의 관계를 갖는 속성 X와 Y에서 X를 결정자, Y를 종속자라고 한다.

위 표를 함수적 종속성으로 보자면 다음과 같다.

종속성

개념

함수적 종속성(1NF)

릴레이션의 한 속성 X가 다른 속성 Y를 결정지을 때 Y X에서 함수적으로 종속

부분함수적 종속성(2NF)

Y X의 부분 집합에 대해서도 함수적으로 종속되는 경우

이행함수적 종속성(3NF)

릴레이션 R에서, AX이고 XY이면 AY이다

결정자함수적종속성(BCNF)

함수적 종속이 되는 결정자가 후보키가 아닌 경우

다중값 종속성(4NF)

한 관계에 둘 이상의 독립적 다중값 속성이 존재하는 경우

조인 종속성(5NF)

둘로 나눌 때는 원래의 관계로 회복할 수 없으나 셋 또는 그 이상으로 분리시킬 때는 원래의 관계를 복원할 수 있는 특수한 경우


※완전 함수적 종속
- 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합X의 어떠한 진부분집합 Z(Z⊂X)에도 함수적 종속이 아닐 때
- 어떤 속성이 기본키에 대해 완전히 종속적일 때

※부분 함수적 종속
- 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합X의 임의의 진부분집합 Z(Z⊂X)에 대해 함수적 종속일 때
- 어떤 속성이 기본키의 일부에 대해 종속적일 때

※정규화와 정규형
- 정규화 : 무엇이 수행되어야 하는 과정
- 정규형 : 무엇이 수행된 결과
Posted by zeide
,