NLP Learner in Switzerland

데이터베이스시스템 2019년도 중간고사 문제 및 답안[Q1~Q4] 본문

Database SQL/Exercise

데이터베이스시스템 2019년도 중간고사 문제 및 답안[Q1~Q4]

초코빵 2021. 4. 28. 10:00
728x90
반응형

 

 

 

@University of Zurich

 

 

Question 1

[답] 2번 : 2

R relation에서 selection(σ) C<4 결과 A,B,C 183, 281 튜플2개

S relation에서 projection(π) D,E 결과 D,E 28, 97 튜플2개

R과 S의 Cartesian product(Χ) 튜플 수는 2개*2개 = 4개이며

projection(π) B,E 결과 B,E 88 87 88 87이지만 중복이 제거되므로 88 87만 남아서 2개가 된다.

 

 

 

[답] 3번

1번 : Cartesian product의 결과 A,B,C,A,C,D,E 컬럼을 가진 테이블이 정상적으로 얻어지지만 σ A<12를 수행할 때 어떤 A를 가리키는지 알 수가 없다.

2번 : σ A>=3, C<3의 syntax error → A>=3 AND C<3으로 바꾸어야 한다

4번 : r UNION s를 수행하려면 두 relation의 변수 갯수가 같아야 한다.

 

 

 

Question 2

[답]  4번

1번 : destination table의 DID가 booking table의 foreign key로 연결되어 있어 삭제시도시 에러가 난다.

2번 : booking의 primary key(DID, LName, Year)의 값이 모두 같은 튜플이 이미 존재하므로 삽입시 에러가 난다.

3번 : UPDATE의 SET에 multiple조건을 주려면 AND가 아닌 콤마(,)로 이어야 한다.

 

 

 

Question 3

[답]  4번

booking table의 rename(ρ) D,L,Y,Price2 수행 후 cartesian product를 하면 컬럼이 8개인 테이블이 생성된다.

π(price)σ(price>price2)를 수행하면 price최솟값만 빼고 전부 도출된다.

이를 전체 price 리스트에서 빼주면 price최솟값만 남게된다.

 

 

 

[답]  1번

2번 : 2018년도에 예약자 전체와 2019년도 예약자 전체에서 중복이 제거된 last name이 도출된다. 이 경우 당연히 두개년도 모두 예약한 사람은 알 수가 없다.

3번 : 2018년과 2019년 둘다 예약하지 않은 사람을 빼주었지만 둘 중 1개년도만 예약한 사람은 그대로 남아있어서 정답이 될 수 없다.

4번 : 2018년 booking리스트와 2019년 booking리스트를 join하면 매치되는 값을 찾아야 가능한데, year값이 달라서 같은 튜플을 찾을 수 없으므로 join이 되지 않는다.

 

 

 

[답]  2번

1번 : destination이 CH인 destination ID와 customer의 last name 전체를 cartesian곱해주면 모든 고객 last name에 CH의 ID가 붙은 튜플리스트가 도출된다. 거기서 booking 전체의 last name과 ID를 빼주면 CH리스트가 다 빠지게 되버린다.

3번 : destination이 CH인 튜플을 전부 포함하는 booking의 튜플은 destination의 튜플 전체를 커버할 수가 없기 때문에 아예 결과값이 없다.

4번 : destination이 CH인 튜플 중 destination ID컬럼만 뽑고, 이 ID를 전부 포함하는 booking의 last name, year, price는 해당 고객 모두가 같은 last name, year, price를 가지지 않는 이상 결과값이 도출되지 않는다.

 

 

 

 

Question 4

[답]  (a) 2번, (b) 1번

(a) 모든 같은 destination ID와 같은 year에 대해서라고 ALL quantifier를 주었고, customer는 각각 다른 사람이다(C1, C2)(b) C1→C2와 C2→C1 두개를 모두 만족하는 결과값이므로 symmetric한 결과가 나온다. 또한 last name이 같은 서로 다른 고객도 도출될 수 있으므로 둘다 맞는 statement이다.

 

 

 

[답]  3번

destination이 home country가 아닌 경우를 제외하는 식으로 접근한다. 즉, booking리스트에 있는 customer에서 booking된 destination이 home country가 아닌 경우를 빼는 것이다.

 

Comments