정보시스템 감리 기출해설/데이터베이스 해설

(제 22회) 데이터베이스 / (67)~(68) 해설

아이티신비 2024. 12. 1. 09:00

67. 사원 정보를 저장하는 릴레이션 EMPLOYEE와 부양 가족 정보를 저장하는 릴레이션 DEPENDENT가 다음과 같이 정의되었다고 할 때, “부양가족이 없는 사원의 이름을 검색하라”라는 SQL 질의의 ㉮,㉯, ㉰에 들어갈 내용으로 가장 적절한 것은?

 

 
CREATE TABLE EMPLOYEE
(NAME VARCHAR(30) NOT NULL,
SSN CHAR(9) NOT NULL,
ADDR VARCHAR(30),
PHONE CAHR(10),
PRIMARY KEY (SSN));
CREATE TABLE DEPENDENT
(ESSN CHAR(9) NOT NULL,
DEPNAME VARCHAR(30) NOT NULL,
AGE INT,
PRIMARY KEY (ESSN, DEPNAME),
FOREIGN KEY (ESSN) REFERENCES EMPLOYEE (SSN));
SELECT NAME
FROM EMPLOYEE
WHERE ㉮ (SELECT ㉯ FROM DEPENDENT WHERE ㉰) ;

 

㉮ ㉯ ㉰

① NOT EXISTS * SSN=ESSN

② NOT IN * NAME=DEPNAME

③ NOT IN ESSN SSN=ESSN

④ NOT EXISTS ESSN NAME=DEPNAME

 

▣ SQL (EXISTS/NOT EXISTS)

▶ IN, NOT IN, EXISTS, NOT EXISTS

  • IN : 리스트에 있는 복수 값 중에서 어느 하나라도 일치하면 됨
  • 중첩 질의의 WHERE 절에 있는 조건에서 외부 질의에 선언된 릴레이션 애트리뷰트를 참조하는 경우에 상관 서브쿼리(Correlated SubQuery)라고 함

 

  • EXISTS 질의 Q의 결과에 최소한 한 개의 투플이 있다면 참을 반환, 그렇지 않으면 거짓을 반환
  • NOT EXSTS 는 질의 Q의 결과에 투플이 없다면 참을 반환하고, 그렇지 않으면 거짓을 반환 (NULL 포함)

 

<풀이>

  • SELECT NAME FROM EMPLOYEE

WHERE NOT EXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN) ;

* 특징 : ㉯ 는 아무것이나 들어와도 가능(*, 컬럼명, 1(숫자), 'A'(문자) 등)

㉰ 는 연관된 테이블의 연결가능 속성 조인을 해야 함

 

정답 : ①

 

 

68. 다음 릴레이션 R과 S에 대해 <보기>의 4개 관계 연산을 수행했을 때 4개 결과 릴레이션의 카디널리티(cardinality)의 합으로 옳은 것은?

 

 

① 15 ② 17 ③ 19 ④ 21

 

▣ 관계연산

  • 쎄타 조인 : 카디널리티 5
  • 자연 조인 : 카디널리티 3
  • Left 아웃터 조인 : 카디널리티 5
  • Right 아웃터 조인 : 카디널리티 4

 

→ 카디널리티의 합은 17

 

정답 : ②

 

 



 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥