관계 데이터베이스 스키마 STUDENT(SNO, NAME, AGE)에 대해 제시된 SQL과 같은 의미의 관계대수식은? (π는 프로젝트 연산, σ는 셀렉션 연산이다.)
SELECT SNO, NAME
FROM STUDENT
WHERE AGE > 20;
1
σ_{SNO, NAME}(π_{AGE>20}(STUDENT))
오답 이유σ의 아래첨자에는 행 조건이 와야 하는데 SNO, NAME은 선택할 열 목록이므로 연산의 역할이 뒤바뀌었다.
2
π_{SNO, NAME}(σ_{AGE>20}(STUDENT))
정답 근거먼저 AGE > 20인 행을 선택한 뒤 SNO와 NAME 열을 투영하므로 SQL과 정확히 같은 결과를 만든다.
3
σ_{AGE>20}(π_{SNO, NAME}(STUDENT))
오답 이유먼저 SNO, NAME만 투영하면 AGE 열이 사라져 바깥의 AGE > 20 조건을 평가할 수 없다.
4
π_{AGE>20}(σ_{SNO, NAME}(STUDENT))
오답 이유π에는 투영할 속성명이 와야 하며 AGE > 20 같은 행 조건을 둘 수 없다.
정답·상세해설
정답 2번
SQL의 WHERE AGE > 20은 조건을 만족하는 행을 고르는 셀렉션 σ에 해당하고, SELECT SNO, NAME은 그 결과에서 두 열을 고르는 프로젝트 π에 해당한다. 연산은 안쪽부터 적용하므로 π_{SNO, NAME}(σ_{AGE>20}(STUDENT))인 ②가 맞다.