'사상'에 해당되는 글 2건

  1. 2009.03.17 [DataBase] 문제풀이 7장
  2. 2009.03.16 [DataBase] 문제풀이 6장

[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] 문제풀이 6장

DB 2009. 3. 16. 02:16
6.1 모델 구문과 관계 모델 구문 간의 대응에 관하여 논하라. 각 ER 모델 구문이 관계 모델로 어떻게 사상되는지를 보이고, 또 다른 사상에 관하여 논하라.

 ER 모델 관계 모델 
 엔티티 타입 엔티티 릴레이션 
 1:1 또는 1:N 관계 타입 외래키(또는 관계 릴레이션) 
 M:N 관계 타입 관계 릴레이션과 두 외래키 
 n차 관계 타입 관계 릴레이션과 n개의 외래키 
 단순 애트리뷰트 애트리뷰트 
 복합 애트리뷰트 단순 요소 애트리뷰트들의 집합 
 다치 애트리뷰트 릴레이션과 외래키 
 값의 집합 도메인 
 키 애트리뷰트 기본키(또는 보조키) 

정규 엔티티 타입의 사상
ER스키마의 각 정규 엔티티 타입 또는 강한 엔티티 타입 E에 대하여 E의 모든 단순 애트리뷰트들을 포함하는 릴레이션 R을 생성, 복합 애트리뷰트의 단순 요소 애트리뷰트들만을 포함시킨다. E의 키 애트리뷰트 하나를 선택하여 R의 기본키로 한다. 만약 E에서 선택된 키가 복합 애트리뷰트이면 그것을 구성하는 모든 단순 애트리뷰트의 모임이 R의 기본키가 된다.

약한 엔티티 타입의 사상
ER스키마에서 소유 엔티티 타입 E를 갖는 각 약한 엔티티 타입 W에 대하여 릴레이션 R을 생성하고 W의 모든 단순 애트리뷰트를 R의 애트리뷰트들로 포함시킨다. 또한 소유 엔티티 타입에 해당되는 릴레이션의 기본키를 R의 외래키로 포함시킨다. 이는 W의 관계 타입을 명시하기 위함이다. R의 기본키는 소유자 릴레이션의 기본키와 약한 엔티티 타입 W의 부분키의 조합이다.

이진 1:1 관계 타입의 사상
ER스키마의 각 이진 1:1 관계 타입 R에 대하여 R에 참여하는 엔티티 타입에 해당하는 릴레이션 S와 R을 나열한다. 가능한 접근 방식은 다음의 세 가지가 있다.
1) 외래키 접근 방식
2) 합병된 관계 접근 방식
3) 교차 참조 또는 관계 릴레이션 접근 방식
첫 번째 접근 방식이 가장 유용하다.

이진 1:N 관계 타입의 사상
모든 정규 이진 1:N 관계 타입 R에 대하여 관계 타입의 N측의 참여 엔티티 타입을 S라고 할 때, 관계 타입 R에 참여하는 다른 릴레이션 T의 기본키를 S의 외래키로 포함시킨다. 이는 관계 타입의 모든 N측 엔티티 인스턴스가 최대한 하나의 1측 엔티티 인스턴스와 관계가 있기 때문이다. 1:N 관계 타입의 모든 단순 애트리뷰트도 S의 애트리뷰트들로 포함시킨다.

이진 M:N 관계 타입의 사상
각 이진 M:N 관계 타입 R에 대하여 R을 표현하기 위한 새로운 릴레이션 S를 생성한다. 참여 엔티티 타입에 해당하는 릴레이션들의 기본키를 S에 외래키 애트리뷰트로 포함시킨다. 그들의 조합이 S의 기본키가 될 것이다. 또한 M:N 관계 타입의 모든 단순 애트리뷰트를 S의 애트리뷰트로 포함시킨다. 주의할 점은 M:N 카디날리티 비율때문에 참여 릴레이션 중에서 한 릴레이션에만 외래키 애트리뷰트를 포함시키는 것으로는 M:N 관계 타입을 표현할 수 없다는 것이다. 이 경우 반드시 별도의 관계 릴레이션S를 생성해야 한다.

다치 애트리뷰트의 사상
각 다치 애트리뷰트 A에 대하여 새로운 릴레이션 R을 생성한다. 이 릴레이션 R은 A에 대응하는 한 애트리뷰트를 포함할 것이다. 또 엔티티 타입이나 A를 애트리뷰트로 갖는 관계 타입에 해당하는 릴레이션의 기본키 애트리뷰트 K를 R의 외래키로 포함시킬 것이다. R의 기본키는 A와 K의 조합이다. 만약 다치 애트리뷰트가 복합 애트리뷰트이면 이 복합 애트리뷰트의 단순 요소 애트리뷰트들을 포함시킨다.

N차 관계 타입의 사상
각각의 n차(n>2) 관계 타입 R에 대하여 R에 대응하는 새로운 릴레이션 S를 생성한다. 모든 참여 엔티티 타입에 대응되는 릴레이션들의 기본키를 S에 외래키 애트리뷰트로 포함시킨다. 또한 n차 관계 타입의 모든 단순 애트리뷰트를 S의 애트리뷰트로 포함시킨다. 일반적으로 S의 기본키는 참여 엔티티 타입에 해당하는 릴레이션들을 참조하는 모든 외래키의 조합이다. 그러나 만약 R에 참여하는 엔티티 타입 E들 중에서 한 엔티티 타입의 카디날리티 제약조건이 1이면 S의 기본키는 E에 해당하는 릴레이션 E'을 참조하는 외래키 애트리뷰트를 포함해서는 안 된다.

6.2 ER모델을 릴레이션으로 사상하기 위한 방법에 관하여 논하라.
1.외래키 접근 방식
한 릴레이션을 선택하여 T의 기본키를 S에 외래키로 포함시킨다. S역할을 하는 릴레이션을 선택함에 있어서 R에 완전히 참여하는 엔티티 타입을 선택하는 것이 좋다. 1:1 관계 타입 R의 모든 단순 애트리뷰트를 S의 애트리뷰트들로 포함시킨다.

2.합병된 릴레이션 접근 방식
1:1 관계 타입의 또 다른 사상으로는 두 엔티티 타입과 관계 타입을 하나의 릴레이션으로 합치는 방법이 있다. 이 방법은 두 엔티티 타입이 모두 완전하게 참여할 때 적절한 방법이다.

3.교차 참조 또는 관계 릴레이션 접근 방식
엔티티 타입을 나타내는 두 릴레이션 S와 T의 기본키를 교차 참조하기 위한 세 번째 릴레이션 R을 정의하는 것이다. 이 방법은 이진 M:N릴레이션에서 주로 사용된다. 릴레이션 R의 각 투플은 S의 한 투플과 T의 한 투플을 연관시키는 관계 인스턴스를 나타내기 때문에 R을 관계 릴레이션이라 부른다.
Posted by zeide
,