본문으로 건너뛰기

단원 모의 문제

정보처리기사 목차데이터베이스와 관계 모델문제 13개

11단원 '데이터베이스와 관계 모델'의 열 레슨에서 한 문제씩 10문제를 내고, 끝에 실기 꼴 3문제를 두었습니다. 2과목의 첫 단원이라 앞 단원에서 섞어 온 문제는 없습니다. 1~10번은 보기 넷 가운데 하나를 고른 뒤 정답을 펼쳐 맞춰 보고, 11~13번은 종이에 답을 끝까지 쓴 뒤 펼치세요. 띄어쓰기만 다르면 같은 답입니다.

문제에 쓰는 표와 값은 아래 네 릴레이션입니다. 학생의 학과코드는 학과를, 수강의 학번은 학생을, 수강의 과목코드와 과목의 선수과목은 과목을 가리킵니다. 학생의 학년은 1부터 4까지만 받습니다.

학과

학과코드학과명건물
CS컴퓨터공학관
EE전자공학관
BA경영경영관

학생

학번이름학년학과코드
101김민수3CS
102이서준2CS
103김지민2CS
104박서연1EE
105최민준3EE
106정하윤3EE
107강도현1NULL

과목

과목코드과목명학점선수과목
DS자료구조3NULL
OS운영체제3DS
NW네트워크2OS

수강

학번과목코드점수
101DS85
101OS75
101NW80
102DS70
102OS60
103DS65
103NW55
104OS75
104NW95
105DS100
105NW90
107NW50

문제 1

데이터베이스의 정의 넷에 대한 설명으로 옳지 않은 것을 고르세요.

  • ① 통합된 데이터 — 같은 데이터가 여러 곳에 되풀이되지 않게 한데 모았습니다.
  • ② 저장된 데이터 — 컴퓨터가 읽는 저장 장치에 담겨 있습니다.
  • ③ 운영 데이터 — 데이터가 늘고 줄며 늘 지금의 모습을 담습니다.
  • ④ 공용 데이터 — 여러 사용자와 응용 프로그램이 함께 씁니다.
정답

③ — 운영 데이터는 조직의 업무를 해 나가는 데 꼭 있어야 하는 데이터라는 뜻입니다. ③이 설명한 것은 정의가 아니라 데이터베이스의 특징 가운데 계속적인 변화입니다.

  • ① 맞습니다. 중복을 줄여 한데 모았다는 쪽이 통합된 데이터입니다.
  • ② 맞습니다. 사람의 기억이나 종이가 아니라 컴퓨터가 읽는 장치에 있다는 쪽입니다.
  • ④ 맞습니다. 한 프로그램이 혼자 쓰지 않고 여럿이 나눠 쓴다는 쪽입니다.

다시 볼 레슨: 데이터베이스와 DBMS

문제 2

중고 서점의 데이터베이스에서 판매 기록이 늘어, 저장 장치를 더 빠른 것으로 바꾸고 판매 기록을 판매일 순서대로 붙여 담도록 고쳤습니다. 표와 열, 손님용 검색 화면은 그대로입니다. 이때 바뀐 스키마와 드러난 데이터 독립성으로 알맞은 것을 고르세요.

  • ① 개념 스키마 · 논리적 데이터 독립성
  • ② 개념 스키마 · 물리적 데이터 독립성
  • ③ 내부 스키마 · 논리적 데이터 독립성
  • ④ 내부 스키마 · 물리적 데이터 독립성
정답

④ — 데이터를 어느 장치에 어떤 순서로 담을지 정하는 층이 내부 스키마입니다. 내부 스키마가 바뀌어도 위 두 층과 응용 프로그램이 그대로인 성질이 물리적 데이터 독립성입니다.

  • ① 두 오해가 겹쳤습니다. 담는 자리와 순서를 바꾼 것은 내부 스키마의 변경이고, 그때 지켜진 것은 물리적 데이터 독립성입니다.
  • ② 저장 쪽 변경을 개념 스키마에 넣었습니다. 개념 스키마에 적는 것은 표·열·관계와 지킬 규칙입니다.
  • ③ 층은 맞게 짚고 독립성을 바꿔 봤습니다. 논리적 데이터 독립성은 개념 스키마가 바뀌어도 외부 스키마가 그대로인 성질입니다.

다시 볼 레슨: 스키마 3단계와 데이터 독립성

문제 3

데이터베이스 설계 단계와 그 단계에서 나오는 산출물을 짝지은 것으로 옳지 않은 것을 고르세요.

  • ① 요구 조건 분석 — 요구 조건 명세서
  • ② 개념적 설계 — E-R 다이어그램
  • ③ 논리적 설계 — 저장 레코드 양식과 접근 경로
  • ④ 구현 — SQL 문으로 만든 데이터베이스
정답

③ — 저장 레코드 양식과 접근 경로는 물리적 설계에서 나옵니다. 논리적 설계에서는 표 이름과 열, 기본키를 적은 릴레이션 스키마가 나오고 정규화도 여기서 합니다.

  • ① 맞습니다. 사용자에게 들은 것을 정리해 남긴 문서입니다.
  • ② 맞습니다. 어느 DBMS를 쓸지와 상관없이 그리는 그림입니다.
  • ④ 맞습니다. 정한 대로 표를 만들고 데이터를 넣는 단계입니다.

다시 볼 레슨: 데이터베이스 설계 단계

문제 4

세탁소 업무를 E-R 다이어그램으로 그립니다. 접수 한 건에 옷이 여러 점 들어오고, 옷에는 '첫째 옷'처럼 그 접수 안에서만 쓰는 번호가 붙습니다. 어느 접수인지 모르면 옷 하나를 가려낼 수 없습니다. 옷을 그릴 기호로 알맞은 것을 고르세요.

  • ① 사각형
  • ② 이중 사각형
  • ③ 이중 마름모
  • ④ 이중 타원
정답

② — 자기 속성만으로 하나하나를 가려내지 못하고 다른 개체에 기대는 개체를 약한 개체라 하고, 이중 사각형으로 그립니다.

  • ① 자기 속성으로 하나하나를 가려내는 개체의 기호입니다. 옷의 번호는 접수를 알아야 뜻이 생깁니다.
  • ③ 약한 개체와 그것이 기대는 개체를 잇는 관계의 기호입니다. 이 문제는 관계가 아니라 대상 쪽을 묻습니다.
  • ④ 값이 여럿일 수 있는 속성의 기호입니다. 옷은 접수에 딸린 값이 아니라 따로 관리하는 대상입니다.

다시 볼 레슨: 개체-관계(E-R) 모델

문제 5

어느 꽃집이 주문을 다음 표로 관리합니다. 이 표가 어긴 릴레이션의 특성을 고르세요.

주문번호받는 사람꽃 종류금액
501유하린장미30000
502서도윤장미, 튤립45000
503유하린튤립30000
  • ① 모든 값이 원자값이어야 한다
  • ② 모든 값이 같은 튜플이 없어야 한다
  • ③ 튜플의 순서가 없어야 한다
  • ④ 속성의 순서가 없어야 한다
정답

① — 502의 꽃 종류 칸에 값이 둘 들어 있습니다. 릴레이션은 칸마다 더 나눌 수 없는 값을 하나씩만 담습니다. 502를 두 줄로 나눠 꽃 종류를 한 칸에 하나씩 적으면 이 특성을 지킵니다.

  • ② 받는 사람과 금액이 두 줄에 겹쳐 보입니다. 모든 값이 같아야 중복 튜플인데, 501과 503은 주문번호와 꽃 종류가 다릅니다.
  • ③ 세 줄을 어떤 차례로 늘어놓아도 같은 릴레이션입니다. 이 표는 줄의 차례에 뜻을 두지 않았습니다.
  • ④ 네 칸의 자리를 바꿔도 같은 릴레이션입니다. 이 표는 칸의 자리에 뜻을 두지 않았습니다.

다시 볼 레슨: 관계 데이터 모델: 릴레이션

문제 6

사진관이 촬영 예약을 예약 표(예약번호, 고객전화, 촬영일, 담당작가)로 관리합니다. 지금 든 예약 열 건은 고객전화가 모두 다릅니다. 고객전화를 기본키로 삼지 않은 까닭으로 알맞은 것을 고르세요.

  • ① 고객전화가 비어 있는 예약이 생길 수 있어, 겹침과 상관없이 최소성이 깨집니다.
  • ② 속성 하나만으로는 유일성을 따질 수 없어 둘 이상을 묶어야 합니다.
  • ③ 고객전화는 고객 표를 가리키는 외래키이므로 기본키로 쓸 수 없습니다.
  • ④ 지금은 겹치지 않지만, 한 고객이 두 번 예약하면 겹칩니다.
정답

④ — 키가 될 수 있는지는 지금 든 열 건만 보고 가리지 않습니다. 같은 고객이 다시 예약하면 고객전화가 두 줄에 같이 나와 유일성이 깨집니다.

  • ① 비어 있을 수 있다는 것은 최소성과 다른 이야기입니다. 최소성은 묶음에서 속성을 빼면 유일성이 깨지는지를 보는 성질입니다.
  • ② 속성 하나로 된 후보키도 있습니다. 학생의 학번처럼 값이 겹치지 않으면 하나로도 됩니다.
  • ③ 외래키도 기본키가 될 수 있습니다. 수강의 기본키 (학번, 과목코드)는 둘 다 다른 표를 가리키는 외래키입니다.

다시 볼 레슨: 키의 종류

문제 7

네 릴레이션에 참조 동작을 아무것도 적지 않았습니다. 다음 문장을 하나씩 처음 데이터에 돌릴 때, 오류 없이 실행되는 것을 고르세요.

  • ① DELETE FROM 학과 WHERE 학과코드 = 'BA';
  • ② DELETE FROM 학과 WHERE 학과코드 = 'CS';
  • ③ UPDATE 학생 SET 학과코드 = 'AR' WHERE 학번 = 101;
  • ④ INSERT INTO 학생 VALUES (108, '송유나', 5, 'CS');
정답

① — BA를 가리키는 학생이 없어 지울 수 있습니다. 가리키는 자식 행이 없으면 부모 행을 지워도 참조 무결성이 깨지지 않습니다.

  • ② 학생 101·102·103이 CS를 가리킵니다. 참조 동작을 적지 않으면 자식 행이 있는 부모 행은 지워지지 않습니다.
  • ③ 학과에 AR이 없습니다. 외래키 값은 부모의 기본키에 있는 값이거나 NULL이어야 하므로 참조 무결성에 걸립니다.
  • ④ 학년에 5를 넣었습니다. 학년은 1부터 4까지로 정해 두었으므로 도메인 무결성에 걸립니다.

다시 볼 레슨: 무결성 제약 조건

문제 8

다음 관계대수 식의 결과는 몇 튜플인지 고르세요.

π 학년, 학과코드 (학생)
  • ① 3튜플
  • ② 4튜플
  • ③ 5튜플
  • ④ 7튜플
정답

③ — 일곱 학생에게서 학년과 학과코드만 남기면 (3, CS)·(2, CS)·(2, CS)·(1, EE)·(3, EE)·(3, EE)·(1, NULL)입니다. 프로젝트의 결과도 릴레이션이라 겹치는 튜플은 하나만 남아 다섯이 됩니다.

  • ① 학년만 남긴 결과를 셌습니다. 학년 하나로 줄이면 1·2·3 세 튜플이지만, 이 식은 속성 둘을 남깁니다.
  • ② 학과코드가 NULL인 강도현을 뺐습니다. 프로젝트는 값이 NULL인 튜플도 남깁니다.
  • ④ 겹치는 튜플을 그대로 셌습니다. 이서준과 김지민은 (2, CS)로, 최민준과 정하윤은 (3, EE)로 같아 둘씩 하나가 됩니다.

다시 볼 레슨: 관계대수: 셀렉트·프로젝트·조인·디비전

문제 9

학과 표(3열·3행)와 과목 표(4열·3행)의 카티션 곱 학과 × 과목을 구했습니다. 결과 릴레이션의 차수와 카디널리티로 알맞은 것을 고르세요.

  • ① 차수 7 · 카디널리티 6
  • ② 차수 7 · 카디널리티 9
  • ③ 차수 12 · 카디널리티 6
  • ④ 차수 12 · 카디널리티 9
정답

② — 카티션 곱은 두 릴레이션의 튜플을 하나씩 모두 짝짓습니다. 속성은 옆으로 이어 붙어 차수가 3 + 4 = 7이고, 튜플은 짝마다 하나씩 생겨 카디널리티가 3 × 3 = 9입니다.

  • ① 카디널리티도 차수처럼 더했습니다. 튜플은 짝마다 하나씩 생기니 곱합니다.
  • ③ 두 규칙을 거꾸로 썼습니다. 속성 수는 더하고, 튜플 수는 곱합니다.
  • ④ 차수도 카디널리티처럼 곱했습니다. 속성은 옆으로 이어 붙을 뿐이라 더합니다.

다시 볼 레슨: 관계대수: 집합 연산과 카티션 곱 · 관계 데이터 모델: 릴레이션

문제 10

다음 관계해석 식의 결과는 몇 명인지 고르세요.

{ t.이름 | 학생(t)
  ∧ ∀u(수강(u)
    ∧ u.학번 = t.학번
    → u.과목코드 <> 'OS') }
  • ① 3명
  • ② 4명
  • ③ 6명
  • ④ 7명
정답

② — ∀가 참이려면 조건을 어기는 수강이 하나도 없어야 합니다. 운영체제를 들은 수강 행이 없는 학생이 남아 김지민·최민준·정하윤·강도현 넷입니다.

  • ① 수강 행이 하나도 없는 정하윤을 뺐습니다. 조건을 어기는 수강이 없으므로 ∀는 참입니다.
  • ③ ∀를 ∃로 읽어 '운영체제가 아닌 수강이 하나라도 있는 학생'을 셌습니다. 김민수·이서준·박서연이 들어오고 수강이 없는 정하윤이 빠져 여섯이 됩니다.
  • ④ 조건을 보지 않고 학생을 모두 셌습니다. 김민수·이서준·박서연은 운영체제를 들어 빠집니다.

다시 볼 레슨: 관계해석

문제 11 (실기)

영화관 예매 데이터베이스에 회원 표와 예매 표가 있습니다. 예매 표의 회원번호 자리에는 회원 표에서 회원 한 명을 집어내는 속성의 값이나 NULL만 들어갈 수 있습니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 예매 표의 회원번호처럼 다른 릴레이션의 그 속성을 가리키는 속성의 이름을 영문 약어로 쓰세요.
  • (나) 회원 표에서 회원 한 명을 집어내도록 골라 둔 그 속성의 이름을 영문 약어로 쓰세요.
정답

받는 답: (가) FK · (나) PK

(가)의 실마리는 '다른 릴레이션을 가리키고, 비어 있어도 된다'입니다. (나)는 '그 릴레이션에서 한 줄을 집어내도록 골라 둔 하나'입니다.

  • 같은 이름의 다른 꼴: (가) 외래키·Foreign Key · (나) 기본키·Primary Key — 한글 이름과 영문 원어입니다. 문제가 영문 약어로 물었습니다.
  • 틀리는 꼴 PK — (가)에: 자기 릴레이션에서 한 줄을 집어내도록 고른 키입니다. (가)는 다른 릴레이션을 가리키는 쪽입니다.
  • 틀리는 꼴 후보키 — (나)에: 유일성과 최소성을 갖춘 묶음을 모두 가리키는 이름입니다. 그 가운데 골라 둔 하나를 묻고 있습니다.

다시 볼 레슨: 키의 종류

문제 12 (실기)

어느 농구 리그 데이터베이스에 출전(선수번호, 경기번호)과 경기(경기번호) 두 릴레이션이 있습니다. '리그의 모든 경기에 한 번도 빠지지 않고 나온 선수'를 구하려고 두 릴레이션에 연산 하나를 걸었습니다. 그 연산의 이름을 한글로 쓰고 기호도 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

정답

받는 답: 디비전(÷)

실마리는 '한쪽 릴레이션의 값을 하나도 빠뜨리지 않고 모두 가진 줄만 남긴다'입니다. 결과의 속성은 나뉘는 쪽의 속성에서 나누는 쪽의 속성을 뺀 선수번호 하나입니다.

  • 같은 이름의 다른 꼴: DIVISION — 영문 이름입니다. 문제가 한글 이름과 기호로 물었습니다.
  • 틀리는 꼴 조인(⋈): 공통 속성의 값이 같은 줄끼리 이어 붙이는 연산입니다. 몇 경기에 나왔는지는 가려 주지 않아 한 경기만 나온 선수도 남습니다.
  • 틀리는 꼴 교집합(∩): 두 릴레이션에 모두 있는 줄만 남기는 연산입니다. 출전은 속성이 둘, 경기는 하나라 합병 가능하지 않아 걸 수 없습니다.

다시 볼 레슨: 관계대수: 셀렉트·프로젝트·조인·디비전 · 관계대수: 집합 연산과 카티션 곱

문제 13 (실기)

음악 스트리밍 데이터베이스가 다음 두 입력을 거절했습니다. (가)·(나)에서 지켜진 규칙의 이름을 영문으로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 재생기록 표의 곡번호 자리에, 곡 표에서 이미 지워진 곡의 번호를 적으려 했습니다.
  • (나) 재생기록 표의 별점 자리에 6을 적으려 했습니다. 이 자리는 1부터 5까지만 받기로 정해 두었습니다.
정답

받는 답: (가) Referential Integrity · (나) Domain Integrity

(가)의 실마리는 '가리키는 쪽 표에 그 값이 없다', (나)는 '값이 미리 정해 둔 범위를 벗어났다'입니다.

  • 같은 이름의 다른 꼴: (가) 참조 무결성 · (나) 도메인 무결성 — 한글 이름입니다. 문제가 영문으로 물었습니다.
  • 틀리는 꼴 Entity Integrity — (가)에: 한 줄을 집어내는 속성이 비거나 겹치는 것을 막는 규칙입니다. (가)의 곡번호는 비지도 겹치지도 않았습니다.
  • 틀리는 꼴 Referential Integrity — (나)에: 가리키는 쪽에 그 값이 있는지 보는 규칙입니다. 별점은 다른 표를 가리키지 않습니다.

다시 볼 레슨: 무결성 제약 조건

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로