본문 바로가기
자격증/정보처리기사 실기 문제 풀이

흥달쌤 정보처리기사 실기 데이터베이스 문제(관계대수 & 관계해석)

by 리드민 2023. 4. 1.
반응형

[문01~04] 다음 고객 릴레이션에 대한 관계대수를 작성하시오

<<고객>>

고객아이디 이름 나이 등급 직업
hoho 이순신 29 gold 교사
grace 홍길동 24 gold 학생
mango 삼돌이 27 silver 학생
juce 갑순이 31 gold 공무원
orange 강감찬 23 silver 군인

Q 01) 고객 릴레이션에서 등급이 gold인 고객들을 검색하는 관계대수를 작성하시오.

A) σ 등급 = 'gold' (고객)

해설)

고객 릴레이션에서 / 등급이 gold인 고객들 / 을 검색 / 하는 관계대수를 작성하시오.

관계대수 : 관계형 데이터베이스 내에서 원하는 정보를 어떻게 찾아 낼 수 있는 가를 기술하는 절차적인 언어이다.

고객 릴레이션에서 -> (고객)

등급이 gold인 고객들 -> 등급 = 'gold'

σ(셀렉션) : 릴레이션에서 조건에 부합하는 튜플을 '추출'하는 연산자

검색 -> 추출 -> σ(셀렉션) 사용

 

Q 02) 고객 릴레이션에서 등급이 gold이고 나이가 25 이상인 고객들을 검색하는 관계대수를 작성하시오.

A) σ 등급 = 'gold' ∧ 나이 ≥ 25 (고객)

해설)

고객 릴레이션에서 / 등급이 gold / 이고 / 나이가 25 이상 /인 고객들을 / 검색 /하는 관계대수를 작성하시오.

고객 릴레이션 -> (고객)

등급이 gold -> 등급 = 'gold'

이고 -> and 연산 -> ∧

나이가 25 이상 -> 나이 ≥ 25

검색 -> 추출 -> σ(셀렉션) 사용

 

Q 03) 고객 릴레이션에서 고객아이디와 등급을 가져오는 관계대수를 작성하시오.

A) π 고객아이디, 등급 (고객)

해설)

고객 릴레이션에서 / 고객아이디와 등급을 / 가져오는 관계대수를 작성하시오.

고객 릴레이션 -> (고객)

π(프로젝션) : 조건에 부합하는 릴레이션의 속성을 추출한다.

고객아이디, 등급 -> 속성 -> 속성을 추출 -> π(프로젝션) 사용 -> π 고객아이디, 등급

 

Q 04) 고객 릴레이션에서 등급이 gold인 고객의 고객 아이디와 등급을 가져오는 관계대수를 작성하시오.

A) π 고객아이디, 등급(σ 등급 = 'gold' (고객))  

해설)

고객 릴레이션에서 / 등급이 gold / / 고객의 고객 아이디와 등급 / 을 가져오는 관계대수를 작성하시오.

고객 릴레이션 -> (고객)

등급이 gold ->σ 등급 = 'gold'

인 -> 이중

공객아이디와 등급 -> 속성값 -> π 고객아이디, 등급

 

Q 05) 다음 SQl 문장과 동일한 관계대수를 작성하시오.

SELECT SNO, NAME
FROM STUDENT
WHERE AGE >20;

A)  π SNO, NAME (σ AGE > 20 (STUDENT))

해설)

FROM STUDENT -> (STUDENT)

WHERE AGE > 20 -> σ AGE > 20

SELECT SNO, NAME -(속성값 추출)> π SNO, NAME

 

Q 06) 다음 SQL 문장과 동일한 관계대수를 작성하시오.

SELECT SNO, NAME
FROM T1, T2
ON T1.SNO = T2.SNO

A) π SNO, NAME(T1 ⋈ T1.SNO = T2.SNO T2)

해설)

SELECT SNO, NAME, SELECT SNO, NAME -> T1 ⋈ T1.SNO = T2.SNO T2
SELECT SNO, NAME -> SELECT SNO, NAME

Q 07) 다음 관계대수식을 적용한 결과를 작성하시오.

<<직원>>

직원번호 이름 부서
10 B20
20 A10
30 A10
40 C30
     

<<부서>>

부서번호 부서명
A10 기획
B20 인사
C30 총무
   
   

<<정책>>

정책번호 정책명 제안자
100 인력양성 40
200 주택자금 20
300 친절교육 10
400 성과금 10
500 신규고용 20
π 이름, 부서명, 정책명 (부서 ⋈ 부서번호 = 부서(π 정책명, 이름, 부서 (정책 ⋈ 제안자 = 직원번호 직원)))

A)

이름 부서명 정책명
총무 인력양성
기획 주택자금
인사 친절교육
인사 성과금
기획 신규고용

해설)

안에서 부터 처리한다.

(π 정책명, 이름, 부서 (정책 ⋈ 제안자 = 직원번호 직원))

출력할 속성은 정책명, 이름, 부서이고 정책 테이블과 직원 테이블을 제안자 = 직원번호로 JOIN한다.

결과 테이블은 다음과 같다.

정책명 이름 부서
인력양성 C30
주택자금 A10
친절교육 B20
성과금 B20
신규고용 A10

아직 관계대수가 남았으니 마저 처리한다.

π 이름, 부서명, 정책명 (부서 ⋈ 부서번호 = 부서 [아까 연산한 테이블])

아까 처리한 것과 같은 형태이다.

출력할 속성은 이름, 부서명, 정책명이고 부서 ⋈ 부서번호 = 부서 [아까 연산한 테이블]를 JOIN 연산하면 최종 결과값이 나온다.

이름 부서명 정책명
총무 인력양성
기획 주택자금
인사 친절교육
인사 성과금
기획 신규고용

수학 연산과 같이 가장 안쪽에 있는 것부터 처리해 주고 그 결과값을 다시 처리해주면 된다.

 

Q 08 아래의 R과 S, 두 릴레이션ㅇ네 대한 R÷S의 결과와 DIVISION 연산의 정의를 작성하시오.

<<R>>

D1 D2 D3
a 1 A
b 1 A
a 2 A
c 2 B

<<S>>

D2 D3
1 A

A)

DIVISION 연산의 정의 : 릴레이션 S의 조건에 만족하는 릴레이션 R에서 튜플을 분리하는 관계대수

R÷S : 

D1
a
b

 

해설)

DIVISION 연산의 정의 : 

R÷S : divison 연산 R의 속성에서 S의 속성값을 모두 가진 튜플을 구하고 출력은 S가 가진 속성을 제외하고 한다.

S의 속성을 모두 가진 튜플은 R 속성 D1에서 a, b이다. S가 가진 속성 D2, D3를 제외하고 출력한 값은 다음과 같다.

D1
a
b

 

Q 09 다음의 릴레이션 R1과 R2에 대한 관계대수 R1 ÷ R2의 결과 릴레이션을 작성하시오.

<<R1>>

C1 C2
1 A
2 C
1 E
1 B
3 J
4 R
3 B
2 B
5 R
3 A
4 A

 <<R2>>

C2
A
B

A)

C1
1
3

해설)

관계대수 R1 ÷ R2한다는 것은 R1을 R2로 DIVISION 연산한다는 것이다. R1의 속성에서 R2의 속성값을 모두 가진 튜플을 구하고 출력은 R2가 가진 속성을 제외하고 한다.

R1에서 R2 속성 C2의 A, B를 둘다 가진 튜플은 C1이 1, 3인 튜플이다. R2의 속성을 제외하면 답은

C1
1
3

가 된다.

 

Q 10 관계해석 연산자

A)

구분 기호 설명
연산자 V - OR 연산
- AND 연산
- NOT 연산
정량자 - 모든 가능한 튜플 "For All"
- 어떤 튜플 하나라도 존재

 

반응형