데이터베이스 기초

표 R의 열 x의 값은 1, 1, 2, 3의 4개 행, 표 S의 열 x의 값은 1, 1, 2, 4의 4개 행이다. SELECT * FROM R INNER JOIN S ON R.x = S.x의 결과는 몇 행이 되는가?

  1. A2행
  2. B3행
  3. C5행
정답과 해설 보기

정답: C. 5행

조인에서는 조건을 만족하는 행의 조합이 하나씩 결과 행이 됩니다. x = 1에 대해서는 R의 2행과 S의 2행의 모든 조합이 조건을 만족하므로 2 × 2 = 4행, x = 2에 대해서는 1 × 1 = 1행입니다. R의 3과 S의 4는 상대가 없으므로 내부 조인의 결과에 나오지 않습니다. 합계는 4 + 1 = 5행입니다. 2행은 일치하는 값의 종류(1과 2)마다 한 행씩만 생긴다고 생각한 경우의 행 수입니다. 3행은 R의 각 행에 대해 S에 일치하는 값이 있는지만 본 경우(SELECT * FROM R WHERE x IN (SELECT x FROM S) 같은 질의)의 행 수입니다. 조건 없는 곱집합이라면 4 × 4 = 16행이 됩니다. 조인하는 열의 값이 중복되어 있으면 결과 행이 곱셈으로 늘어난다는 점에 주의해야 합니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 고객 표(고객ID, 이름)에는 (C1, 아오키), (C2, 이노우에), (C3, 우에다), (C4, 에토)의 4개 행이 있다. 주문 표(주문ID, 고객ID, 금액)에는 (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000)의 5개 행이 있다. SELECT 이름 FROM 고객 WHERE 고객ID IN (SELECT 고객ID FROM 주문 WHERE 금액 > 5000)의 결과는 몇 행이 되는가?
  2. 고객 표(고객ID, 이름)와 주문 표(주문ID, 고객ID, 금액)에서 한 번도 주문하지 않은 고객의 이름을 구하려고 한다. 올바른 SQL 문은?
  3. 관계형 데이터베이스의 뷰에 대한 설명으로 올바른 것은?
  4. 관계형 데이터베이스의 표를 정규화하는 주된 목적은?
  5. 수주 표(수주번호, 상품번호, 수량, 고객번호, 고객명)의 기본 키는 {수주번호, 상품번호}이고, 함수 종속은 {수주번호, 상품번호} → 수량, 수주번호 → 고객번호, 고객번호 → 고객명이다. 이 표를 제3정규형까지 정규화한 결과로 올바른 것은?