같은 질의, 다른 표현

SQL은 결과를 선언하고, DBMS는 그것을 관계 대수 연산으로 바꿔 실행합니다.

핵심 차이는 무엇을 원하는지를 말하느냐, 어떻게 구할지를 적느냐입니다. 하지만 두 방식으로 표현할 수 있는 질의의 범위는 같습니다.

표현력 동일
같은 질문
"1학년 학생의 이름을 구하라"
사용자는 SQL로 결과 조건을 적고, DBMS는 내부에서 그 요청을 실행 가능한 형태로 다시 조직합니다.
→
옵티마이저가 의미를 보존한 채 변환 SQL에 가까운 선언형 요청 → 관계 대수 표현식 → 실행 계획
관계 해석 무엇을
관계 대수 어떻게
초점
원하는 결과의 조건을 정의합니다.
튜플이 만족해야 할 성질을 기술하므로 SQL의 선언형 사고와 가깝습니다.
결과를 만드는 연산 순서를 조합합니다.
선택, 투영, 조인 같은 연산이 실제 실행 계획의 뼈대가 됩니다.
표현
{ t.이름 | 학생(t) ∧ t.학년 = 1 }
조건을 만족하는 튜플 집합을 말합니다.
π이름(σ학년=1(학생))
먼저 고르고, 그다음 필요한 열만 남깁니다.
DBMS 안에서
SQL이 닮아 있는 쪽입니다.
사용자는 결과 조건만 적고, 내부 처리 순서는 직접 세세히 쓰지 않습니다.
옵티마이저가 사용하는 내부 표현입니다.
등가 변환을 적용해 더 효율적인 실행 순서를 찾을 수 있습니다.

정리: 관계 해석과 관계 대수는 보는 관점은 다르지만, 하나로 표현 가능한 질의는 다른 하나로도 표현할 수 있습니다. 그래서 SQL은 해석 쪽에서 쓰고, DBMS는 대수 쪽으로 바꿔 실행합니다.

관계 완전