본문 바로가기
IT★자격증/정보시스템감리사 기출문제 풀이

2022년 제 23회 정보시스템 감리사 기출문제 풀이 - 데이터베이스(56-60)

by 꼬모부 2024. 1. 11.
728x90
2022년 제 23회 정보시스템 감리사 데이터베이스 기출문제 풀이 56-60번까지 풀이를 진행하고자 합니다.
도움이 되시길 바랍니다.

 

 

데이터베이스

 

문제 56
56. 다음과 같은 고객 릴레이션과 주문 릴레이션이 있다고 하자.

고객 릴레이션의 기본키는 고객아이디이고, 주문 릴레이션의 주문고객은 고객 릴레이션의 고객아이디를 참조하는 외래 키이다. 다음 중 참조 무결성 제약조 건을 위반하는 경우로만 모두 고른 것은?
(단, 삭제 연산시 NO ACTION을 적용한다.)

가. 주문 릴레이션에 주문번호1003인 투플을 삽입하면서 주문고객으로 C004를 입력
나. 주문 릴레이션에 주문번호1003인 투플을 삽입하면서 주문고객으로 NULL을 입력
다. 고객 릴레이션에서 고객아이디가C001인 투플을 삭제
라. 고객 릴레이션에서 고객아이디가 C003인 투플을 삭제
① 가, 다
② 가, 라
③ 나, 다
④ 나, 라

 

출제의도

데이터베이스에서 참조 무결성 제약조건은 외래 키가 참조하는 테이블의 기본 키 값을 정확하게 참조하도록 보장하는 제약조건입니다.

 

각 항목에 대한 설명
가. 주문 릴레이션에 주문번호 1003인 투플을 삽입하면서 주문고객으로 C004를 입력: 이 경우, 'C004’라는 고객아이디는 고객 릴레이션에 존재하지 않습니다. 따라서 이는 참조 무결성 제약조건을 위반합니다.

나. 주문 릴레이션에 주문번호 ‘1003’인 투플을 삽입하면서 주문고객으로 NULL을 입력: NULL은 '값이 없음’을 의미하며, 외래 키에 NULL을 허용하는 경우에는 참조 무결성 제약조건을 위반하지 않습니다.

다. 고객 릴레이션에서 고객아이디가 ‘C001’인 투플을 삭제: ‘C001’ 고객아이디는 주문 릴레이션에서 참조되고 있습니다. 따라서 이 고객을 삭제하면 참조 무결성 제약조건이 위반됩니다.

라. 고객 릴레이션에서 고객아이디가 ‘C003’인 투플을 삭제: ‘C003’ 고객아이디는 주문 릴레이션에서 참조되지 않고 있으므로, 이 고객을 삭제해도 참조 무결성 제약조건이 위반되지 않습니다.

따라서, 참조 무결성 제약조건을 위반하는 경우는 '가'와 '다'이므로, 정답은 ① 가, 다입니다. 

 

문제 57
57. 다음에 주어진 릴레이션 Employee와 Department 에 대해 각 SQL문을 수행한 결과로 생성되는 레코드의 개수가 옳지 않은 것은?


① SELECT * FROM Employee as E INNER JOIN Department as D ON E.deptno = D.deptno; 3
② SELECT * FROM Employee as E LEFT OUTER JOIN Department as D ON E.deptno = D.deptno; 3
③ SELECT * FROM Employee as E RIGHT JOIN Department as D ON E.deptno = D.deptno; 4
④ SELECT * FROM Employee as E FULL JOIN Department as D ON E.deptno = D.deptno; 5

 

출제의도

SQL의 다양한 JOIN 연산에 대한 이해를 검증하는 것으로 보입니다

 

각 항목에 대한 설명
① SELECT * FROM Employee as E INNER JOIN Department as D ON E.deptno = D.deptno; 3:
INNER JOIN은 두 테이블에서 일치하는 행만 반환합니다. 여기서는 Employee 테이블의 deptno와 Department 테이블의 deptno가 일치하는 행이 3개 있으므로, 결과는 3개의 레코드가 됩니다.

② SELECT * FROM Employee as E LEFT OUTER JOIN Department as D ON E.deptno = D.deptno; 3:
LEFT OUTER JOIN은 왼쪽 테이블(Employee)의 모든 행과 오른쪽 테이블(Department)에서 일치하는 행을 반환합니다. 여기서는 Employee 테이블의 모든 행이 반환되어야 하므로, 결과는 4개의 레코드가 되어야 합니다. 따라서 이 문항은 잘못된 것입니다.

③ SELECT * FROM Employee as E RIGHT JOIN Department as D ON E.deptno = D.deptno; 4:
RIGHT JOIN은 오른쪽 테이블(Department)의 모든 행과 왼쪽 테이블(Employee)에서 일치하는 행을 반환합니다. 여기서는 Department 테이블의 모든 행이 반환되므로, 결과는 4개의 레코드가 됩니다.

④ SELECT * FROM Employee as E FULL JOIN Department as D ON E.deptno = D.deptno; 5:
FULL JOIN은 두 테이블의 모든 행을 반환합니다. 여기서는 Employee 테이블의 모든 행과 Department 테이블의 모든 행이 반환되므로, 결과는 5개의 레코드가 됩니다.

따라서, 레코드의 개수가 옳지 않은 것은 ②입니다. 

 

문제 58
58. 아래의 country 테이블과 city 테이블에 대한 SQL 질의가 수행될 때, 생성되는 결과 테이블의 차수 (degree)와 카디널리티(cardinality)로서 옳은 것은?


SELECT country.country_name, COUNT(city.lat)
FROM city INNER JOIN country
           ON city.country_id = country.id
GROUP BY country.country_name
HAVING COUNT(city.lat) <= 1;
① 차수: 1, 카디널리티: 4
② 차수: 1, 카디널리티: 5
③ 차수: 2, 카디널리티: 4
④ 차수: 2, 카디널리티: 5

 

출제의도

SQL의 내부 조인과 그룹화, 그리고 HAVING 절을 이해하고 이를 바탕으로 결과 테이블의 차수와 카디널리티를 정확히 계산할 수 있는지를 확인하는 것 같습니다. SQL 질의문은 country 테이블과 city 테이블을 country_id를 기준으로 내부 조인한 후, 각 나라별 도시 수를 계산하고, 도시 수가 1 이하인 나라의 이름과 도시 수를 반환합니다.

 

이 질의문의 결과는 country_name과 COUNT(city.lat) 두 개의 열을 가지므로 차수(degree)는 2입니다. 그리고 이 질의문의 결과는 도시 수가 1 이하인 나라만을 반환하므로, 카디널리티(cardinality)는 도시 수가 1 이하인 나라의 수와 같습니다.

city 테이블을 보면, 도시 수가 1 이하인 나라는 Deutschland, Srbija, Hrvatska, Polska 총 4개입니다.

 

각 항목에 대한 설명
① 차수: 1, 카디널리티: 4:
질의문의 결과는 두 개의 열을 가지므로 차수는 2여야 합니다.

② 차수: 1, 카디널리티: 5:
질의문의 결과는 두 개의 열을 가지므로 차수는 2여야 하고, 도시 수가 1 이하인 나라는 4개이므로 카디널리티는 4여야 합니다.

③ 차수: 2, 카디널리티: 4:

④ 차수: 2, 카디널리티: 5:
도시 수가 1 이하인 나라는 4개이므로 카디널리티는 4여야 합니다.

 

문제 59
59. 다음의 릴레이션 R에 대해 릴레이션 C1, C2, C3 으로 디비전(division) 연산을 수행한 결과 릴레 이션의 카디널리티(cardinality)의 최솟값과 최댓값을 올바르게 나열한 것은?


① 1, 2
② 1, 3
③ 1, 4
④ 2, 3

 

출제의도

SQL의 디비전 연산을 이해하고 이를 바탕으로 결과 릴레이션의 카디널리티를 정확히 계산할 수 있는지를 확인하는 것 같습니다.

 

디비전 연산은 릴레이션 R에서 릴레이션 C의 모든 튜플이 나타나는 R의 튜플을 찾는 연산입니다.

따라서, 디비전 연산의 결과 릴레이션의 카디널리티는 C의 모든 튜플이 나타나는 R의 튜플의 수와 같습니다.

 

C1, C2, C3에 대해 디비전 연산을 수행하면 다음과 같습니다:

 

C1:

  • C1에는 'C413’이라는 하나의 튜플만 있습니다.
  • 이 튜플은 R의 ‘100’, ‘300’, ‘400’ 튜플에서 나타납니다.
  • 따라서, 디비전 연산의 결과 릴레이션의 카디널리티는 3입니다

C2

  • C2에는 'C312’와 'C413’이라는 두 개의 튜플이 있습니다.
  • 이 두 튜플은 모두 R의 ‘300’, ‘400’ 튜플에서 나타납니다.
  • 따라서, 디비전 연산의 결과 릴레이션의 카디널리티는 2입니다.

C3

  • C3에는 ‘C312’, ‘C413’, 'E412’라는 세 개의 튜플이 있습니다.
  • 이 세 튜플은 모두 R의 ‘400’ 튜플에서만 나타납니다.
  • 따라서, 디비전 연산의 결과 릴레이션의 카디널리티는 1입니다.

 

각 항목에 대한 설명
① 1, 2:
 최대 카디널리티를 잘못 계산하였습니다. 최대 카디널리티는 3이어야 합니다.

② 1, 3:
최대, 최소 카디널리티를 잘 계산하였습니다.

③ 1, 4:
최대 카디널리티를 잘못 계산하였습니다. 최대 카디널리티는 3이어야 합니다.

④ 2, 3:
최소 카디널리티를 잘못 계산하였습니다. 최소 카디널리티는 1이어야 합니다.

따라서, 디비전 연산의 결과 릴레이션의 카디널리티의 최소값은 1이고, 최댓값은 3입니다. 정답은 ②번입니다.

 


 

문제 60
60. 어떤 스포츠클럽의 개체-관계 모델에서 회원(MEMBER) 개체와 로커(LOCKER) 개체 간에 1:1 관계가 성립한다. 회원에게는 로커가 필수적으로 배정되지만, 로커는 회원이 배정되지 않을 수도 있다. 이 개체-관계 모델의 두 개체는 각각 회원 테이블과 로커 테이블로 매핑이 되고, 회원 테이블의 기본키는 MID, 로커 테이 블의 기본키는 LID이다. 두 테이블을 정의하기 위한 SQL DDL문에 대한 설명으로 가장 적절한 것은?

가. CREATE TABLE MEMBER 정의문 안에 LID를 외래 키로 정의한다.
나. CREATE TABLE LOCKER 정의문 안에 MID를 외래 키로 정의한다.
다. 두 개체의 1:1 관계를 표현하기 위해 외래키로 정의된 속성에 대한 열 제약조건을 NULL로 정의한다.
라. 두 개체의 1:1 관계를 표현하기 위해 외래키로 정의된 속성에 대한 열 제약조건을 NOT NULL로 정의한다.

① 가, 다
② 가, 라
③ 나, 다
④ 나, 라

 

출제의도

조금더 공부하고 정리해서 작성하겠습니다.

 

각 항목에 대한 설명
정답은 ② 가, 라 입니다.

다음 시간에는 데이터베이스 기출문제 풀이 61-65번까지 진행해 보겠습니다.
읽어 주셔서 감사합니다.

 

반응형
LIST