<연습문제 1> - 기본키 모두 매칭하는 문제
<연습문제 2>
<연습문제 3>
교수의 강의 관련된 정보는 "instructor"-"teaches"-"section"
학생의 수강 관련된 정보는 "student"-"takes"-"section"
<연습문제 4>
<연습문제 5>
왜 SELECT에 교집합을 걸어주지 않고 따로 JOIN해 교집합을 걸어둔 걸까?
=> 결론부터 말하면,, 하나의 애트리뷰트에 관련된 조건이 두 개면 SELECT 조건에 교집합을 넣어줄 수 없음 !!
따라서 연습문제 5번은 교집합 따로 해줘야 하지만 연습문제 4번은 SELECT조건에 두 개의 조건 때려넣어도 됨.
합집합의 경우 맞게 나오지만 교집합의 경우 A가 나와야 하는데 아무것도 나오지 않기 때문에 교집합은 안 된다..
자세히 말하면,,
애트리뷰트는 원자성을 가진다.
"강의한 교수" 라는 애트리뷰트는 L 또는 K임 -> 원자성 가짐
제대로 설계된 애트리뷰트라면 L 또는 K 중 하나만 가질 것이기 때문에 애초에 "L 수강"과 "K 수강"을 동시에 가질 수 없음.
'백엔드 > SQL' 카테고리의 다른 글
DDL: 제약조건 & 인덱스 & 스키마 변경/삭제 (0) | 2025.04.06 |
---|---|
SQL을 활용한 데이터 정의와 조작 (0) | 2025.04.04 |
관계형 데이터 모델과 관계대수(2) (0) | 2025.04.02 |
관계형 데이터 모델과 관계대수(1) (0) | 2025.03.30 |
데이터 언어 & 사용자 (0) | 2025.03.29 |