Post

[데이터베이스] 관계형 데이터베이스 과제

2장 관계형 데이터베이스 - 관계 대수 과제


11번 아래는 은행에 대한 정보를 저장하고 있는 데이터베이스이다. customer, branch, dposit 테이블은 각각 고객, 지점, 계좌에 관한 정보를 저장하고 있다.

customer (customer_id, name)

customer_idname
100박지성
101박주영
102기성용
103이영표
104차두리

branch (branch_name, address, phone)

branch_nameaddressphone
A서울02-201-2343
B천안041-201-4367
CNULL02-203-0932

deposit (deposit_num, customer_id, branch_name, balance)

deposit_numcustomer_idbranch_namebalance
300100A2000
301100A3000
302102A3000
303103B5000
304103B1000
305103C2000

다음 질문에 답하라.

(a). 다음의 질의를 관계 대수로 표현하라.
1) 잔고(balance)가 2,000원 이상인 고객의 고객 번호와 (customer_id)와 계좌 번호(deposit_num)를 검색하라.
  • π customer_id, deposit_num ( σ balance >= 2000 (deposit))
2) 잔고가 2,000원 이하인 계좌를 갖고 있는 고객의 이름을 검색하라.
  • π name ( σ balance <= 2000 (customer ⋈ deposit )
3) 주소가 ‘서울’인 지점에서 예금계좌를 갖고 있는 고객의 이름을 검색하라.
  • π name address = ‘서울’ ( customer ⋈ deposit) ⋈ branch))
4) 계좌가 없는 고객의 이름을 검색하라.
  • π name ( π customer_id (customer) - π customer_id (deposit) ) ⋈ customer )
5) 주소가 ‘서울’이 아닌 지점의 지점 이름을 검색하라.
  • π  addressaddress ≠ ‘서울’ ( customer ⋈ deposit) ⋈ branch))
6) 계좌 번호가 ‘300’인 계좌의 잔고보다 많은 잔고를 가진 계좌번호를 모두 검색하라. (관계 대수의 표현이 복잡할 경우 지정 연산자를 사용하라.)
  • var_balance <- π balance ( σ deposit_num = ‘300’ (deposit) )
  • π deposit_num ( σ balance > var_balance (deposit))
(b). 문제 (a)의 각 관계 대수에 대한 결과를 테이블로 나타내라
1)
deposit_numcustomer_id
300100
301100
302102
303103
305103
2)
name
박지성
이영표
3)
name
박지성
기성용
4)
name
박주영
차두리
5)
address
천안
6)
deposit_num
301
302
303
(c) 문제 (a)의 5)번에서 주소가 ‘서울’이 아닌 지점에는 ‘C’가 표함되지 않는다. 그 이유는 무엇인가?
  • NULL이란 필드에 대한 값을 알지 못하거나 아직 정해지지 않아 입력하지 못한 경우의 필드의 값으로, 그 값이 ‘서울’ 일 수도 그렇지 않을 수도 있기에, 검색 시 결과에서 제외된다.
This post is licensed under CC BY 4.0 by the author.