본문 바로가기
백엔드/SQL

관계대수 연습문제

by dustnn 2025. 4. 3.

 

<연습문제 1> - 기본키 모두 매칭하는 문제

 

<연습문제 2>

 

<연습문제 3>

 

교수의 강의 관련된 정보는 "instructor"-"teaches"-"section"

학생의 수강 관련된 정보는 "student"-"takes"-"section"

 

<연습문제 4>

 

<연습문제 5>

 

 

왜 SELECT에 교집합을 걸어주지 않고 따로 JOIN해 교집합을 걸어둔 걸까?

=> 결론부터 말하면,, 하나의 애트리뷰트에 관련된 조건이 두 개면 SELECT 조건에 교집합을 넣어줄 수 없음 !!

따라서 연습문제 5번은 교집합 따로 해줘야 하지만 연습문제 4번은 SELECT조건에 두 개의 조건 때려넣어도 됨.

 

합집합의 경우 맞게 나오지만 교집합의 경우 A가 나와야 하는데 아무것도 나오지 않기 때문에 교집합은 안 된다..

자세히 말하면,,

애트리뷰트는 원자성을 가진다. 

"강의한 교수" 라는 애트리뷰트는 L 또는 K임 -> 원자성 가짐

제대로 설계된 애트리뷰트라면 L 또는 K 중 하나만 가질 것이기 때문에 애초에 "L 수강"과 "K 수강"을 동시에 가질 수 없음.