다음 R과 S 테이블에 대해, 주어진 ‘관계대수’와 동일한 투플 결과를… | [7급 국가직 데이터베이스론] 26년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 26년 1회차
다음 R과 S 테이블에 대해, 주어진 ‘관계대수’와 동일한 투플 결과를 출력하는 ‘SQL 문’은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
R
| A | B |
|---|---|
| a1 | 5 |
| a2 | 10 |
| a3 | 15 |
| a4 | 20 |
| C | A |
|---|---|
| c1 | a1 |
| c2 | a1 |
| c3 | a2 |
| c4 | a3 |
1
관계대수: σ(B < 10)(R) ⋈R.A=S.A S
SQL 문:SELECT DISTINCT R.A, R.B, S.C, S.A
FROM R INNER JOIN S
WHERE R.B < 10;
2
관계대수: R ⋈N S
SQL 문:SELECT DISTINCT R.A, R.B, S.C
FROM R, S
WHERE R.A IN (SELECT S.A FROM S);
3
관계대수: R ⋉ S
SQL 문:SELECT DISTINCT R.A, R.B
FROM R, S
WHERE R.A = S.A;
4
관계대수: R ⟕ S
SQL 문:SELECT DISTINCT R.A, R.B, S.C
FROM R, S
WHERE R.A = S.A;
해설
세미조인 R ⋉ S와, 동등 조건으로 조인한 뒤 R의 속성만 중복 없이 출력하는 SQL이 같은 결과를 낸다.
R ⋉ S는 S와 A 값이 일치하는 R의 투플만 남겨 (a1, 5), (a2, 10), (a3, 15)가 된다.
SQL은 R.A = S.A로 조인하면 a1이 두 번 나오지만 DISTINCT로 R.A, R.B만 뽑아 같은 세 투플이 된다.
- B < 10 선택 후 조인: 관계대수 결과는 a1의 2투플인데, SQL은 INNER JOIN에 ON 조건이 없어 조인 조건이 적용되지 않는다.
- 자연 조인: 관계대수 결과는 (A, B, C) 4투플이지만, SQL은 R, S의 카티션 곱에서 R.A만 걸러 R의 세 투플과 S의 모든 C가 조합된 12투플이 된다.
- 왼쪽 외부 조인: 관계대수 결과에는 (a4, 20, NULL)이 포함되지만, SQL은 동등 조인이라 a4가 빠진다.
오류나 개정된 내용이 보이면 알려주세요