데이터베이스론
1번
테이블을 생성하는 SQL 문에서 속성의 제약조건에 대한 설명으로 옳지 않은 것은?
- ①
CHECK는 속성이 가질 수 있는 값의 범위를 제한한다.
- ②
DEFAULT는 데이터 삽입 시 속성의 값이 명시되지 않을 때 지정된 값이 입력되도록 제한한다.
- ③
NOT NULL은 속성에 NULL이 입력되지 않도록 제한하며, FOREIGN KEY로 지정된 속성에 대해서도 지정할 수 있다.
- ④
UNIQUE는 기본키를 대체하는 속성에 부여하는 것으로, 중복되지 않고 NULL이 아닌 값이 입력되도록 제한한다.
2번
데이터베이스의 무결성 제약조건에 대한 설명으로 옳지 않은 것은?
- ①
참조 무결성 제약조건은 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙이다.
- ②
개체 무결성 제약조건은 기본키를 구성하는 모든 속성은 NULL 값을 가지면 안 된다는 규칙이다.
- ③
기본키로 정의된 속성은 중복된 값이 허용되지 않는다.
- ④
참조 무결성 제약조건에서 자식 릴레이션은 부모 릴레이션의 제약을 받지 않는다.
3번
데이터와 사용자를 다양한 보안등급(1급 비밀, 2급 비밀, 3급 비밀, 일반 정보 등)으로 분류하고 해당 조직에 적합한 보안 정책을 적용하여 다단계 보안을 시행하기 위해 사용하는 접근 제어 기법은?
- ①
속성 기반 접근 제어(ABAC)
- ②
임의 접근 제어(DAC)
- ③
강제 접근 제어(MAC)
- ④
역할 기반 접근 제어(RBAC)
4번
뷰(view)에 대한 설명으로 옳지 않은 것은?
- ①
일반 테이블과 동일한 방법으로 검색을 수행할 수 있다.
- ②
집계 함수로 계산된 내용을 포함하고 있는 뷰는 변경(삽입, 삭제, 갱신)이 가능하다.
- ③
뷰를 생성할 때, 뷰를 통한 투플의 삽입 또는 갱신 연산에 제한을 둘 수 있다.
- ④
DISTINCT 키워드를 포함하여 정의된 뷰는 변경(삽입, 삭제, 갱신)이 제한된다.
5번
(고객번호, 이름, 지역) 스키마로 정의된 ‘고객’ 릴레이션을 지역이 ‘서울’인 투플은 사이트 1에, 지역이 ‘부산’인 투플은 사이트 2에 분산하여 저장하는 경우에 대한 설명으로 옳은 것은? (단, 각 사이트에는 세 속성이 모두 저장된다)
- ①
투플 단위로 나누었으므로 수평 단편화이다.
- ②
‘지역’이라는 속성 단위로 나누었으므로 수직 단편화이다.
- ③
‘지역’에 따라 투플을 분산하여 저장하므로 혼합 단편화이다.
- ④
자연 조인 연산을 통해 두 사이트의 릴레이션을 원래의 릴레이션으로 복원할 수 있다.
6번
‘주문’, ‘제품1’, ‘제품2’ 테이블에 대하여 ‘주문 ÷ 제품1’, ‘주문 ÷ 제품2’의 연산 결과로 옳은 것은?
주문 | 제품1 | 제품2 | |||||
주문고객 | 제품이름 | 제조업체 | 제품이름 | 제조업체 | 제품이름 | ||
C1 | 라면 | P1 | 음료 | P1 | 라면 | ||
C2 | 과자 | P2 | 음료 | ||||
C3 | 음료 | P1 | |||||
C1 | 음료 | P1 | |||||
C2 | 음료 | P1 | |||||
주문 ÷ 제품1 주문 ÷ 제품2
- ①
주문고객
주문고객
제조업체
C3
C1
P1
C1
C2
- ②
주문고객
주문고객
제조업체
C1
C2
P2
C2
- ③
주문고객
제품이름
제조업체
주문고객
제품이름
제조업체
C3
음료
P1
C1
라면
P1
C1
음료
P1
C1
음료
P1
C2
음료
P1
- ④
주문고객
제품이름
제조업체
주문고객
제품이름
제조업체
C1
라면
P1
C2
과자
P2
C2
과자
P2
7번
트랜잭션 , 에 대한 설명으로 옳지 않은 것은? (단, 의 초기값은 1,000이다)
시간 | |||
read(); | |||
read(); | |||
= + 500; | (가) | ||
= - 200; | |||
write(); | (나) | ||
write(); | (다) | ||
COMMIT; | (라) | ||
COMMIT; |
- ①
(가)에서 의 작업 수행 후 메모리 버퍼에 저장된 값은 1,000이다.
- ②
(나)에서 의 작업 수행 후 메모리 버퍼에 저장된 값은 1,500이다.
- ③
(다)에서 의 작업 수행 후 갱신 손실 문제가 발생한다.
- ④
(라)에서 “COMMIT”이 “ROLLBACK”으로 변경될 경우 오손 읽기 문제가 발생한다.
8번
(가) ~ (다)의 빅데이터 분석 기법과 A ~ C의 설명이 바르게 연결된 것은?
(가) 군집 분석 | (나) 분류 분석 | (다) 연관 분석 |
(가) (나) (다)
- ①ABC
- ②BAC
- ③BCA
- ④CAB
9번
DBMS의 3단계 스키마 구조에서 사상(mapping)과 데이터 독립성에 대한 설명으로 옳지 않은 것은?
- ①
외부/개념 사상은 외부 스키마의 데이터가 개념 스키마의 어떤 부분에 해당하는지 대응 관계를 정의한 것이다.
- ②
개념/내부 사상은 개념 스키마의 데이터가 내부 스키마를 통해 물리적 장치에 저장되는 대응 관계를 정의한 것이다.
- ③
내부 스키마가 변경되어도 개념/내부 사상을 수정하면 개념 스키마가 영향을 받지 않는다.
- ④
개념 스키마가 변경되어도 외부 스키마에 영향이 없는 성질을 물리적 데이터 독립성이라 한다.
10번
데이터를 여러 디스크에 분배하여 저장하는 구조로, 데이터의 갱신이 중복해서 일어나지 않고, 가장 좋은 쓰기 성능을 갖는 RAID 레벨은?
- ①
RAID 레벨 0
- ②
RAID 레벨 2
- ③
RAID 레벨 3
- ④
RAID 레벨 6
11번
저장 프로시저(stored procedure)에 대한 설명으로 옳지 않은 것은?
- ①
일반 애플리케이션 함수와 달리 매개변수를 전달할 수 없다.
- ②
데이터베이스 서버에서 실행되어 클라이언트와 서버 사이의 데이터 전송량을 줄일 수 있다.
- ③
SQL 외에 다른 언어로 작성될 수 있다.
- ④
CALL 문장을 가진 대화형 SQL에서 호출될 수 있다.
12번
NoSQL 데이터베이스에 대한 설명으로 옳은 것만을 모두 고르면?
- ①
ㄱ, ㄴ
- ②
ㄱ, ㄷ
- ③
ㄴ, ㄷ
- ④
ㄱ, ㄴ, ㄷ
13번
관계형 데이터베이스에서 질의 최적화를 위한 조인 연산 처리에 대한 설명으로 옳은 것만을 모두 고르면?
- ①
ㄱ, ㄴ
- ②
ㄱ, ㄷ
- ③
ㄴ, ㄷ
- ④
ㄱ, ㄴ, ㄷ
14번
인덱스(index)에 대한 설명으로 옳은 것만을 모두 고르면?
- ①
ㄱ, ㄴ
- ②
ㄱ, ㄹ
- ③
ㄴ, ㄷ
- ④
ㄴ, ㄹ
15번
다음 R과 S 테이블에 대해, 주어진 ‘관계대수’와 동일한 투플 결과를 출력하는 ‘SQL 문’은? (단, 밑줄로 표기된 속성은 기본키를 의미한다)
R | S | |||||
A | B | C | A | |||
a1 | 5 | c1 | a1 | |||
a2 | 10 | c2 | a1 | |||
a3 | 15 | c3 | a2 | |||
a4 | 20 | c4 | a3 |
- ①
관계대수: σ(B < 10)(R)
R.A=S.A SSQL 문: SELECT DISTINCT R.A, R.B, S.C, S.A
FROM R INNER JOIN S
WHERE R.B < 10;
- ②
관계대수: R
N SSQL 문: SELECT DISTINCT R.A, R.B, S.C
FROM R, S
WHERE R.A IN (SELECT S.A FROM S);
- ③
관계대수: R
SSQL 문: SELECT DISTINCT R.A, R.B
FROM R, S
WHERE R.A = S.A;
- ④
관계대수: R
SSQL 문: SELECT DISTINCT R.A, R.B, S.C
FROM R, S
WHERE R.A = S.A;
16번
다음은 항공권 예약 시스템에서 좌석 예매와 결제 처리를 수행하는 트랜잭션 코드이다. 트랜잭션 수행 중 UPDATE 문이 끝난 뒤 (가) 지점에서 장애가 발생하여 이 트랜잭션이 성공적으로 완료되지 못할 때, 이 상황과 관련된 트랜잭션의 특성과 해결 방법으로 옳은 것은? (단, 동시에 수행 중인 다른 트랜잭션은 없다)
- ①
원자성(Atomicity)을 보장하기 위한 ROLLBACK 처리
- ②
지속성(Durability)을 보장하기 위한 TRIGGER 처리
- ③
고립성(Isolation)을 보장하기 위한 SAVEPOINT 처리
- ④
일관성(Consistency)을 보장하기 위한 START TRANSACTION 처리
17번
트랜잭션 , , 에서 데이터 x, y, z에 대한 읽기와 쓰기 작업의 스케쥴이 다음과 같을 때 옳은 것만을 모두 고르면?
시간 | |||
read(y) | |||
read(z) | |||
read(x) | |||
write(x) | |||
read(z) | |||
write(y) | |||
read(y) | |||
write(y) | |||
write(z) | |||
read(x) |
- ①
ㄱ, ㄴ
- ②
ㄱ, ㄷ
- ③
ㄴ, ㄷ
- ④
ㄱ, ㄴ, ㄷ
18번
기본키가 EMP_ID인 두 테이블 EMP1(EMP_ID, NAME, SALARY), EMP2(EMP_ID, ADDRESS)에 대하여 사용자 A1이 다음 순서대로 모두 수행하고 ‘순서 5’의 실행 결과가 다음과 같을 때, 옳은 설명은? (단, EMP_ID, NAME, SALARY의 데이터 타입은 각각 정수형, 문자열, 정수형이다)
순서 | A1이 수행한 SQL 문 | ||
1 | CREATE VIEW EMP_VIEW1 AS SELECT * FROM EMP1 WHERE SALARY>1000 WITH CHECK OPTION; | ||
2 | CREATE VIEW EMP_VIEW2 AS SELECT NAME, ADDRESS FROM EMP1, EMP2 WHERE EMP1.EMP_ID = EMP2.EMP_ID; | ||
3 | GRANT SELECT, INSERT ON EMP_VIEW1 TO A2; | ||
4 | GRANT SELECT, INSERT ON EMP_VIEW2 TO A2; | ||
5 | SELECT * FROM EMP_VIEW1; | ||
<순서 5의 실행 결과> | |||
EMP_ID | NAME | SALARY | |
1001 | 홍길동 | 1200 | |
1002 | 이순신 | 1500 | |
1003 | 신윤복 | 1100 | |
- ①
EMP1에 EMP_ID가 1004인 투플이 없을 때, A2는 EMP_VIEW1을 통해 EMP1에 새로운 투플 ‘(1004, “강감찬”, 1000)’을 삽입할 수 있다.
- ②
A2는 EMP_VIEW1을 통해 SALARY의 합계를 출력하는 SQL 문을 실행할 수 없다.
- ③
A2는 EMP_VIEW2에 새로운 투플을 삽입할 수 없다.
- ④
A1은 EMP_VIEW1에 대한 DELETE 권한을 A2에 부여할 수 없다.
19번
상품 주문 관리 데이터베이스를 구성하는 세 테이블의 스키마가 다음과 같다. 2026년도(출시연도)에 출시된 PAD(상품종류)가 두 개 이상일 때, 해당 PAD 상품을 모두 한 번 이상 주문한 고객의 고객번호를 출력하는 SQL 문은? (단, 각 테이블의 밑줄 친 속성은 기본키이고, 주문.고객번호와 주문.상품번호는 각각 고객.고객번호와 상품.상품번호를 참조하는 외래키이다)
- ①
SELECT DISTINCT C.고객번호
FROM 고객 C, 상품 P, 주문 O
WHERE C.고객번호 = O.고객번호 AND P.상품번호 = O.상품번호 AND P.상품종류 = “PAD” AND P.출시연도 = 2026
GROUP BY C.고객번호
HAVING COUNT(*) = (SELECT COUNT(*) FROM 상품 WHERE 상품종류 = “PAD” AND 출시연도 = 2026);
- ②
SELECT DISTINCT C.고객번호
FROM 고객 C
WHERE NOT EXISTS (
SELECT *
FROM 상품 P
WHERE P.상품종류 = “PAD” AND P.출시연도 = 2026
AND NOT EXISTS (
SELECT *
FROM 주문 O
WHERE C.고객번호 = O.고객번호 AND P.상품번호 = O.상품번호));
- ③
SELECT DISTINCT C.고객번호
FROM 고객 C INNER JOIN 주문 O ON C.고객번호 = O.고객번호 INNER JOIN 상품 P ON P.상품번호 = O.상품번호
WHERE P.상품종류 = “PAD” AND P.출시연도 = 2026
GROUP BY C.고객번호
HAVING COUNT(*) >= 1;
- ④
SELECT DISTINCT C.고객번호
FROM 고객 C
WHERE C.고객번호 NOT IN (
SELECT 고객번호
FROM 주문
WHERE 상품번호 NOT IN (
SELECT 상품번호
FROM 상품
WHERE 상품종류 = “PAD” AND 출시연도 = 2026));
20번
인사관리 시스템의 ‘사원’, ‘퇴사예정’ 테이블에 대하여 다음 요구사항을 반영하여 적절하게 구현한 트리거 생성문은? (단, 모든 SQL 문은 정상적으로 수행되며, old, new는 변경 전후 투플 지정자를 의미한다)
- ①
CREATE TRIGGER Employee_Trigger
BEFORE UPDATE ON 사원 FOR EACH ROW
BEGIN
IF old.재직상태 = “퇴사예정” THEN
INSERT INTO 퇴사예정 VALUES(old.사원번호, old.이름);
END IF;
END;
- ②
CREATE TRIGGER Employee_Trigger
AFTER UPDATE ON 사원 FOR EACH ROW
BEGIN
IF new.재직상태 = “퇴사예정” THEN
INSERT INTO 퇴사예정 VALUES(old.사원번호, old.이름);
END IF;
END;
- ③
CREATE TRIGGER Employee_Trigger
BEFORE INSERT ON 사원 FOR EACH ROW
BEGIN
IF old.재직상태 = “퇴사예정” THEN
INSERT INTO 퇴사예정 VALUES(old.사원번호, old.이름);
END IF;
END;
- ④
CREATE TRIGGER Employee_Trigger
AFTER INSERT ON 사원 FOR EACH ROW
BEGIN
IF new.재직상태 = “퇴사예정” THEN
INSERT INTO 퇴사예정 VALUES(old.사원번호, old.이름);
END IF;
END;
21번
다음 SQL 문으로 오류 없이 생성된 ‘고객’과 ‘주문’ 테이블에 다음과 같이 투플이 삽입되어 있을 때 성공적으로 수행되는 SQL 문은?
고객 | 주문 | ||||||
고객번호 | 이름 | 추천고객 | 주문번호 | 고객 | 제품 | 수량 | |
C1 | 김유신 | NULL | O1 | C1 | HDD | 2 | |
C2 | 홍길동 | C1 | O2 | C1 | SSD | 1 | |
C3 | 이순신 | C2 | O3 | C4 | USB | 5 | |
C4 | 임꺽정 | C3 | |||||
C5 | 유관순 | C1 | |||||
- ①
INSERT INTO 주문 VALUES (“O4”, “C6”, “VGA”, 2);
- ②
DELETE FROM 고객 WHERE 고객번호 = “C3”;
- ③
DELETE FROM 고객 WHERE 고객번호 = “C5”;
- ④
UPDATE 고객 SET 고객번호=“C7” WHERE 고객번호=“C4”;
22번
릴레이션 R(A, B, C, D, E)에 대한 함수 종속성 집합 F가 다음과 같을 때, 이에 대한 설명으로 옳은 것은? (단, 모든 속성의 도메인은 원자값으로 구성된다)
- ①
유일하게 존재하는 후보키 (A, B)가 기본키이다.
- ②
F에서 E → B를 삭제하면 (A, B)는 후보키가 아니다.
- ③
(A, C, D)의 폐포(closure)는 {A, B, C, D, E}이다.
- ④
R은 보이스/코드 정규형(BCNF)의 요건을 충족한다.
23번
병렬 데이터베이스 시스템과 관련된 설명으로 옳지 않은 것은?
- ①
메모리 공유 구조는 이완 결합(loosely-coupled) 구조로 프로세서가 주기억 장치를 공유한다.
- ②
디스크 공유 구조는 프로세서가 디스크를 공유하며 각 노드에 자체 주기억장치를 가지고 있다.
- ③
디스크 공유 구조에서는 네트워크 병목 현상이 발생할 수 있다.
- ④
비공유 구조는 각 노드가 자체 프로세서, 메모리, 디스크를 가지며, 노드 간에는 네트워크로 연결된다.
24번
다음은 교수와 학생의 관계를 나타낸 E-R 다이어그램이다. 이를 기준으로 ‘교수’와 ‘학생’ 테이블을 생성하였을 때 옳은 것만을 모두 고르면? (단, ‘교수번호’와 ‘학번’은 기본키이고, ‘지도교수번호’는 학생의 지도교수 정보로, ‘교수번호’를 참조하는 외래키이다)

- ①
ㄱ, ㄴ
- ②
ㄱ, ㄹ
- ③
ㄴ, ㄷ
- ④
ㄴ, ㄹ
25번
키값 2, 3, 5를 차례대로 삽입하여 다음과 같은 B+-트리가 생성되었다. 이후 9, 8, 7을 차례대로 삽입한 후 B+-트리로 옳은 것은? (단, B+-트리의 차수는 3이다)

- ①

- ②

- ③

- ④
