[7급 국가직 데이터베이스론] 24년 1회차
7급 국가직 데이터베이스론 기출문제

24년 1회차

총 25문항 · 객관식 · A4 약 1장

1 / 1
A4정답 포함
7급 국가직 데이터베이스론 기출문제모두CBT · moducbt.com

24년 1회차

총 25문항 · 객관식 · 정답·해설 포함
문제 1
데이터베이스의 일반적인 특징으로 옳지 않은 것은?
1데이터의 실시간 처리가 가능하다.
2여러 사용자가 동시에 이용할 수 있다.
3사용자는 데이터의 저장 주소나 위치를 통해 데이터를 참조한다.
4동적인 특징이 있어 데이터를 계속 삽입, 삭제, 갱신하여 현재의 정확한 데이터를 유지한다.
정답 및 해설

데이터베이스는 저장 주소가 아니라 데이터의 내용(값)으로 참조하므로, 주소나 위치로 참조한다는 설명이 옳지 않다.

데이터베이스의 특징은 실시간 접근성, 계속적 변화, 동시 공용, 내용에 의한 참조로 정리된다. 사용자는 물리적 위치를 몰라도 조건(값)만으로 원하는 데이터를 찾는다.

  • 실시간 처리 가능: 질의에 즉시 응답하는 실시간 접근성에 해당한다.
  • 여러 사용자의 동시 이용: 동시 공용 특징이다.
  • 삽입·삭제·갱신으로 현재의 정확한 데이터 유지: 계속적 변화(동적 특성)에 해당한다.
문제 2
데이터베이스 관리자(DBA)의 주요 업무와 관련된 설명으로 옳지 않은 것은?
1데이터 사전과 같은 시스템 데이터베이스를 관리한다.
2DML을 사용하여 데이터 접근 권한을 사용자에게 부여한다.
3데이터베이스를 물리적으로 저장하기 위한 레코드 구조를 설계한다.
4사용자의 요구사항을 분석하여 데이터베이스의 구성요소를 결정한다.
정답 및 해설

접근 권한 부여는 DML이 아니라 DCL(GRANT)로 수행하므로, DML로 권한을 부여한다는 설명이 옳지 않다.

SQL은 정의어(DDL), 조작어(DML: SELECT·INSERT·UPDATE·DELETE), 제어어(DCL: GRANT·REVOKE 등)로 나뉘며, 권한 관리는 DCL의 역할이다.

  • 데이터 사전 등 시스템 데이터베이스 관리: 메타데이터 관리는 DBA의 업무다.
  • 물리적 저장을 위한 레코드 구조 설계: 저장 구조와 접근 경로를 정하는 물리적 설계도 DBA가 맡는다.
  • 요구사항 분석으로 구성요소 결정: 스키마를 정의하는 것은 DBA의 핵심 업무다.
문제 3
관계형 데이터베이스에 대한 설명으로 옳지 않은 것은?
1릴레이션에서 속성의 순서는 중요하지 않지만, 투플의 순서는 중요하다.
2제2정규형에서 기본키에 대해 이행적 종속성을 제거하면 제3정규형이 된다.
3각 속성은 특정 도메인에서 값을 가져야 하며, 속성 간 도메인은 다를 수 있다.
4모든 투플은 기본키에 의해 고유하게 식별되며, 기본키는 릴레이션 내에서 유일성이 보장된다.
정답 및 해설

릴레이션은 투플의 집합이므로 투플의 순서도 의미가 없다. 투플 순서가 중요하다는 설명이 옳지 않다.

릴레이션은 투플의 유일성, 투플과 속성의 무순서성, 속성값의 원자성을 특성으로 가진다.

  • 제2정규형에서 이행적 종속 제거 시 제3정규형: 제3정규형의 정의와 같다.
  • 속성은 도메인에서 값을 가지며 속성마다 도메인이 다를 수 있음: 옳은 설명이다.
  • 기본키로 투플을 고유하게 식별하고 유일성 보장: 기본키의 성질이다.
문제 4
외부 스키마에 대한 설명으로 옳지 않은 것은?
1서브 스키마라고도 한다.
2하나의 데이터베이스에 여러 개가 존재할 수 있다.
3데이터베이스가 외부 저장장치에 저장되는 방법을 정의한다.
4개별 사용자의 시각에서 본 데이터베이스의 논리적 구조이다.
정답 및 해설

데이터가 저장장치에 저장되는 방법을 정의하는 것은 내부 스키마이므로, 이를 외부 스키마의 설명으로 든 것이 옳지 않다.

3단계 스키마에서 외부 스키마는 사용자 관점의 논리 구조, 개념 스키마는 조직 전체의 논리 구조, 내부 스키마는 물리적 저장 구조를 정의한다.

  • 서브 스키마라고도 함: 외부 스키마의 다른 이름이다.
  • 하나의 데이터베이스에 여러 개 존재: 사용자·응용마다 서로 다른 외부 스키마를 둘 수 있다.
  • 개별 사용자 시각의 논리적 구조: 외부 스키마의 정의 그대로다.
문제 5
다음과 같은 특징에 해당하는 키(key)는?
○ 릴레이션에서 투플을 식별할 수 있는 유일성(uniqueness)을 만족시키는 속성의 집합
○ 유일성을 갖는 속성의 최소성(minimality)은 만족시키지 못함
1슈퍼키(super key)
2외래키(foreign key)
3기본키(primary key)
4후보키(candidate key)
정답 및 해설

유일성은 만족하지만 최소성은 만족하지 않는 키는 슈퍼키다.

후보키는 유일성과 최소성을 모두 만족하는 속성 집합이고, 슈퍼키는 유일성만 갖추면 되므로 불필요한 속성이 덧붙어 있어도 된다.

  • 외래키: 다른 릴레이션의 기본키를 참조하는 속성으로, 유일성을 요구하지 않는다.
  • 기본키: 후보키 중 선택된 하나이므로 최소성을 만족한다.
  • 후보키: 유일성과 최소성을 모두 만족해야 한다.
문제 6
두 릴레이션 R과 S의 차수(degree)와 카디널리티(cardinality)가 다음과 같다. R과 S에 이름과 도메인이 동일한 속성은 3개이고, 이들 공통 속성의 값이 모두 일치하는 투플의 조합이 5개일 때, 다음 설명 중 옳은 것은? (단, R과 S 사이에는 3개의 공통 속성 외에 도메인이 동일한 속성은 존재하지 않는다)
릴레이션차수카디널리티
R55
S1010
1S와 R의 디비전(division), 즉 S ÷ R의 결과 릴레이션의 차수는 5이다.
2S와 R의 차집합(difference), 즉 S - R의 결과 릴레이션의 카디널리티는 5이다.
3R과 S의 자연 조인(natural join), 즉 R ⋈N S의 결과 릴레이션의 차수는 12이다.
4R과 S의 카티션 프로덕트(Cartesian product), 즉 R × S의 결과 릴레이션의 차수는 12이고, 카디널리티는 50이다.
정답 및 해설

자연 조인은 공통 속성을 한 번만 남기므로 결과 차수가 12라는 설명이 옳다.

공통 속성 3개가 중복 제거되어 5+10−3=125+10-3=12개 속성이 남는다.

  • S ÷ R의 차수 5: 디비전은 R의 모든 속성이 S에 포함되어야 정의되는데, R의 속성 중 2개는 S에 없으므로 연산이 성립하지 않는다.
  • S − R의 카디널리티 5: 차집합은 두 릴레이션이 합병 가능(차수·도메인 일치)해야 하는데 차수가 5와 10으로 달라 수행할 수 없다.
  • R × S의 차수 12: 카티션 프로덕트는 속성을 모두 합쳐 차수가 5+10=155+10=15이고, 카디널리티만 5×10=505\times 10=50이 맞다.
문제 7
다음 릴레이션에서 속성(A, B, C, D) 간 함수 종속을 화살표(→)로 표현할 때, 성립하는 것만을 모두 고르면? (단, 아래 투플을 기준으로 판단한다)
ABCD
1371
2572
3371
4343
5972
ㄱ. A → B  ㄴ. B → C
ㄷ. C → D  ㄹ. D → C
1ㄱ, ㄴ
2ㄱ, ㄷ
3ㄱ, ㄹ
4ㄴ, ㄹ
정답 및 해설

투플 기준으로 성립하는 함수 종속은 A → B와 D → C이다.

X → Y는 X 값이 같은 투플끼리 Y 값도 같아야 성립한다. A는 모든 투플에서 값이 달라 A → B가 성립하고, D 값 1·2·3에는 C 값이 각각 7·7·4로 하나씩만 대응한다.

  • B → C: B가 3인 투플들의 C가 7과 4로 달라 성립하지 않는다.
  • C → D: C가 7인 투플들의 D가 1과 2로 달라 성립하지 않는다.
문제 8
다음과 같은 키 값의 삽입 순서에 따라 B-트리를 만들 때, 루트(root) 노드에 저장되는 키 값은? (단, 한 노드에 최대로 저장되는 키의 개수는 2이다)
9, 4, 1, 6, 2, 11, 10, 5, 12
14
26
39
411
정답 및 해설

모든 키를 삽입하면 마지막 분할이 루트까지 전파되어 루트에는 9 하나만 남는다.

노드당 최대 2개이므로 키가 3개가 되면 가운데 키를 부모로 올린다.
9, 4 → [4, 9] / 1 → [1, 4, 9] 분할, 루트 [4]
6 → [6, 9] / 2 → [1, 2] / 11 → [6, 9, 11] 분할, 9 상승 → 루트 [4, 9]
10 → [10, 11] / 5 → [5, 6]
12 → [10, 11, 12] 분할, 11 상승 → 루트 [4, 9, 11] 넘침 → 9가 새 루트

최종 트리는 루트 [9], 둘째 레벨 [4]·[11], 리프 [1, 2]·[5, 6]·[10]·[12]이다.

  • 4: 처음에는 루트였지만 루트 분할 후 왼쪽 자식으로 내려간다.
  • 6: 리프 [5, 6]에 남는다.
  • 11: 루트로 올라갔다가 루트 분할 때 오른쪽 자식에 남는다.
문제 9
트랜잭션 T1, T2가 수행되는 다음 스케줄에서 X, M, N의 초깃값이 각각 100, 20, 50일 때, 트랜잭션 수행 후 (가) 위치에서 X의 최종 결과 값은?
시간T1T2
↓read(X)
X = X + M
write(X)
read(X)
rollback
X = X - N
write(X) --- (가)
150
270
3100
4120
정답 및 해설

T2T_2가 철회 전의 값 120을 읽는 오손 읽기가 일어나므로 (가)에서 X의 최종 값은 70이다.

T1T_1: X = 100 + 20 = 120 기록
T2T_2: read(X) → 120
T1T_1 rollback → X를 100으로 복원
T2T_2: X = 120 − 50 = 70 → write(X)로 70 기록

  • 50: 복원된 100에서 N을 뺀 값으로, T2T_2가 철회 이전에 이미 120을 읽었다는 점을 놓친 것이다.
  • 100: 철회 직후의 값이지만 이후 T2T_2의 write가 덮어쓴다.
  • 120: T1T_1이 쓴 중간값으로, T2T_2의 감산이 반영되지 않았다.
문제 10
다음 두 릴레이션 R과 S의 세미조인(semi join), 즉 R ⋉ S의 결과 릴레이션의 투플과 속성의 수는?
R
ABC
123
638
948
S
BDE
234
245
7810
투플 수 속성 수
11 3
22 3
31 5
42 5
정답 및 해설

R ⋉ S는 S와 조인되는 R의 투플만 R의 속성으로 남기므로 결과는 투플 1개, 속성 3개다.

공통 속성 B에서 S의 값은 2와 7이다. R의 B 값 2·3·4 중 2만 일치하므로 (1, 2, 3)만 남고, 결과 스키마는 R의 속성 A, B, C 그대로다.

  • 투플 2개: B가 3, 4인 R의 투플은 S에 짝이 없어 제외된다.
  • 속성 5개: 자연 조인의 차수에 해당하며, 세미조인은 S의 속성 D, E를 붙이지 않는다.
문제 11
다음 E-R 다이어그램을 릴레이션 스키마로 바르게 변환한 것은? (단, 밑줄로 표기된 속성은 기본키를 의미하며 k, m, n은 1보다 큰 자연수이다)

1상품(상품번호, 상품명, 단가, 제조업체명, 공급일자, 공급량)
제조업체(제조업체명, 전화번호)
회원(회원아이디, 이름, 등급)
주문(회원아이디, 상품번호, 주문번호, 주문수량, 주문일자)
2상품(상품번호, 상품명, 단가, 제조업체명, 공급일자, 공급량)
제조업체(제조업체명, 전화번호)
회원(회원아이디, 이름, 등급)
주문(주문번호, 주문수량, 주문일자)
3상품(상품번호, 상품명, 단가)
제조업체(제조업체명, 전화번호, 상품번호, 공급일자, 공급량)
회원(회원아이디, 이름, 등급)
주문(주문번호, 주문수량, 주문일자)
4상품(상품번호, 상품명, 단가)
제조업체(제조업체명, 전화번호, 상품번호, 공급일자, 공급량)
회원(회원아이디, 이름, 등급)
주문(회원아이디, 상품번호, 주문번호, 주문수량, 주문일자)
정답 및 해설

N:1 관계인 공급은 N쪽 상품 릴레이션에 외래키와 관계 속성을 흡수하고, M:N 관계인 주문은 양쪽 기본키를 복합 기본키로 하는 별도 릴레이션으로 만든 스키마가 바른 변환이다.

공급은 상품(n)과 제조업체(1) 사이의 N:1 관계이므로 상품 릴레이션에 제조업체명을 외래키로 두고, 관계 속성인 공급일자·공급량도 함께 상품 쪽에 넣는다. 주문은 상품(m)과 회원(k) 사이의 M:N 관계이므로 회원아이디와 상품번호를 묶은 복합키를 기본키로 하고 주문번호·주문수량·주문일자를 속성으로 갖는 주문 릴레이션을 따로 둔다.

  • 주문 릴레이션을 주문번호 하나만 기본키로 두고 회원아이디·상품번호를 빼는 변환은 M:N 관계의 양쪽 개체를 참조할 수 없어 관계 자체가 사라진다.
  • 상품번호와 공급일자·공급량을 제조업체 릴레이션에 넣는 변환은 1쪽에 N쪽 키를 둔 것이라, 한 제조업체가 여러 상품을 공급하면 하나의 튜플에 담을 수 없다.
  • 제조업체 쪽에 공급 정보를 두고 주문만 복합키로 만든 변환도 공급 관계의 방향이 뒤바뀌어 같은 이유로 성립하지 않는다.
문제 12
트랜잭션에 대한 설명으로 옳지 않은 것은?
1지속성(durability)은 완료된 트랜잭션이 갱신한 데이터를 데이터베이스에 영구적으로 보존하는 것을 의미한다.
2원자성(atomicity)은 트랜잭션 연산이 데이터베이스에 모두 반영되지 않고 개별 반영되는 것을 의미한다.
3격리성(isolation)은 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 의미한다.
4일관성(consistency)은 트랜잭션을 수행하기 전과 수행한 후에 데이터베이스가 항상 일관된 상태를 유지하는 것을 의미한다.
정답 및 해설

원자성은 트랜잭션 연산이 모두 반영되거나 전혀 반영되지 않아야 함을 뜻하므로, 개별 반영된다는 설명이 옳지 않다.

일부 연산만 수행된 채 중단되면 회복 과정에서 철회(undo)하여 부분 반영을 남기지 않는다.

  • 지속성: 완료된 트랜잭션의 결과를 영구적으로 보존한다는 설명이 옳다.
  • 격리성: 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들지 못하게 한다는 설명이 옳다.
  • 일관성: 수행 전후 데이터베이스가 일관된 상태를 유지한다는 설명이 옳다.
문제 13
다음과 같이 ‘학과’와 ‘학생’ 테이블을 생성하고 UPDATE 질의문 (가)를 실행할 때, 이에 대한 설명으로 옳은 것은?
CREATE TABLE 학과 (
학과명 VARCHAR(20), 전화번호 VARCHAR(20),
PRIMARY KEY(학과명)
);

CREATE TABLE 학생 (
학번 VARCHAR(20), 이름 VARCHAR(20),
학과 VARCHAR(20), PRIMARY KEY(학번),
FOREIGN KEY(학과) REFERENCES 학과(학과명)
);

UPDATE 학생 SET 학과 = ‘AI소프트웨어학과’ WHERE 학과
=‘소프트웨어학과’; --- (가)
1질의문 (가)를 실행하면 개체 무결성 제약조건을 위반하게 된다.
2‘학생’ 테이블에 학과가 ‘AI소프트웨어학과’인 투플이 존재하면 질의문 (가)는 실행되지 않는다.
3질의문 (가)는 ‘학생’ 테이블에 있는 모든 투플의 학과 값을 ‘AI소프트웨어학과’로 변경한다.
4학과명이 ‘AI소프트웨어학과’인 투플이 ‘학과’ 테이블에 존재하지 않으면, 질의문 (가)는 참조 무결성 제약조건을 위반한다.
정답 및 해설

외래키 학과는 학과 테이블의 학과명을 참조하므로, ‘AI소프트웨어학과’가 학과 테이블에 없으면 (가)는 참조 무결성 제약조건을 위반한다.

외래키 값은 NULL이거나 참조 테이블의 기본키 값 중 하나여야 한다. 따라서 바꿀 값이 학과 테이블에 먼저 존재해야 갱신이 허용된다.

  • 개체 무결성 위반: 개체 무결성은 기본키(학번)의 NULL·중복 금지인데, (가)는 기본키를 바꾸지 않는다.
  • 학생 테이블에 같은 학과 투플이 이미 있으면 실행 불가: 학과 속성은 기본키도 UNIQUE도 아니므로 같은 값이 여러 투플에 있어도 된다.
  • 모든 투플의 학과 변경: WHERE 조건에 따라 학과가 ‘소프트웨어학과’인 투플만 변경된다.
문제 14
트랜잭션 T1, T2, T3가 다음과 같은 순서로 스케줄링 될 경우, 이와 동치인 직렬 스케줄은?
시간T1T2T3
↓read(y)
read(z)
read(x)
write(x)
write(y)
write(z)
read(z)
read(x)
read(y)
write(y)
1T1 → T2 → T3
2T1 → T3 → T2
3T2 → T1 → T3
4동치인 직렬 스케줄이 없음
정답 및 해설

충돌 연산의 선후 관계가 모두 한 방향이어서 이 스케줄은 T1→T2→T3T_1 \rightarrow T_2 \rightarrow T_3 직렬 스케줄과 충돌 동치다.

충돌 쌍을 찾으면 다음과 같다.
y: T1T_1의 read(y)·write(y)가 T2T_2의 read(y)·write(y)보다 먼저 → T1→T2T_1 \rightarrow T_2
z: T1T_1의 write(z) 뒤에 T3T_3의 read(z) → T1→T3T_1 \rightarrow T_3
x: T2T_2의 write(x) 뒤에 T3T_3의 read(x) → T2→T3T_2 \rightarrow T_3

선행 그래프에 사이클이 없고 위상 정렬 결과는 하나뿐이다.

  • T1→T3→T2T_1 \rightarrow T_3 \rightarrow T_2: x에 대한 충돌로 T2T_2가 T3T_3보다 앞서야 한다.
  • T2→T1→T3T_2 \rightarrow T_1 \rightarrow T_3: y에 대한 충돌로 T1T_1이 T2T_2보다 앞서야 한다.
  • 동치인 직렬 스케줄 없음: 사이클이 없으므로 충돌 직렬 가능하다.
문제 15
다음 ‘사원’과 ‘부서’ 테이블에 대한 SQL문의 수행 결과가 다른 것은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
사원
사번이름부서번호급여직속상사
1Kim10500NULL
2Kwon205003
3Park20700NULL
4Choi306001
5Cho103003
6Lee205504
7Yoon304003
8Chae206501
9Nam104304
10Ha30200NULL
부서
부서번호부서이름사무실위치
10인사과101호
20개발팀102호
30총무과103호
1
SELECT 이름
FROM 사원
WHERE 이름 LIKE ‘_a%’ AND 급여 > 500;
2
SELECT E.이름
FROM 사원 AS E INNER JOIN 부서 AS D ON E.부서번호 = D.부서번호
WHERE D.사무실위치 = ‘102호’ AND E.직속상사 is NULL;
3
SELECT 이름
FROM 사원
WHERE 이름 NOT IN (SELECT 이름 FROM 사원
WHERE 급여 < ANY (SELECT 급여 FROM 사원));
4
SELECT 이름
FROM 사원
WHERE 부서번호 IN (SELECT 부서번호 FROM 사원
GROUP BY 부서번호
HAVING COUNT(*) > 3);
정답 및 해설

나머지 세 질의는 결과가 Park 한 명이지만, 인원이 3명을 넘는 부서의 사원을 찾는 질의는 Kwon, Park, Lee, Chae 4명을 반환하여 결과가 다르다.

부서별 인원은 부서번호 10이 3명, 20이 4명, 30이 3명이므로 COUNT(*) > 3을 만족하는 부서는 20뿐이고, 그 소속 사원 전원이 결과가 된다.

  • LIKE ‘_a%’ AND 급여 > 500: 두 번째 글자가 a인 사원은 Park·Nam·Ha이고, 급여가 500을 넘는 사원은 Park뿐이다.
  • 102호이면서 직속상사가 NULL: 102호는 개발팀(부서번호 20)이며 그중 직속상사가 NULL인 사원은 Park이다.
  • NOT IN과 < ANY: 급여 < ANY(전체 급여)는 최고 급여 700보다 적은 사원 전원이므로, 이를 제외하면 최고 급여자 Park만 남는다.
문제 16
데이터베이스에 반영이 완료된 레코드만 읽게 하는 방법(READ COMMITTED)으로 해결할 수 있는 동시 처리(concurrent processing) 문제는?
1오손 읽기(dirty read)
2유령 읽기(phantom read)
3직렬 읽기(serialized read)
4반복 불가능 읽기(non-repeatable read)
정답 및 해설

READ COMMITTED는 커밋된 데이터만 읽게 하므로 오손 읽기(dirty read)를 해결한다.

오손 읽기는 철회될 수 있는 미완료 트랜잭션의 갱신값을 읽는 문제다. 다른 트랜잭션이 읽은 뒤 커밋한 갱신·삽입으로 생기는 문제는 더 높은 격리 수준이 필요하다.

  • 유령 읽기: 같은 조건으로 다시 검색할 때 새로 삽입된 투플이 나타나는 문제로, SERIALIZABLE 수준에서 해결된다.
  • 직렬 읽기: 격리 수준이 다루는 동시 처리 문제가 아니다.
  • 반복 불가능 읽기: 같은 데이터를 다시 읽을 때 그 사이 커밋된 갱신으로 값이 달라지는 문제로, REPEATABLE READ 이상이 필요하다.
문제 17
다음 테이블은 쇼핑몰의 판매자가 판매하는 상품과 해당 상품을 생산한 제조사에 대한 정보를 담고 있다. 테이블의 기본키가 (판매자ID, 상품)일 때, 다음 설명 중 옳은 것만을 모두 고르면? (단, 아래 투플을 기준으로 판단한다)
판매자ID상품제조사
0001컴퓨터A
0001모니터B
0002컴퓨터A
0002모니터C
0003모니터C
0003컴퓨터D
ㄱ. 이 테이블은 제2정규형의 조건을 만족한다.
ㄴ. 이 테이블은 제3정규형의 조건을 만족하지 않는다.
ㄷ. 제조사 E가 모니터를 생산한다는 정보를 판매자ID 없이 투플로 추가하더라도 삽입 이상이 발생하지 않는다.
ㄹ. 판매자ID가 0001인 판매자가 모니터를 더 이상 판매하지 않아 해당 투플을 삭제한다면 삭제 이상이 발생할 수 있다.
ㅁ. 제조사 B가 생산하는 상품이 모니터에서 노트북으로 변경된다면 갱신 이상이 발생할 수 있다.
1ㄱ, ㄷ
2ㄱ, ㄹ
3ㄴ, ㅁ
4ㄹ, ㅁ
정답 및 해설

옳은 것은 ㄱ, ㄹ이다.

투플을 보면 기본키에 의한 종속 외에 제조사 → 상품(A·D는 컴퓨터, B·C는 모니터)이 성립한다. 기본키의 일부만으로는 제조사가 정해지지 않아 부분 종속이 없고, 종속되는 상품이 주요 속성이라 제3정규형까지 만족하지만 결정자 제조사가 후보키가 아니어서 BCNF는 위반한다.

  • ㄱ(옳음): 판매자ID나 상품 하나만으로는 제조사가 정해지지 않으므로 부분 함수 종속이 없다.
  • ㄴ(틀림): 제조사 → 상품에서 종속되는 상품이 주요 속성이므로 제3정규형 조건에 어긋나지 않는다.
  • ㄷ(틀림): 판매자ID 없이 넣으면 기본키 일부가 NULL이 되어 삽입할 수 없으므로 삽입 이상이 발생한다.
  • ㄹ(옳음): 제조사 B의 정보는 이 투플에만 있어, 삭제하면 B가 모니터를 생산한다는 사실까지 사라진다.
  • ㅁ(틀림): B가 나오는 투플이 하나뿐이라 한 곳만 고치면 되므로 불일치가 생기지 않는다.
문제 18
릴레이션 R(A, B, C, D)에 다음과 같은 함수 종속성의 집합 F가 존재할 때, 후보키에 해당하는 것과 릴레이션 R이 만족하는 정규형만을 모두 고르면? (단, 이 릴레이션의 기본키는 (A, B)이며, 모든 속성의 도메인은 원자값(atomic value)으로 구성된다)
F = {(A, B) → C, (A, B) → D, C → B, D → A}
(가) (B, C)  (나) (B, D)  (다) (C, D)
ㄱ. 제1정규형  ㄴ. 제2정규형
ㄷ. 제3정규형  ㄹ. 보이스/코드 정규형
후보키 정규형
1(가), (다) ㄱ, ㄴ, ㄷ
2(나), (다) ㄱ, ㄴ, ㄷ
3(가), (나) ㄱ, ㄴ, ㄷ, ㄹ
4(나), (다) ㄱ, ㄴ, ㄷ, ㄹ
정답 및 해설

후보키는 (B, D)와 (C, D)이고, 모든 속성이 주요 속성이어서 R은 제3정규형까지 만족한다.

(B, D)의 폐포: D → A로 A를 얻고, (A, B) → C, (A, B) → D로 전체가 된다.
(C, D)의 폐포: C → B, D → A로 A, B를 얻어 전체가 된다.
B, C, D 각각의 폐포는 전체가 아니므로 두 키 모두 최소성을 만족한다.

A·B·C·D가 모두 어떤 후보키에 속하므로 제3정규형은 성립하지만, C → B의 결정자 C가 슈퍼키가 아니므로 BCNF는 위반한다.

  • (B, C): C → B는 B만 다시 얻을 뿐 A, D를 결정하지 못해 후보키가 아니다.
  • 보이스/코드 정규형 포함: C → B, D → A의 결정자가 슈퍼키가 아니므로 BCNF가 아니다.
문제 19
‘학생’ 릴레이션의 과목번호는 ‘과목’ 릴레이션의 과목번호를 참조하는 외래키이다. 다음 설명 중 옳지 않은 것은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
학생
학번이름과목번호
1111을지문덕200
2222신사임당100
3333이율곡300
4444유관순400
5555김만덕400
과목
과목번호과목명담당교수개설학과
100인공지능개론안창호AI소프트웨어학과
200빅데이터분석김구컴퓨터공학과
300머신러닝윤봉길AI소프트웨어학과
400생성형AI김좌진AI소프트웨어학과
1“DELETE FROM 과목 WHERE 과목번호 = 400;”을 실행하면 참조 무결성 제약조건을 위반한다.
2“UPDATE 학생 SET 과목번호 = 500 WHERE 학번 = 3333;”을 실행하면 참조 무결성 제약조건을 위반한다.
3“INSERT INTO 학생(학번, 이름, 과목번호) VALUES (5555, ‘홍길동’, 200);”을 실행하면 기본키 제약조건을 위반한다.
4“INSERT INTO 과목(과목번호, 과목명, 담당교수, 개설학과) VALUES (NULL, ‘데이터베이스’, ‘안중근’, ‘AI소프트웨어학과’);”를 실행하면 참조 무결성 제약조건을 위반한다.
정답 및 해설

기본키에 NULL을 넣는 것은 개체 무결성 위반이므로, 과목번호가 NULL인 과목 삽입을 참조 무결성 위반이라 한 설명이 옳지 않다.

참조 무결성은 외래키 값이 참조 테이블의 기본키 값 중 하나(또는 NULL)여야 한다는 제약이고, 기본키의 NULL 금지는 개체 무결성이다.

  • 과목 400 삭제: 유관순·김만덕이 참조하고 있으므로 참조 무결성 위반이다.
  • 학번 3333의 과목번호를 500으로 변경: 과목 테이블에 500이 없으므로 참조 무결성 위반이다.
  • 학번 5555로 학생 삽입: 김만덕의 학번과 중복되어 기본키 제약 위반이다.
문제 20
RAID에 대한 설명으로 옳지 않은 것은?
1RAID 0은 여러 개의 디스크에 데이터를 분산 저장한다.
2RAID 1은 디스크의 모든 데이터를 별도의 디스크에 복제하여 유지한다.
3RAID 5는 데이터와 패리티 정보를 여러 디스크에 분산 저장한다.
4RAID 6은 데이터를 저장하는 디스크와 패리티를 저장하는 디스크를 분리하여 사용한다.
정답 및 해설

RAID 6은 데이터와 이중 패리티를 여러 디스크에 분산 저장하므로, 패리티 전용 디스크를 분리한다는 설명이 옳지 않다.

패리티 전용 디스크를 두는 방식은 RAID 3·4이고, RAID 5·6은 패리티를 분산해 쓰기 병목을 줄인다. RAID 6은 서로 다른 패리티 2개로 디스크 2개의 동시 장애까지 견딘다.

  • RAID 0: 데이터를 여러 디스크에 나누어 쓰는 스트라이핑이다.
  • RAID 1: 모든 데이터를 다른 디스크에 복제하는 미러링이다.
  • RAID 5: 데이터와 패리티를 모든 디스크에 분산 저장한다.
문제 21
즉시 갱신 전략을 이용하는 회복 시스템에서 다음과 같은 로그 기록을 사용하여 복구 과정을 수행한 내용 중 옳지 않은 것은?
<T1, start>
<T1, A, 30, 60>
<T2, start>
<T1, commit>
<T3, start>
<T4, start>
<checkpoint, {T2, T3, T4}>
<T3, C, 15, 45>
<T3, commit>
<T5, start>
<T2, B, 10, 50>
<T4, A, 60, 90>
<T4, abort>
<T5, D, 20, 40>
-- 시스템 장애 발생 --
1트랜잭션 T1은 복구 작업을 수행할 필요가 없다.
2트랜잭션 T2는 undo를 수행하여 B값으로 10을 저장한다.
3트랜잭션 T3는 undo를 수행하여 C값으로 15를 저장한다.
4트랜잭션 T5는 undo를 수행하여 D값으로 20을 저장한다.
정답 및 해설

T3T_3는 체크포인트 이후 커밋했으므로 undo가 아니라 redo를 수행해 C에 새 값 45를 저장해야 한다.

즉시 갱신 회복에서는 체크포인트 이전에 커밋한 트랜잭션은 무시하고, 이후 커밋한 트랜잭션은 redo(새 값), 커밋하지 못한 트랜잭션은 undo(이전 값)를 수행한다.

  • T1T_1: 체크포인트 이전에 커밋되어 이미 반영되었으므로 복구가 필요 없다.
  • T2T_2: 커밋 기록이 없으므로 undo하여 B를 이전 값 10으로 되돌린다.
  • T5T_5: 커밋 기록이 없으므로 undo하여 D를 이전 값 20으로 되돌린다.
문제 22
데이터베이스 관리자(DBA)와 일반 사용자(Kim, Lee, Park, Choi, Cho, Hong)가 데이터베이스 권한 관리를 위한 SQL문을 다음 순서대로 모두 수행하였다. 이에 대한 설명으로 옳은 것은? (단, SQL문 앞의 ‘OOO>’는 해당 문장을 수행한 사람을 의미하고, 각 SQL문의 문법(syntax) 오류는 발생하지 않는다)
DBA> GRANT SELECT ON 고객 TO Kim WITH
GRANT OPTION;
DBA> GRANT SELECT ON 고객 TO Lee WITH
GRANT OPTION;
Kim> GRANT SELECT ON 고객 TO Park WITH
GRANT OPTION;
Lee> GRANT SELECT ON 고객 TO Choi WITH
GRANT OPTION;
DBA> REVOKE SELECT ON 고객 FROM Kim
CASCADE;
DBA> REVOKE SELECT ON 고객 FROM Lee
RESTRICT;
1Kim은 고객 테이블에 대한 검색(SELECT) 권한을 가진다.
2Lee는 고객 테이블에 대한 검색(SELECT) 권한을 가진다.
3Park은 “GRANT SELECT ON 고객 TO Cho”를 실행할 수 있다.
4Choi는 “GRANT SELECT ON 고객 TO Hong”을 실행할 수 없다.
정답 및 해설

Lee에 대한 RESTRICT 회수는 Lee가 이미 Choi에게 권한을 넘겼기 때문에 거부되므로, Lee는 여전히 SELECT 권한을 가진다.

CASCADE는 연쇄적으로 넘겨준 권한까지 함께 회수하고, RESTRICT는 넘겨준 권한이 있으면 회수 자체를 거부한다. 따라서 Kim과 Park은 권한을 잃고, Lee와 Choi는 권한을 유지한다.

  • Kim의 검색 권한 보유: CASCADE로 회수되어 권한이 없다.
  • Park이 Cho에게 부여 가능: Kim의 권한이 연쇄 회수되면서 Park의 권한도 사라졌다.
  • Choi가 Hong에게 부여 불가: Lee의 회수가 거부되어 Choi는 GRANT OPTION이 포함된 권한을 그대로 가지므로 부여할 수 있다.
문제 23
뷰(view)에 대한 설명으로 옳지 않은 것은?
1사용자의 요구에 맞게 가공하여 만들어 쓸 수 있다.
2사용자별로 데이터 접근을 제한하여 보안성을 높일 수 있다.
3자주 사용되는 질의를 뷰로 미리 정의해 놓고 재사용할 수 있다.
4뷰의 기본적인 활용 용도는 검색(SELECT)이며, 뷰를 통한 원본 테이블의 데이터 조작(INSERT 등)은 불가능하다.
정답 및 해설

뷰를 통한 원본 테이블의 데이터 조작이 전면 불가능하다는 설명이 옳지 않다.

뷰에 대한 조작은 원본 테이블에 대한 조작으로 변환되므로, 단일 테이블에서 기본키를 포함하고 집계·DISTINCT·GROUP BY가 없는 갱신 가능한 뷰는 INSERT·UPDATE·DELETE가 허용된다.

  • 사용자 요구에 맞게 가공: 필요한 속성·투플만 골라 논리적 테이블을 만들 수 있다.
  • 사용자별 접근 제한: 뷰에 보이는 데이터만 허용해 보안을 높인다.
  • 자주 쓰는 질의 재사용: 복잡한 질의를 뷰로 정의해 두면 간단히 다시 쓸 수 있다.
문제 24
NoSQL 데이터베이스에 대한 설명으로 옳지 않은 것은?
1NoSQL 시스템으로 MongoDB 등이 있다.
2비정형 데이터를 포함하는 빅데이터를 효율적으로 저장하고 처리할 수 있다.
3대표적인 데이터 모델에는 키-값, 문서 기반, 컬럼 기반, 그래프 기반 데이터 모델이 있다.
4CAP 이론은 병행성(Concurrency), 가용성(Availability), 분할 감내성(Partition tolerance)을 모두 보장할 수는 없다는 성질을 말한다.
정답 및 해설

CAP 이론의 C는 병행성이 아니라 일관성(Consistency)이므로 옳지 않다.

CAP 이론은 분산 시스템이 일관성·가용성·분할 감내성 세 가지를 동시에 모두 보장할 수 없다는 이론이다.

  • MongoDB: 대표적인 문서 기반 NoSQL 시스템이다.
  • 비정형 빅데이터 처리: 스키마가 유연하고 수평 확장이 쉬워 대용량 비정형 데이터에 적합하다.
  • 키-값·문서·컬럼·그래프 모델: NoSQL의 대표 데이터 모델 분류다.
문제 25
분산 데이터베이스 시스템에 대한 설명으로 옳지 않은 것은?
1중앙 집중식 데이터베이스 시스템에 비해 확장이 용이하다.
2중앙 집중식 데이터베이스 시스템에 비해 더 많은 구축 비용이 소요된다.
3한 지역에서 장애가 발생하더라도 전체 시스템이 작업을 계속 수행할 수 있다.
4수직적 단편화는 관계대수 연산인 셀렉트(select)를 통해 릴레이션을 속성 단위로 분할하여 저장하는 것을 말한다.
정답 및 해설

속성 단위로 분할하는 수직적 단편화는 셀렉트가 아니라 프로젝트(project) 연산으로 수행하므로 옳지 않다.

셀렉트는 투플(행)을 고르는 연산이라 수평적 단편화에 쓰이고, 프로젝트는 속성(열)을 고르는 연산이라 수직적 단편화에 쓰인다.

  • 확장 용이: 지역(사이트)을 추가하는 방식으로 점진적 확장이 쉽다.
  • 구축 비용 증가: 통신망과 분산 제어 소프트웨어가 필요해 비용이 더 든다.
  • 지역 장애 시 작업 계속: 데이터 분산·중복으로 가용성과 신뢰성이 높다.
7급 국가직 데이터베이스론 기출문제모두CBT · moducbt.com
24년 1회차
총 25문항 · 객관식 · 정답·해설 포함
문제 1
데이터베이스의 일반적인 특징으로 옳지 않은 것은?
1데이터의 실시간 처리가 가능하다.
2여러 사용자가 동시에 이용할 수 있다.
3사용자는 데이터의 저장 주소나 위치를 통해 데이터를 참조한다.
4동적인 특징이 있어 데이터를 계속 삽입, 삭제, 갱신하여 현재의 정확한 데이터를 유지한다.
정답 및 해설

데이터베이스는 저장 주소가 아니라 데이터의 내용(값)으로 참조하므로, 주소나 위치로 참조한다는 설명이 옳지 않다.

데이터베이스의 특징은 실시간 접근성, 계속적 변화, 동시 공용, 내용에 의한 참조로 정리된다. 사용자는 물리적 위치를 몰라도 조건(값)만으로 원하는 데이터를 찾는다.

  • 실시간 처리 가능: 질의에 즉시 응답하는 실시간 접근성에 해당한다.
  • 여러 사용자의 동시 이용: 동시 공용 특징이다.
  • 삽입·삭제·갱신으로 현재의 정확한 데이터 유지: 계속적 변화(동적 특성)에 해당한다.
문제 2
데이터베이스 관리자(DBA)의 주요 업무와 관련된 설명으로 옳지 않은 것은?
1데이터 사전과 같은 시스템 데이터베이스를 관리한다.
2DML을 사용하여 데이터 접근 권한을 사용자에게 부여한다.
3데이터베이스를 물리적으로 저장하기 위한 레코드 구조를 설계한다.
4사용자의 요구사항을 분석하여 데이터베이스의 구성요소를 결정한다.
정답 및 해설

접근 권한 부여는 DML이 아니라 DCL(GRANT)로 수행하므로, DML로 권한을 부여한다는 설명이 옳지 않다.

SQL은 정의어(DDL), 조작어(DML: SELECT·INSERT·UPDATE·DELETE), 제어어(DCL: GRANT·REVOKE 등)로 나뉘며, 권한 관리는 DCL의 역할이다.

  • 데이터 사전 등 시스템 데이터베이스 관리: 메타데이터 관리는 DBA의 업무다.
  • 물리적 저장을 위한 레코드 구조 설계: 저장 구조와 접근 경로를 정하는 물리적 설계도 DBA가 맡는다.
  • 요구사항 분석으로 구성요소 결정: 스키마를 정의하는 것은 DBA의 핵심 업무다.
문제 3
관계형 데이터베이스에 대한 설명으로 옳지 않은 것은?
1릴레이션에서 속성의 순서는 중요하지 않지만, 투플의 순서는 중요하다.
2제2정규형에서 기본키에 대해 이행적 종속성을 제거하면 제3정규형이 된다.
3각 속성은 특정 도메인에서 값을 가져야 하며, 속성 간 도메인은 다를 수 있다.
4모든 투플은 기본키에 의해 고유하게 식별되며, 기본키는 릴레이션 내에서 유일성이 보장된다.
정답 및 해설

릴레이션은 투플의 집합이므로 투플의 순서도 의미가 없다. 투플 순서가 중요하다는 설명이 옳지 않다.

릴레이션은 투플의 유일성, 투플과 속성의 무순서성, 속성값의 원자성을 특성으로 가진다.

  • 제2정규형에서 이행적 종속 제거 시 제3정규형: 제3정규형의 정의와 같다.
  • 속성은 도메인에서 값을 가지며 속성마다 도메인이 다를 수 있음: 옳은 설명이다.
  • 기본키로 투플을 고유하게 식별하고 유일성 보장: 기본키의 성질이다.
문제 4
외부 스키마에 대한 설명으로 옳지 않은 것은?
1서브 스키마라고도 한다.
2하나의 데이터베이스에 여러 개가 존재할 수 있다.
3데이터베이스가 외부 저장장치에 저장되는 방법을 정의한다.
4개별 사용자의 시각에서 본 데이터베이스의 논리적 구조이다.
정답 및 해설

데이터가 저장장치에 저장되는 방법을 정의하는 것은 내부 스키마이므로, 이를 외부 스키마의 설명으로 든 것이 옳지 않다.

3단계 스키마에서 외부 스키마는 사용자 관점의 논리 구조, 개념 스키마는 조직 전체의 논리 구조, 내부 스키마는 물리적 저장 구조를 정의한다.

  • 서브 스키마라고도 함: 외부 스키마의 다른 이름이다.
  • 하나의 데이터베이스에 여러 개 존재: 사용자·응용마다 서로 다른 외부 스키마를 둘 수 있다.
  • 개별 사용자 시각의 논리적 구조: 외부 스키마의 정의 그대로다.
문제 5
다음과 같은 특징에 해당하는 키(key)는?
○ 릴레이션에서 투플을 식별할 수 있는 유일성(uniqueness)을 만족시키는 속성의 집합
○ 유일성을 갖는 속성의 최소성(minimality)은 만족시키지 못함
1슈퍼키(super key)
2외래키(foreign key)
3기본키(primary key)
4후보키(candidate key)
정답 및 해설

유일성은 만족하지만 최소성은 만족하지 않는 키는 슈퍼키다.

후보키는 유일성과 최소성을 모두 만족하는 속성 집합이고, 슈퍼키는 유일성만 갖추면 되므로 불필요한 속성이 덧붙어 있어도 된다.

  • 외래키: 다른 릴레이션의 기본키를 참조하는 속성으로, 유일성을 요구하지 않는다.
  • 기본키: 후보키 중 선택된 하나이므로 최소성을 만족한다.
  • 후보키: 유일성과 최소성을 모두 만족해야 한다.
문제 6
두 릴레이션 R과 S의 차수(degree)와 카디널리티(cardinality)가 다음과 같다. R과 S에 이름과 도메인이 동일한 속성은 3개이고, 이들 공통 속성의 값이 모두 일치하는 투플의 조합이 5개일 때, 다음 설명 중 옳은 것은? (단, R과 S 사이에는 3개의 공통 속성 외에 도메인이 동일한 속성은 존재하지 않는다)
릴레이션차수카디널리티
R55
S1010
1S와 R의 디비전(division), 즉 S ÷ R의 결과 릴레이션의 차수는 5이다.
2S와 R의 차집합(difference), 즉 S - R의 결과 릴레이션의 카디널리티는 5이다.
3R과 S의 자연 조인(natural join), 즉 R ⋈N S의 결과 릴레이션의 차수는 12이다.
4R과 S의 카티션 프로덕트(Cartesian product), 즉 R × S의 결과 릴레이션의 차수는 12이고, 카디널리티는 50이다.
정답 및 해설

자연 조인은 공통 속성을 한 번만 남기므로 결과 차수가 12라는 설명이 옳다.

공통 속성 3개가 중복 제거되어 5+10−3=125+10-3=12개 속성이 남는다.

  • S ÷ R의 차수 5: 디비전은 R의 모든 속성이 S에 포함되어야 정의되는데, R의 속성 중 2개는 S에 없으므로 연산이 성립하지 않는다.
  • S − R의 카디널리티 5: 차집합은 두 릴레이션이 합병 가능(차수·도메인 일치)해야 하는데 차수가 5와 10으로 달라 수행할 수 없다.
  • R × S의 차수 12: 카티션 프로덕트는 속성을 모두 합쳐 차수가 5+10=155+10=15이고, 카디널리티만 5×10=505\times 10=50이 맞다.
문제 7
다음 릴레이션에서 속성(A, B, C, D) 간 함수 종속을 화살표(→)로 표현할 때, 성립하는 것만을 모두 고르면? (단, 아래 투플을 기준으로 판단한다)
ABCD
1371
2572
3371
4343
5972
ㄱ. A → B  ㄴ. B → C
ㄷ. C → D  ㄹ. D → C
1ㄱ, ㄴ
2ㄱ, ㄷ
3ㄱ, ㄹ
4ㄴ, ㄹ
정답 및 해설

투플 기준으로 성립하는 함수 종속은 A → B와 D → C이다.

X → Y는 X 값이 같은 투플끼리 Y 값도 같아야 성립한다. A는 모든 투플에서 값이 달라 A → B가 성립하고, D 값 1·2·3에는 C 값이 각각 7·7·4로 하나씩만 대응한다.

  • B → C: B가 3인 투플들의 C가 7과 4로 달라 성립하지 않는다.
  • C → D: C가 7인 투플들의 D가 1과 2로 달라 성립하지 않는다.
문제 8
다음과 같은 키 값의 삽입 순서에 따라 B-트리를 만들 때, 루트(root) 노드에 저장되는 키 값은? (단, 한 노드에 최대로 저장되는 키의 개수는 2이다)
9, 4, 1, 6, 2, 11, 10, 5, 12
14
26
39
411
정답 및 해설

모든 키를 삽입하면 마지막 분할이 루트까지 전파되어 루트에는 9 하나만 남는다.

노드당 최대 2개이므로 키가 3개가 되면 가운데 키를 부모로 올린다.
9, 4 → [4, 9] / 1 → [1, 4, 9] 분할, 루트 [4]
6 → [6, 9] / 2 → [1, 2] / 11 → [6, 9, 11] 분할, 9 상승 → 루트 [4, 9]
10 → [10, 11] / 5 → [5, 6]
12 → [10, 11, 12] 분할, 11 상승 → 루트 [4, 9, 11] 넘침 → 9가 새 루트

최종 트리는 루트 [9], 둘째 레벨 [4]·[11], 리프 [1, 2]·[5, 6]·[10]·[12]이다.

  • 4: 처음에는 루트였지만 루트 분할 후 왼쪽 자식으로 내려간다.
  • 6: 리프 [5, 6]에 남는다.
  • 11: 루트로 올라갔다가 루트 분할 때 오른쪽 자식에 남는다.
문제 9
트랜잭션 T1, T2가 수행되는 다음 스케줄에서 X, M, N의 초깃값이 각각 100, 20, 50일 때, 트랜잭션 수행 후 (가) 위치에서 X의 최종 결과 값은?
시간T1T2
↓read(X)
X = X + M
write(X)
read(X)
rollback
X = X - N
write(X) --- (가)
150
270
3100
4120
정답 및 해설

T2T_2가 철회 전의 값 120을 읽는 오손 읽기가 일어나므로 (가)에서 X의 최종 값은 70이다.

T1T_1: X = 100 + 20 = 120 기록
T2T_2: read(X) → 120
T1T_1 rollback → X를 100으로 복원
T2T_2: X = 120 − 50 = 70 → write(X)로 70 기록

  • 50: 복원된 100에서 N을 뺀 값으로, T2T_2가 철회 이전에 이미 120을 읽었다는 점을 놓친 것이다.
  • 100: 철회 직후의 값이지만 이후 T2T_2의 write가 덮어쓴다.
  • 120: T1T_1이 쓴 중간값으로, T2T_2의 감산이 반영되지 않았다.
문제 10
다음 두 릴레이션 R과 S의 세미조인(semi join), 즉 R ⋉ S의 결과 릴레이션의 투플과 속성의 수는?
R
ABC
123
638
948
S
BDE
234
245
7810
투플 수 속성 수
11 3
22 3
31 5
42 5
정답 및 해설

R ⋉ S는 S와 조인되는 R의 투플만 R의 속성으로 남기므로 결과는 투플 1개, 속성 3개다.

공통 속성 B에서 S의 값은 2와 7이다. R의 B 값 2·3·4 중 2만 일치하므로 (1, 2, 3)만 남고, 결과 스키마는 R의 속성 A, B, C 그대로다.

  • 투플 2개: B가 3, 4인 R의 투플은 S에 짝이 없어 제외된다.
  • 속성 5개: 자연 조인의 차수에 해당하며, 세미조인은 S의 속성 D, E를 붙이지 않는다.
문제 11
다음 E-R 다이어그램을 릴레이션 스키마로 바르게 변환한 것은? (단, 밑줄로 표기된 속성은 기본키를 의미하며 k, m, n은 1보다 큰 자연수이다)

1상품(상품번호, 상품명, 단가, 제조업체명, 공급일자, 공급량)
제조업체(제조업체명, 전화번호)
회원(회원아이디, 이름, 등급)
주문(회원아이디, 상품번호, 주문번호, 주문수량, 주문일자)
2상품(상품번호, 상품명, 단가, 제조업체명, 공급일자, 공급량)
제조업체(제조업체명, 전화번호)
회원(회원아이디, 이름, 등급)
주문(주문번호, 주문수량, 주문일자)
3상품(상품번호, 상품명, 단가)
제조업체(제조업체명, 전화번호, 상품번호, 공급일자, 공급량)
회원(회원아이디, 이름, 등급)
주문(주문번호, 주문수량, 주문일자)
4상품(상품번호, 상품명, 단가)
제조업체(제조업체명, 전화번호, 상품번호, 공급일자, 공급량)
회원(회원아이디, 이름, 등급)
주문(회원아이디, 상품번호, 주문번호, 주문수량, 주문일자)
정답 및 해설

N:1 관계인 공급은 N쪽 상품 릴레이션에 외래키와 관계 속성을 흡수하고, M:N 관계인 주문은 양쪽 기본키를 복합 기본키로 하는 별도 릴레이션으로 만든 스키마가 바른 변환이다.

공급은 상품(n)과 제조업체(1) 사이의 N:1 관계이므로 상품 릴레이션에 제조업체명을 외래키로 두고, 관계 속성인 공급일자·공급량도 함께 상품 쪽에 넣는다. 주문은 상품(m)과 회원(k) 사이의 M:N 관계이므로 회원아이디와 상품번호를 묶은 복합키를 기본키로 하고 주문번호·주문수량·주문일자를 속성으로 갖는 주문 릴레이션을 따로 둔다.

  • 주문 릴레이션을 주문번호 하나만 기본키로 두고 회원아이디·상품번호를 빼는 변환은 M:N 관계의 양쪽 개체를 참조할 수 없어 관계 자체가 사라진다.
  • 상품번호와 공급일자·공급량을 제조업체 릴레이션에 넣는 변환은 1쪽에 N쪽 키를 둔 것이라, 한 제조업체가 여러 상품을 공급하면 하나의 튜플에 담을 수 없다.
  • 제조업체 쪽에 공급 정보를 두고 주문만 복합키로 만든 변환도 공급 관계의 방향이 뒤바뀌어 같은 이유로 성립하지 않는다.
문제 12
트랜잭션에 대한 설명으로 옳지 않은 것은?
1지속성(durability)은 완료된 트랜잭션이 갱신한 데이터를 데이터베이스에 영구적으로 보존하는 것을 의미한다.
2원자성(atomicity)은 트랜잭션 연산이 데이터베이스에 모두 반영되지 않고 개별 반영되는 것을 의미한다.
3격리성(isolation)은 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 의미한다.
4일관성(consistency)은 트랜잭션을 수행하기 전과 수행한 후에 데이터베이스가 항상 일관된 상태를 유지하는 것을 의미한다.
정답 및 해설

원자성은 트랜잭션 연산이 모두 반영되거나 전혀 반영되지 않아야 함을 뜻하므로, 개별 반영된다는 설명이 옳지 않다.

일부 연산만 수행된 채 중단되면 회복 과정에서 철회(undo)하여 부분 반영을 남기지 않는다.

  • 지속성: 완료된 트랜잭션의 결과를 영구적으로 보존한다는 설명이 옳다.
  • 격리성: 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들지 못하게 한다는 설명이 옳다.
  • 일관성: 수행 전후 데이터베이스가 일관된 상태를 유지한다는 설명이 옳다.
문제 13
다음과 같이 ‘학과’와 ‘학생’ 테이블을 생성하고 UPDATE 질의문 (가)를 실행할 때, 이에 대한 설명으로 옳은 것은?
CREATE TABLE 학과 (
학과명 VARCHAR(20), 전화번호 VARCHAR(20),
PRIMARY KEY(학과명)
);

CREATE TABLE 학생 (
학번 VARCHAR(20), 이름 VARCHAR(20),
학과 VARCHAR(20), PRIMARY KEY(학번),
FOREIGN KEY(학과) REFERENCES 학과(학과명)
);

UPDATE 학생 SET 학과 = ‘AI소프트웨어학과’ WHERE 학과
=‘소프트웨어학과’; --- (가)
1질의문 (가)를 실행하면 개체 무결성 제약조건을 위반하게 된다.
2‘학생’ 테이블에 학과가 ‘AI소프트웨어학과’인 투플이 존재하면 질의문 (가)는 실행되지 않는다.
3질의문 (가)는 ‘학생’ 테이블에 있는 모든 투플의 학과 값을 ‘AI소프트웨어학과’로 변경한다.
4학과명이 ‘AI소프트웨어학과’인 투플이 ‘학과’ 테이블에 존재하지 않으면, 질의문 (가)는 참조 무결성 제약조건을 위반한다.
정답 및 해설

외래키 학과는 학과 테이블의 학과명을 참조하므로, ‘AI소프트웨어학과’가 학과 테이블에 없으면 (가)는 참조 무결성 제약조건을 위반한다.

외래키 값은 NULL이거나 참조 테이블의 기본키 값 중 하나여야 한다. 따라서 바꿀 값이 학과 테이블에 먼저 존재해야 갱신이 허용된다.

  • 개체 무결성 위반: 개체 무결성은 기본키(학번)의 NULL·중복 금지인데, (가)는 기본키를 바꾸지 않는다.
  • 학생 테이블에 같은 학과 투플이 이미 있으면 실행 불가: 학과 속성은 기본키도 UNIQUE도 아니므로 같은 값이 여러 투플에 있어도 된다.
  • 모든 투플의 학과 변경: WHERE 조건에 따라 학과가 ‘소프트웨어학과’인 투플만 변경된다.
문제 14
트랜잭션 T1, T2, T3가 다음과 같은 순서로 스케줄링 될 경우, 이와 동치인 직렬 스케줄은?
시간T1T2T3
↓read(y)
read(z)
read(x)
write(x)
write(y)
write(z)
read(z)
read(x)
read(y)
write(y)
1T1 → T2 → T3
2T1 → T3 → T2
3T2 → T1 → T3
4동치인 직렬 스케줄이 없음
정답 및 해설

충돌 연산의 선후 관계가 모두 한 방향이어서 이 스케줄은 T1→T2→T3T_1 \rightarrow T_2 \rightarrow T_3 직렬 스케줄과 충돌 동치다.

충돌 쌍을 찾으면 다음과 같다.
y: T1T_1의 read(y)·write(y)가 T2T_2의 read(y)·write(y)보다 먼저 → T1→T2T_1 \rightarrow T_2
z: T1T_1의 write(z) 뒤에 T3T_3의 read(z) → T1→T3T_1 \rightarrow T_3
x: T2T_2의 write(x) 뒤에 T3T_3의 read(x) → T2→T3T_2 \rightarrow T_3

선행 그래프에 사이클이 없고 위상 정렬 결과는 하나뿐이다.

  • T1→T3→T2T_1 \rightarrow T_3 \rightarrow T_2: x에 대한 충돌로 T2T_2가 T3T_3보다 앞서야 한다.
  • T2→T1→T3T_2 \rightarrow T_1 \rightarrow T_3: y에 대한 충돌로 T1T_1이 T2T_2보다 앞서야 한다.
  • 동치인 직렬 스케줄 없음: 사이클이 없으므로 충돌 직렬 가능하다.
문제 15
다음 ‘사원’과 ‘부서’ 테이블에 대한 SQL문의 수행 결과가 다른 것은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
사원
사번이름부서번호급여직속상사
1Kim10500NULL
2Kwon205003
3Park20700NULL
4Choi306001
5Cho103003
6Lee205504
7Yoon304003
8Chae206501
9Nam104304
10Ha30200NULL
부서
부서번호부서이름사무실위치
10인사과101호
20개발팀102호
30총무과103호
1
SELECT 이름
FROM 사원
WHERE 이름 LIKE ‘_a%’ AND 급여 > 500;
2
SELECT E.이름
FROM 사원 AS E INNER JOIN 부서 AS D ON E.부서번호 = D.부서번호
WHERE D.사무실위치 = ‘102호’ AND E.직속상사 is NULL;
3
SELECT 이름
FROM 사원
WHERE 이름 NOT IN (SELECT 이름 FROM 사원
WHERE 급여 < ANY (SELECT 급여 FROM 사원));
4
SELECT 이름
FROM 사원
WHERE 부서번호 IN (SELECT 부서번호 FROM 사원
GROUP BY 부서번호
HAVING COUNT(*) > 3);
정답 및 해설

나머지 세 질의는 결과가 Park 한 명이지만, 인원이 3명을 넘는 부서의 사원을 찾는 질의는 Kwon, Park, Lee, Chae 4명을 반환하여 결과가 다르다.

부서별 인원은 부서번호 10이 3명, 20이 4명, 30이 3명이므로 COUNT(*) > 3을 만족하는 부서는 20뿐이고, 그 소속 사원 전원이 결과가 된다.

  • LIKE ‘_a%’ AND 급여 > 500: 두 번째 글자가 a인 사원은 Park·Nam·Ha이고, 급여가 500을 넘는 사원은 Park뿐이다.
  • 102호이면서 직속상사가 NULL: 102호는 개발팀(부서번호 20)이며 그중 직속상사가 NULL인 사원은 Park이다.
  • NOT IN과 < ANY: 급여 < ANY(전체 급여)는 최고 급여 700보다 적은 사원 전원이므로, 이를 제외하면 최고 급여자 Park만 남는다.
문제 16
데이터베이스에 반영이 완료된 레코드만 읽게 하는 방법(READ COMMITTED)으로 해결할 수 있는 동시 처리(concurrent processing) 문제는?
1오손 읽기(dirty read)
2유령 읽기(phantom read)
3직렬 읽기(serialized read)
4반복 불가능 읽기(non-repeatable read)
정답 및 해설

READ COMMITTED는 커밋된 데이터만 읽게 하므로 오손 읽기(dirty read)를 해결한다.

오손 읽기는 철회될 수 있는 미완료 트랜잭션의 갱신값을 읽는 문제다. 다른 트랜잭션이 읽은 뒤 커밋한 갱신·삽입으로 생기는 문제는 더 높은 격리 수준이 필요하다.

  • 유령 읽기: 같은 조건으로 다시 검색할 때 새로 삽입된 투플이 나타나는 문제로, SERIALIZABLE 수준에서 해결된다.
  • 직렬 읽기: 격리 수준이 다루는 동시 처리 문제가 아니다.
  • 반복 불가능 읽기: 같은 데이터를 다시 읽을 때 그 사이 커밋된 갱신으로 값이 달라지는 문제로, REPEATABLE READ 이상이 필요하다.
문제 17
다음 테이블은 쇼핑몰의 판매자가 판매하는 상품과 해당 상품을 생산한 제조사에 대한 정보를 담고 있다. 테이블의 기본키가 (판매자ID, 상품)일 때, 다음 설명 중 옳은 것만을 모두 고르면? (단, 아래 투플을 기준으로 판단한다)
판매자ID상품제조사
0001컴퓨터A
0001모니터B
0002컴퓨터A
0002모니터C
0003모니터C
0003컴퓨터D
ㄱ. 이 테이블은 제2정규형의 조건을 만족한다.
ㄴ. 이 테이블은 제3정규형의 조건을 만족하지 않는다.
ㄷ. 제조사 E가 모니터를 생산한다는 정보를 판매자ID 없이 투플로 추가하더라도 삽입 이상이 발생하지 않는다.
ㄹ. 판매자ID가 0001인 판매자가 모니터를 더 이상 판매하지 않아 해당 투플을 삭제한다면 삭제 이상이 발생할 수 있다.
ㅁ. 제조사 B가 생산하는 상품이 모니터에서 노트북으로 변경된다면 갱신 이상이 발생할 수 있다.
1ㄱ, ㄷ
2ㄱ, ㄹ
3ㄴ, ㅁ
4ㄹ, ㅁ
정답 및 해설

옳은 것은 ㄱ, ㄹ이다.

투플을 보면 기본키에 의한 종속 외에 제조사 → 상품(A·D는 컴퓨터, B·C는 모니터)이 성립한다. 기본키의 일부만으로는 제조사가 정해지지 않아 부분 종속이 없고, 종속되는 상품이 주요 속성이라 제3정규형까지 만족하지만 결정자 제조사가 후보키가 아니어서 BCNF는 위반한다.

  • ㄱ(옳음): 판매자ID나 상품 하나만으로는 제조사가 정해지지 않으므로 부분 함수 종속이 없다.
  • ㄴ(틀림): 제조사 → 상품에서 종속되는 상품이 주요 속성이므로 제3정규형 조건에 어긋나지 않는다.
  • ㄷ(틀림): 판매자ID 없이 넣으면 기본키 일부가 NULL이 되어 삽입할 수 없으므로 삽입 이상이 발생한다.
  • ㄹ(옳음): 제조사 B의 정보는 이 투플에만 있어, 삭제하면 B가 모니터를 생산한다는 사실까지 사라진다.
  • ㅁ(틀림): B가 나오는 투플이 하나뿐이라 한 곳만 고치면 되므로 불일치가 생기지 않는다.
문제 18
릴레이션 R(A, B, C, D)에 다음과 같은 함수 종속성의 집합 F가 존재할 때, 후보키에 해당하는 것과 릴레이션 R이 만족하는 정규형만을 모두 고르면? (단, 이 릴레이션의 기본키는 (A, B)이며, 모든 속성의 도메인은 원자값(atomic value)으로 구성된다)
F = {(A, B) → C, (A, B) → D, C → B, D → A}
(가) (B, C)  (나) (B, D)  (다) (C, D)
ㄱ. 제1정규형  ㄴ. 제2정규형
ㄷ. 제3정규형  ㄹ. 보이스/코드 정규형
후보키 정규형
1(가), (다) ㄱ, ㄴ, ㄷ
2(나), (다) ㄱ, ㄴ, ㄷ
3(가), (나) ㄱ, ㄴ, ㄷ, ㄹ
4(나), (다) ㄱ, ㄴ, ㄷ, ㄹ
정답 및 해설

후보키는 (B, D)와 (C, D)이고, 모든 속성이 주요 속성이어서 R은 제3정규형까지 만족한다.

(B, D)의 폐포: D → A로 A를 얻고, (A, B) → C, (A, B) → D로 전체가 된다.
(C, D)의 폐포: C → B, D → A로 A, B를 얻어 전체가 된다.
B, C, D 각각의 폐포는 전체가 아니므로 두 키 모두 최소성을 만족한다.

A·B·C·D가 모두 어떤 후보키에 속하므로 제3정규형은 성립하지만, C → B의 결정자 C가 슈퍼키가 아니므로 BCNF는 위반한다.

  • (B, C): C → B는 B만 다시 얻을 뿐 A, D를 결정하지 못해 후보키가 아니다.
  • 보이스/코드 정규형 포함: C → B, D → A의 결정자가 슈퍼키가 아니므로 BCNF가 아니다.
문제 19
‘학생’ 릴레이션의 과목번호는 ‘과목’ 릴레이션의 과목번호를 참조하는 외래키이다. 다음 설명 중 옳지 않은 것은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
학생
학번이름과목번호
1111을지문덕200
2222신사임당100
3333이율곡300
4444유관순400
5555김만덕400
과목
과목번호과목명담당교수개설학과
100인공지능개론안창호AI소프트웨어학과
200빅데이터분석김구컴퓨터공학과
300머신러닝윤봉길AI소프트웨어학과
400생성형AI김좌진AI소프트웨어학과
1“DELETE FROM 과목 WHERE 과목번호 = 400;”을 실행하면 참조 무결성 제약조건을 위반한다.
2“UPDATE 학생 SET 과목번호 = 500 WHERE 학번 = 3333;”을 실행하면 참조 무결성 제약조건을 위반한다.
3“INSERT INTO 학생(학번, 이름, 과목번호) VALUES (5555, ‘홍길동’, 200);”을 실행하면 기본키 제약조건을 위반한다.
4“INSERT INTO 과목(과목번호, 과목명, 담당교수, 개설학과) VALUES (NULL, ‘데이터베이스’, ‘안중근’, ‘AI소프트웨어학과’);”를 실행하면 참조 무결성 제약조건을 위반한다.
정답 및 해설

기본키에 NULL을 넣는 것은 개체 무결성 위반이므로, 과목번호가 NULL인 과목 삽입을 참조 무결성 위반이라 한 설명이 옳지 않다.

참조 무결성은 외래키 값이 참조 테이블의 기본키 값 중 하나(또는 NULL)여야 한다는 제약이고, 기본키의 NULL 금지는 개체 무결성이다.

  • 과목 400 삭제: 유관순·김만덕이 참조하고 있으므로 참조 무결성 위반이다.
  • 학번 3333의 과목번호를 500으로 변경: 과목 테이블에 500이 없으므로 참조 무결성 위반이다.
  • 학번 5555로 학생 삽입: 김만덕의 학번과 중복되어 기본키 제약 위반이다.
문제 20
RAID에 대한 설명으로 옳지 않은 것은?
1RAID 0은 여러 개의 디스크에 데이터를 분산 저장한다.
2RAID 1은 디스크의 모든 데이터를 별도의 디스크에 복제하여 유지한다.
3RAID 5는 데이터와 패리티 정보를 여러 디스크에 분산 저장한다.
4RAID 6은 데이터를 저장하는 디스크와 패리티를 저장하는 디스크를 분리하여 사용한다.
정답 및 해설

RAID 6은 데이터와 이중 패리티를 여러 디스크에 분산 저장하므로, 패리티 전용 디스크를 분리한다는 설명이 옳지 않다.

패리티 전용 디스크를 두는 방식은 RAID 3·4이고, RAID 5·6은 패리티를 분산해 쓰기 병목을 줄인다. RAID 6은 서로 다른 패리티 2개로 디스크 2개의 동시 장애까지 견딘다.

  • RAID 0: 데이터를 여러 디스크에 나누어 쓰는 스트라이핑이다.
  • RAID 1: 모든 데이터를 다른 디스크에 복제하는 미러링이다.
  • RAID 5: 데이터와 패리티를 모든 디스크에 분산 저장한다.
문제 21
즉시 갱신 전략을 이용하는 회복 시스템에서 다음과 같은 로그 기록을 사용하여 복구 과정을 수행한 내용 중 옳지 않은 것은?
<T1, start>
<T1, A, 30, 60>
<T2, start>
<T1, commit>
<T3, start>
<T4, start>
<checkpoint, {T2, T3, T4}>
<T3, C, 15, 45>
<T3, commit>
<T5, start>
<T2, B, 10, 50>
<T4, A, 60, 90>
<T4, abort>
<T5, D, 20, 40>
-- 시스템 장애 발생 --
1트랜잭션 T1은 복구 작업을 수행할 필요가 없다.
2트랜잭션 T2는 undo를 수행하여 B값으로 10을 저장한다.
3트랜잭션 T3는 undo를 수행하여 C값으로 15를 저장한다.
4트랜잭션 T5는 undo를 수행하여 D값으로 20을 저장한다.
정답 및 해설

T3T_3는 체크포인트 이후 커밋했으므로 undo가 아니라 redo를 수행해 C에 새 값 45를 저장해야 한다.

즉시 갱신 회복에서는 체크포인트 이전에 커밋한 트랜잭션은 무시하고, 이후 커밋한 트랜잭션은 redo(새 값), 커밋하지 못한 트랜잭션은 undo(이전 값)를 수행한다.

  • T1T_1: 체크포인트 이전에 커밋되어 이미 반영되었으므로 복구가 필요 없다.
  • T2T_2: 커밋 기록이 없으므로 undo하여 B를 이전 값 10으로 되돌린다.
  • T5T_5: 커밋 기록이 없으므로 undo하여 D를 이전 값 20으로 되돌린다.
문제 22
데이터베이스 관리자(DBA)와 일반 사용자(Kim, Lee, Park, Choi, Cho, Hong)가 데이터베이스 권한 관리를 위한 SQL문을 다음 순서대로 모두 수행하였다. 이에 대한 설명으로 옳은 것은? (단, SQL문 앞의 ‘OOO>’는 해당 문장을 수행한 사람을 의미하고, 각 SQL문의 문법(syntax) 오류는 발생하지 않는다)
DBA> GRANT SELECT ON 고객 TO Kim WITH
GRANT OPTION;
DBA> GRANT SELECT ON 고객 TO Lee WITH
GRANT OPTION;
Kim> GRANT SELECT ON 고객 TO Park WITH
GRANT OPTION;
Lee> GRANT SELECT ON 고객 TO Choi WITH
GRANT OPTION;
DBA> REVOKE SELECT ON 고객 FROM Kim
CASCADE;
DBA> REVOKE SELECT ON 고객 FROM Lee
RESTRICT;
1Kim은 고객 테이블에 대한 검색(SELECT) 권한을 가진다.
2Lee는 고객 테이블에 대한 검색(SELECT) 권한을 가진다.
3Park은 “GRANT SELECT ON 고객 TO Cho”를 실행할 수 있다.
4Choi는 “GRANT SELECT ON 고객 TO Hong”을 실행할 수 없다.
정답 및 해설

Lee에 대한 RESTRICT 회수는 Lee가 이미 Choi에게 권한을 넘겼기 때문에 거부되므로, Lee는 여전히 SELECT 권한을 가진다.

CASCADE는 연쇄적으로 넘겨준 권한까지 함께 회수하고, RESTRICT는 넘겨준 권한이 있으면 회수 자체를 거부한다. 따라서 Kim과 Park은 권한을 잃고, Lee와 Choi는 권한을 유지한다.

  • Kim의 검색 권한 보유: CASCADE로 회수되어 권한이 없다.
  • Park이 Cho에게 부여 가능: Kim의 권한이 연쇄 회수되면서 Park의 권한도 사라졌다.
  • Choi가 Hong에게 부여 불가: Lee의 회수가 거부되어 Choi는 GRANT OPTION이 포함된 권한을 그대로 가지므로 부여할 수 있다.
문제 23
뷰(view)에 대한 설명으로 옳지 않은 것은?
1사용자의 요구에 맞게 가공하여 만들어 쓸 수 있다.
2사용자별로 데이터 접근을 제한하여 보안성을 높일 수 있다.
3자주 사용되는 질의를 뷰로 미리 정의해 놓고 재사용할 수 있다.
4뷰의 기본적인 활용 용도는 검색(SELECT)이며, 뷰를 통한 원본 테이블의 데이터 조작(INSERT 등)은 불가능하다.
정답 및 해설

뷰를 통한 원본 테이블의 데이터 조작이 전면 불가능하다는 설명이 옳지 않다.

뷰에 대한 조작은 원본 테이블에 대한 조작으로 변환되므로, 단일 테이블에서 기본키를 포함하고 집계·DISTINCT·GROUP BY가 없는 갱신 가능한 뷰는 INSERT·UPDATE·DELETE가 허용된다.

  • 사용자 요구에 맞게 가공: 필요한 속성·투플만 골라 논리적 테이블을 만들 수 있다.
  • 사용자별 접근 제한: 뷰에 보이는 데이터만 허용해 보안을 높인다.
  • 자주 쓰는 질의 재사용: 복잡한 질의를 뷰로 정의해 두면 간단히 다시 쓸 수 있다.
문제 24
NoSQL 데이터베이스에 대한 설명으로 옳지 않은 것은?
1NoSQL 시스템으로 MongoDB 등이 있다.
2비정형 데이터를 포함하는 빅데이터를 효율적으로 저장하고 처리할 수 있다.
3대표적인 데이터 모델에는 키-값, 문서 기반, 컬럼 기반, 그래프 기반 데이터 모델이 있다.
4CAP 이론은 병행성(Concurrency), 가용성(Availability), 분할 감내성(Partition tolerance)을 모두 보장할 수는 없다는 성질을 말한다.
정답 및 해설

CAP 이론의 C는 병행성이 아니라 일관성(Consistency)이므로 옳지 않다.

CAP 이론은 분산 시스템이 일관성·가용성·분할 감내성 세 가지를 동시에 모두 보장할 수 없다는 이론이다.

  • MongoDB: 대표적인 문서 기반 NoSQL 시스템이다.
  • 비정형 빅데이터 처리: 스키마가 유연하고 수평 확장이 쉬워 대용량 비정형 데이터에 적합하다.
  • 키-값·문서·컬럼·그래프 모델: NoSQL의 대표 데이터 모델 분류다.
문제 25
분산 데이터베이스 시스템에 대한 설명으로 옳지 않은 것은?
1중앙 집중식 데이터베이스 시스템에 비해 확장이 용이하다.
2중앙 집중식 데이터베이스 시스템에 비해 더 많은 구축 비용이 소요된다.
3한 지역에서 장애가 발생하더라도 전체 시스템이 작업을 계속 수행할 수 있다.
4수직적 단편화는 관계대수 연산인 셀렉트(select)를 통해 릴레이션을 속성 단위로 분할하여 저장하는 것을 말한다.
정답 및 해설

속성 단위로 분할하는 수직적 단편화는 셀렉트가 아니라 프로젝트(project) 연산으로 수행하므로 옳지 않다.

셀렉트는 투플(행)을 고르는 연산이라 수평적 단편화에 쓰이고, 프로젝트는 속성(열)을 고르는 연산이라 수직적 단편화에 쓰인다.

  • 확장 용이: 지역(사이트)을 추가하는 방식으로 점진적 확장이 쉽다.
  • 구축 비용 증가: 통신망과 분산 제어 소프트웨어가 필요해 비용이 더 든다.
  • 지역 장애 시 작업 계속: 데이터 분산·중복으로 가용성과 신뢰성이 높다.