[경찰간부후보생 데이터베이스론] 26년 1회차 기출문제 정답·해설 페이지
- 외부 스키마가 변경되어 논리적 데이터 독립성이 깨졌다는 설명: 사용자가 보는 구조가 바뀌지 않았으므로 틀리다.
- 개념 스키마가 변경되어 외부 스키마를 재정의해야 한다는 설명: 인덱스는 내부 수준의 요소이며 개념 스키마는 변하지 않았다.
- 저장 구조 변경이 데이터 독립성과 무관한 보안 기능이라는 설명: 저장 구조 변경에서 상위 계층을 보호하는 것이 바로 데이터 독립성이다.
- 공급의 기본키를 PK1, PK2, PK3 셋으로 잡은 스키마: PK3 없이도 튜플이 식별되므로 기본키의 최소성을 만족하지 못한다.
- 사원·부품에 PK3를 넣고 공급에는 PK3를 두지 않은 스키마: 어떤 사원·부품 조합이 어느 프로젝트에 해당하는지 표현하지 못하고, 사원이나 부품 하나가 여러 프로젝트와 관련될 수도 없다.
- 사원·부품에 PK3를 넣고 공급의 기본키도 세 속성으로 잡은 스키마: 사원·부품의 PK3는 불필요한 속성이며 공급의 기본키도 최소성을 만족하지 못한다.
- 수직 단편화·분리성: 분리성 위반은 맞지만 속성이 아닌 튜플 기준으로 나누었다.
- 수직 단편화·회복성: 단편화 유형도, 위반 규칙도 틀리다.
- 수평 단편화·회복성: 두 단편의 합집합으로 원래 릴레이션을 그대로 복원할 수 있어 회복성은 지켜진다.
- 부분구체화·배타구체화: 어느 하위 유형에도 속하지 않는 차량을 허용하므로 사례와 다르다.
- 부분구체화·중첩구체화: 소속 의무와 동시 소속 금지 조건을 모두 어긴다.
- 전체구체화·중첩구체화: 승용차이면서 화물차인 차량을 허용하므로 사례와 다르다.
- 디비전과 세미조인의 교환법칙 불성립: 피연산자를 바꾸면 결과가 달라지므로 옳은 설명이다.
- 동등조인과 자연조인의 교환·결합법칙 성립: 속성 순서를 무시한 튜플 집합으로 볼 때 결과가 같으므로 옳은 설명이다.
- 카티션 프로덕트의 합병 가능성 불필요: 모든 튜플 쌍을 결합할 뿐이어서 차수·도메인이 달라도 되므로 옳은 설명이다.
- 가: R을 미리 줄인 뒤 S와 조인하므로 동등하다.
- 나: S를 미리 줄인 뒤 R과 조인하며, 자연조인의 교환법칙에 따라 동등하다.
- 다: S를 미리 줄인 뒤 R과 조인하므로 동등하다.
- 라: 완전외부조인은 짝이 없는 튜플도 NULL을 채워 남기므로 동등하지 않다.
- 3개: 위 네 집합 중 하나를 빠뜨린 값이다.
- 7개: 공집합을 뺀 모든 부분집합의 수로, A가 없는 집합까지 센 값이다.
- 8개: 공집합까지 포함한 모든 부분집합의 수이다.
- NOT NULL이 아닌 외래키의 NULL 허용: 값이 없는 관계를 나타낼 수 있어 옳은 설명이다.
- ON DELETE CASCADE의 연쇄 삭제: 부모 행 삭제 시 참조하는 자식 행도 삭제되므로 옳은 설명이다.
- 자기참조 외래키: 사원의 상사번호처럼 같은 테이블의 키를 참조할 수 있어 옳은 설명이다.
- CREATE, DROP을 DML로 본 설명: 객체 구조를 정의·삭제하는 DDL이다.
- SELECT, INSERT, UPDATE, DELETE를 DDL로 본 설명: 데이터를 조회·변경하는 DML이다.
- COMMIT, ROLLBACK을 DDL로 본 설명: 스키마 정의가 아니라 트랜잭션을 제어하는 명령이다.
- 계좌번호 A001, 잔액 10000, 기본키 제약조건: 앞의 두 값은 행에 저장되는 사용자 데이터이다.
- 계좌번호 A001, 인덱스 물리 블록 주소, 사용자 화면 배치 좌표: 사용자 데이터와 응용 화면 정보가 섞여 있다.
- INSERT 수행 시각, 잔액 10000, 화면 버튼 이름: 작업 이력, 사용자 데이터, 응용 화면 정보로서 스키마 정의가 아니다.
- COUNT(*) 1, COUNT(수량) 1: NULL이 있는 행까지 세는 COUNT(*)를 잘못 계산한 값이다.
- COUNT(*) 1, COUNT(수량) 2: 두 함수의 값을 뒤바꾼 것이다.
- COUNT(*) 2, COUNT(수량) 2: COUNT(수량)이 NULL을 제외한다는 점을 놓친 값이다.
- 모든 부서의 cnt가 1인 결과: 부서 10의 사원 2명을 제대로 세지 못했고 did 30도 포함했다.
- did 30의 cnt가 NULL인 결과: COUNT는 NULL을 반환하지 않고 0을 반환하며, 해당 그룹은 제외된다.
- did 30의 cnt가 0인 결과: 집계값은 맞지만 HAVING 조건을 적용하지 않은 것이다.
- 1개: 왼쪽 첫 속성 A만 키로 본 값이다.
- 2개: 사이클의 네 속성이 대칭이라는 점을 놓친 값이다.
- 3개: D → A까지 이어져 D도 키가 된다는 점을 놓친 값이다.
- 2NF: 비주요 속성이 후보키 전체에 완전 함수 종속해야 하는데 D가 이를 어긴다.
- 3NF: 2NF를 만족해야 하는 상위 단계이므로 해당하지 않는다.
- BCNF: 모든 결정자가 슈퍼키여야 하는데 B는 슈퍼키가 아니다.
- 200: 서울 행만 더해도 300이므로 나올 수 없는 값이다.
- 300: 서울 행만 합산하고 ELSE 값을 빠뜨린 결과이다.
- 350: 부산 두 행 중 한 행의 ELSE 값만 더한 결과이다.
- 학번 1만 나온다는 결과: 수강에 있는 값이어서 해당 비교가 거짓이 되므로 제외된다.
- 학번 2, 3이 나온다는 결과: NULL을 무시한 결과이며, 실제로는 조건이 UNKNOWN이 되어 선택되지 않는다.
- 학번 전체가 나온다는 결과: 조건이 참인 행이 없으므로 전체 행이 나올 수 없다.
- 40: 결과 튜플 수가 아니라 서로 다른 값의 개수이다.
- 20,000: 조건을 적용하지 않은 전체 카디널리티이다.
- 보안 레벨 조정: 접근 권한 문제로서 스캔 범위를 줄이지 못한다.
- 정규화 수준 강화: 테이블 구조 개선일 뿐, 이 조건의 전체 스캔을 해소하지 못하고 조인을 늘릴 수 있다.
- CSV 파일 전환: 인덱스와 최적화 기능을 잃어 오히려 전체를 읽게 된다.
- 나, 다: 두 레코드 모두 CHECK 조건을 위반한다.
- 가, 나, 라: 가격이 0이면 조건을 만족하지 않으므로 나를 허용할 수 없다.
- 가, 나, 다, 라: 나와 다 모두 CHECK 조건을 위반한다.
- 네스티드 루프 조인: 한 테이블의 행마다 다른 테이블을 탐색하는 지역 조인 방식이다.
- 외부 소트 머지 조인: 두 입력을 정렬해 병합하는 방식으로, 사전 축소와는 다르다.
- 해시 조인: 조인 키의 해시 테이블로 짝을 찾는 방식으로, 사전 축소와는 다르다.
- 0개: 공통 값 b1이 있어 조인되는 튜플이 존재한다.
- 2개: 무손실 분해일 때의 값이지만, B가 어느 쪽의 키도 아니어서 가짜 튜플이 생긴다.
- 6개: 두 릴레이션을 조인한 결과의 최대치인 4개를 넘는다.
- R1(A, B), R2(A, C): 공통 속성 A가 키여서 무손실이지만 B → C를 한 릴레이션에서 검사할 수 없다.
- R1(A, C), R2(B, C): 공통 속성 C가 어느 쪽의 키도 아니어서 손실 분해이다.
- R1(A, B, C), R2(A): R1이 R 자체이고 R2는 R1에 포함될 뿐이어서 릴레이션을 실제로 나눈 분해가 아니다.
- 6 ms: 평균 회전 지연을 빠뜨린 값이다.
- 10 ms: 전송 시간을 빠뜨린 값이다.
- 16 ms: 평균 회전 지연 대신 1회전 전체 시간을 더한 값이다.
- 순차·해시·힙 조합: 범위 검색이 많은 다에 정렬되지 않은 힙 파일을 연결해 부적합하다.
- 해시·힙·순차 조합: 추가만 하는 가에 해시를, 등호 검색 중심인 나에 힙을 연결해 부적합하다.
- 힙·순차·해시 조합: 범위 검색이 많은 다에 순서를 보존하지 않는 해시 파일을 연결해 부적합하다.
- 가: 데이터가 해당 필드로 정렬되어 있지 않아 모든 값을 가리켜야 하므로 적절하다.
- 나: 정렬된 순서를 이용해 엔트리 사이의 레코드를 찾으므로 적절하다.
- 다: 물리적 순서는 하나이므로 적절하지 않다.
- 라: 블록마다 대표 키 하나를 두는 희소 인덱스로 구성할 수 있어 적절하다.
- 204: 조건을 만족하지만 205도 들어가므로 최대가 아니다.
- 348: 대입하면 필요 공간이 6,948바이트로 블록 크기를 넘는다.
- 512: 포인터 크기로만 나눈 값으로, 키 공간을 무시했다.
- 즉시 허용된다는 설명: 공유 잠금과 배타 잠금은 충돌한다.
- T2가 T1의 잠금을 공유 잠금으로 낮춘다는 설명: 다른 트랜잭션이 보유한 잠금을 강제로 바꿀 수 없다.
- 공유 잠금이 배타 잠금과 항상 호환된다는 설명: 호환되는 것은 공유 잠금끼리이다.
- 6 TB·읽기 불가능: 용량은 맞지만 미러링의 복제본으로 계속 읽을 수 있다.
- 12 TB·읽기 가능: 12 TB는 복제를 고려하지 않은 전체 합계이다.
- 12 TB·읽기 불가능: 용량과 읽기 가능 여부가 모두 틀리다.
- 3,907개: 전체 바이트를 블록 크기로 나눈 값으로, 레코드 분할을 허용하는 신장 방식의 계산이다.
- 4,100개: 블록당 10개를 채우면 4,000개로 충분하므로 최소가 아니다.
- 4,167개: 블록당 10개를 채우면 4,000개로 충분하므로 최소가 아니다.
- -20으로 저장되고 체크포인트 때 실행된다는 설명: 트리거는 갱신 이벤트 시점에 실행되며 체크포인트와 무관하다.
- SELECT 문에서만 실행된다는 설명: 이 트리거의 발생 이벤트는 UPDATE이다.
- 갱신 완료 후 로그만 삭제한다는 설명: BEFORE 트리거는 갱신 전에 실행되고, 로그 삭제 기능도 없다.
- 반복 불가능 읽기: 같은 항목을 두 번 읽을 때 값이 달라지는 현상으로, 여기서는 T2가 한 번만 읽었다.
- 팬텀 읽기: 같은 조건의 재검색에서 없던 행이 나타나는 현상이다.
- 갱신 손실: 두 트랜잭션의 쓰기가 겹쳐 한쪽 변경이 사라지는 현상으로, 여기서는 T2가 쓰지 않았다.
- X 100, Y 200: 커밋된 T1의 변경이 사라져 지속성에 어긋난다.
- X 100, Y 240: 커밋한 쪽을 취소하고 미완료 쪽을 남겨 정반대이다.
- X 130, Y 240: 미완료 T2의 변경이 남아 원자성에 어긋난다.
- 참여자가 독자적으로 항상 COMMIT을 결정한다는 설명: 최종 결정권은 조정자에게 있다.
- 2단계 커밋이 로그를 쓰지 않는다는 설명: 장애 후 복구를 위해 조정자와 참여자가 결정 과정을 로그에 남긴다.
- YES 투표 후 장애가 없다는 설명: 지문처럼 투표 이후에도 조정자 장애가 발생할 수 있다.
- T1을 Tc 이후 변경만 redo: Tc 전에 시작해 Tf 전에 완료되었고, Tc 이전 변경은 검사점에서 디스크에 반영되었으므로 옳다.
- T3를 처음부터 끝까지 redo: Tc 이후에 시작해 Tf 전에 완료되었으므로 옳다.
- T4를 처음부터 끝까지 undo: Tc 이후에 시작해 Tf까지 완료되지 못했으므로 옳다.
- S1: T1 → T2 → T3 → T1의 사이클이 있어 직렬 가능하지 않다.
- S1, S2: S1이 직렬 가능하지 않으므로 함께 고를 수 없다.
- 없음: S2는 사이클이 없어 직렬 가능하다.
- 가 → 나 → 다 → 라: 최적화는 변환된 질의 트리를 대상으로 하므로 나보다 다가 먼저이다.
- 가 → 나 → 라 → 다: 실행 후에 변환을 할 수는 없다.
- 나 → 가 → 다 → 라: 검증과 변환 없이 실행 계획을 세울 수 없다.
- 관계형 데이터베이스의 참조관계 관리: 외래키로 테이블 간 연결을 관리하므로 적절하다.
- NoSQL의 정형·반정형 데이터 분산 관리: 스키마가 유연하고 수평 확장에 적합하므로 적절하다.
- 그래프 데이터베이스의 노드·엣지 표현: 연결 정보의 저장과 탐색에 강하므로 적절하다.
- 가, 라: 가는 옳지만 라는 틀리다.
- 나, 다: 두 설명은 옳지만 가도 옳으므로 빠짐없이 고른 것이 아니다.
- 다, 라: 다는 옳지만 라는 틀리다.
- 정밀도 0.6, 재현율 0.6: 정밀도의 분모를 실제 양성 100으로 잘못 잡은 값이다.
- 정밀도 0.6, 재현율 0.75: 두 지표를 뒤바꾼 값이다.
- 정밀도 0.75, 재현율 0.75: 재현율의 분모를 예측 양성 80으로 잘못 잡은 값이다.
- 사이클이 있어 충돌 직렬 가능하지 않다는 설명: 간선이 T2→T3→T1 방향으로만 이어지고 되돌아오는 경로가 없어 사이클이 없으므로 옳지 않다.
- 등가 직렬 순서가 유일하지 않다는 설명: T3→T1을 포함해 모든 쌍의 순서가 고정되므로 옳지 않다.
- T1 → T3 → T2 순서라는 설명: 간선 방향을 거꾸로 읽은 것으로, T1은 들어오는 간선만 있어 맨 마지막이어야 한다.
다음 상황에 대한 설명으로 가장 적절한 것은?
| 어느 공공기관의 시스템에서 성능향상을 위해 특정 테이블에 B+트리 인덱스를 추가하였다. 각종 조회, 민원 신청, 회계 관리 프로그램의 SQL 문장은 그대로 유지되었고, 사용자가 보는 속성 구조도 바뀌지 않았다. |
외부 스키마가 변경되었으므로 논리적 데이터 독립성이 깨졌다.
내부 스키마의 접근 경로만 바뀌었으므로 물리적 데이터 독립성이 유지된 사례이다.
개념 스키마가 변경되었으므로 모든 외부 스키마를 다시 정의해야 한다.
저장 구조 변경은 데이터 독립성과 무관하며 DBMS의 보안 기능에 해당한다.
인덱스 추가는 내부 스키마의 접근 경로만 바꾼 것이므로, 이 사례는 물리적 데이터 독립성이 유지된 경우이다.
물리적 데이터 독립성은 저장 구조나 접근 경로가 바뀌어도 상위 스키마와 응용 프로그램이 영향을 받지 않는 성질이다. SQL 문장과 사용자가 보는 속성 구조가 그대로이므로 이 조건에 해당한다.
오류나 개정된 내용이 보이면 알려주세요
다음 ERD를 관계형 데이터베이스 스키마로 변환한 것으로 가장 적절한 것은? (단, 밑줄은 기본키이다.)
사원(PK1, A1), 부품(PK2, A2), 프로젝트(PK3, A3), 공급(PK1, PK2, PK3, A4)
사원(PK1, A1), 부품(PK2, A2), 프로젝트(PK3, A3), 공급(PK1, PK2, PK3, A4)
사원(PK1, A1, PK3), 부품(PK2, A2, PK3), 프로젝트(PK3, A3), 공급(PK1, PK2, A4)
사원(PK1, A1, PK3), 부품(PK2, A2, PK3), 프로젝트(PK3, A3), 공급(PK1, PK2, PK3, A4)
세 개체 릴레이션을 그대로 두고 공급 릴레이션의 기본키를 PK1과 PK2로 잡은 뒤 PK3와 A4를 일반 속성으로 둔 스키마가 적절하다.
공급은 사원(n)·부품(m)·프로젝트(1)를 잇는 3항 관계이므로 별도 릴레이션으로 변환하고 세 개체의 기본키를 모두 가져온다. 프로젝트 쪽 대응수가 1이어서 사원과 부품의 조합이 정해지면 프로젝트가 하나로 결정되므로, PK3는 기본키에서 빠진다.
오류나 개정된 내용이 보이면 알려주세요
다음 고객 릴레이션에 대해 고객번호를 기준으로 나누었을 때, 해당되는 단편화와 위반된 정확성 규칙으로 가장 적절한 것은?
<고객>
| 고객번호 | 지역 | 이름 |
| 100 | 서울 | 홍길동 |
| 400 | 부산 | 강감찬 |
| 600 | 대전 | 이순신 |
F1: 고객번호 ≤ 500 F2: 고객번호 ≥ 300
| 고객번호 | 지역 | 이름 |
| 100 | 서울 | 홍길동 |
| 400 | 부산 | 강감찬 |
| 고객번호 | 지역 | 이름 |
| 400 | 부산 | 강감찬 |
| 600 | 대전 | 이순신 |
수직 단편화, 분리성
수직 단편화, 회복성
수평 단편화, 분리성
수평 단편화, 회복성
튜플(행) 단위로 나누었으므로 수평 단편화이고, 고객번호 400 튜플이 두 단편에 모두 들어가 분리성을 위반한다.
F1과 F2 모두 지역·이름 등 전체 속성을 유지하므로 속성을 나눈 수직 단편화가 아니다. 분리성은 한 데이터 항목이 두 단편에 겹치지 않아야 한다는 규칙인데, 조건 범위가 300~500에서 겹친다.
오류나 개정된 내용이 보이면 알려주세요
다음 사례에 해당하는 EER(Enhanced Entity Relationship) 제약 조건으로 모두 옳은 것은?
| 차량은 승용차와 화물차로 세분화된다. 모든 차량은 반드시 둘 중 하나에 속하고, 한 차량이 동시에 승용차와 화물차가 될 수 없다. 승용차에는 좌석 수, 화물차에는 적재중량 속성이 있다. |
부분구체화(partialspecialization),배타구체화(disjointspecialization)
부분구체화(partialspecialization),중첩구체화(overlappingspecialization)
전체구체화(totalspecialization),배타구체화(disjointspecialization)
전체구체화(totalspecialization),중첩구체화(overlappingspecialization)
모든 차량이 반드시 하위 유형에 속하므로 전체구체화이고, 두 유형에 동시에 속할 수 없으므로 배타구체화이다.
전체·부분은 상위 개체가 하위 개체에 반드시 속해야 하는지를, 배타·중첩은 여러 하위 개체에 동시에 속할 수 있는지를 구분한다.
오류나 개정된 내용이 보이면 알려주세요
관계대수 연산자에 대한 설명으로 가장 적절하지 않은 것은?
디비전(division)과 세미조인은 교환법칙이 성립하지 않는다.
동등조인과 자연조인은 교환법칙과 결합법칙이 성립한다.
카티션 프로덕트(cartesian product)는 릴레이션이 합병 가능(union compatible)하지 않아도 연산이 가능하다.
복합연산인 디비전은 기본연산인 실렉트(select), 차집합, 카티션 프로덕트로 대체할 수 있다.
디비전을 대체하는 기본연산은 실렉트가 아니라 프로젝트(project), 차집합, 카티션 프로덕트이므로 이 설명이 옳지 않다.
R(X, Y)를 S(Y)로 나누는 연산은 다음과 같이 표현한다.
속성을 추려 내는 프로젝트가 반드시 필요하다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R과 S에 대한 R ⋈N S와 동등한 표현으로 적절한 것은 모두 몇 개인가? (단, ⋈N은 자연조인, ⋉은 세미조인, ⟗은 완전외부조인 연산이다.)
| 가.(R ⋉ S) ⋈N S 나.(S ⋉ R) ⋈N R 다.R ⋈N (S ⋉ R) 라.R ⟗ S |
1
2
3
4
R ⋈N S와 동등한 표현은 가, 나, 다의 3개이다.
세미조인 R ⋉ S는 S와 조인되는 R의 튜플만 남긴다. 제거된 튜플은 어차피 자연조인 결과에 나타나지 않으므로, 세미조인으로 미리 줄인 뒤 조인해도 결과가 같다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R(A, B, C)의 유일한 후보키가 {A}일 때, R이 가질 수 있는 슈퍼키(superkey)의 총 개수는?3
4
7
8
슈퍼키는 후보키 {A}를 포함하는 속성 집합이므로 총 4개이다.
A를 반드시 포함하고 B, C는 각각 포함 여부를 고를 수 있어 가지가 된다. 구체적으로 {A}, {A, B}, {A, C}, {A, B, C}이다.
오류나 개정된 내용이 보이면 알려주세요
참조 무결성(referential integrity) 제약조건에 대한 설명으로 가장 적절하지 않은 것은?
NOT NULL이 아닌 외래키 컬럼은 NULL 값을 가질 수 있다.
ON DELETE CASCADE는 부모 행 삭제 시 이를 참조하는 자식 행도 삭제한다.
외래키는 반드시 기본키만 참조할 수 있고 UNIQUE 키는 참조할 수 없다.
외래키는 같은 테이블의 키를 참조하는 자기참조 구조로도 정의할 수 있다.
외래키는 기본키뿐 아니라 UNIQUE 키도 참조할 수 있으므로, 기본키만 참조할 수 있다는 설명이 옳지 않다.
참조 대상은 값이 유일하게 식별되는 후보키이면 되며, UNIQUE 제약이 걸린 컬럼이 여기에 해당한다.
오류나 개정된 내용이 보이면 알려주세요
SQL의 분류에 대한 설명으로 가장 적절한 것은?
CREATE, DROP은 데이터 조작어(DML)에 속한다.
SELECT, INSERT, UPDATE, DELETE는 데이터 정의어(DDL)에 속한다.
COMMIT, ROLLBACK은 데이터 정의어(DDL)에 속한다.
GRANT, REVOKE는 데이터 제어어(DCL)에 속한다.
GRANT와 REVOKE는 권한을 부여·회수하는 명령으로 데이터 제어어(DCL)에 속한다.
SQL은 구조를 정의하는 DDL, 데이터를 다루는 DML, 권한과 트랜잭션을 제어하는 DCL로 나뉜다. COMMIT·ROLLBACK은 교재에 따라 DCL 또는 별도의 TCL로 분류한다.
오류나 개정된 내용이 보이면 알려주세요
다음과 같은 순서로 작업이 수행될 때 시스템 카탈로그에 저장되는 정보로만 묶인 것으로 가장 적절한 것은?
| CREATE TABLE 계좌(계좌번호 CHAR(12) PRIMARY KEY, 잔액 INTEGER); CREATE INDEX IDX_계좌_잔액 ON 계좌(잔액); INSERT INTO 계좌 VALUES('A001', 10000); |
계좌번호 CHAR(12), IDX_계좌_잔액, 기본키 제약조건
계좌번호 A001, 잔액 10000, 기본키 제약조건
계좌번호A001, 인덱스 물리 블록 주소, 사용자 화면 배치 좌표
INSERT 수행 시각, 잔액 10000, 화면 버튼 이름
시스템 카탈로그에는 메타데이터가 저장되므로 열 정의, 인덱스 이름, 기본키 제약조건으로 묶인 것이 알맞다.
CREATE TABLE과 CREATE INDEX가 만든 정의 정보는 카탈로그에 기록되지만, INSERT로 들어간 실제 값은 사용자 데이터로서 테이블에 저장된다.
오류나 개정된 내용이 보이면 알려주세요
판매 테이블에 대한 다음 질의문의 결과에서 상품 A의 COUNT(*)와 COUNT(수량)의 값으로 가장 적절한 것은?
<판매>
| 상품 | 지역 | 수량 |
| A | 서울 | 10 |
| A | 부산 | NULL |
| B | 서울 | 5 |
| SELECT 상품, COUNT(*), COUNT(수량) FROM 판매 GROUP BY 상품; |
COUNT(*) COUNT(수량)
1 1
1 2
2 1
2 2
상품 A의 COUNT(*)는 2이고 COUNT(수량)은 1이다.
상품 A 그룹은 서울(10)과 부산(NULL)의 두 행이다. COUNT(*)는 행 수를 모두 세고, COUNT(열)은 그 열의 NULL을 제외하고 센다.
오류나 개정된 내용이 보이면 알려주세요
DEPT, EMP 테이블에 대한 다음 질의문의 결과로 가장 적절한 것은?
| <DEPT> | <EMP> | ||
| did | eid | did | |
| 10 | 1 | 10 | |
| 20 | 2 | 10 | |
| 30 | 3 | 20 | |
| 4 | NULL |
| SELECT D.did, COUNT(E.eid) AS cnt FROM DEPT AS D LEFT OUTER JOIN EMP AS E ON D.did = E.did GROUP BY D.did HAVING COUNT(E.eid) >= 1 ORDER BY D.did; |
| did | cnt | |
| 10 | 1 | |
| 20 | 1 | |
| 30 | 1 |
| did | cnt | |
| 10 | 2 | |
| 20 | 1 | |
| did | cnt | |
| 10 | 2 | |
| 20 | 1 | |
| 30 | NULL |
| did | cnt | |
| 10 | 2 | |
| 20 | 1 | |
| 30 | 0 |
결과는 did 10의 cnt 2, did 20의 cnt 1의 두 행이다.
외부조인 후 did 10에는 사원 2명, did 20에는 1명이 연결되고, did 30은 E.eid가 NULL인 행 하나가 남아 COUNT(E.eid)가 0이다. HAVING 조건으로 cnt가 1 이상인 그룹만 남으므로 did 30은 제외된다. eid 4인 사원은 did가 NULL이어서 어느 부서와도 조인되지 않는다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R(A, B, C, D)에 함수종속 F = {A → B, B → C, C → D, D → A}가 성립한다. R의 후보키(candidate key) 총 개수는?1
2
3
4
A, B, C, D가 사이클로 서로를 결정하므로 후보키는 {A}, {B}, {C}, {D}의 4개이다.
A → B → C → D → A의 순서로 어느 단일 속성에서 출발해도 나머지 전체를 결정한다. 예를 들어 B의 폐포는 B, C, D, A로 R 전체이며, 단일 속성이므로 최소성도 만족한다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R(A, B, C, D)의 후보키가 {A, B}이고 함수종속이 F = {AB → C, AB → D, B → D}일 때, R이 만족 가능한 최고 정규형으로 가장 적절한 것은?1NF
2NF
3NF
BCNF
B → D가 부분 함수 종속이므로 R은 2NF를 만족하지 못하며, 최고 정규형은 1NF이다.
D는 후보키 {A, B}에 속하지 않는 비주요 속성인데, 후보키 전체가 아니라 그 일부인 B만으로 결정된다.
오류나 개정된 내용이 보이면 알려주세요
판매 테이블에 대한 질의 결과로 가장 적절한 것은?
< 판매 >
| 제품 | 지역 | 매출 |
| P1 | 서울 | 100 |
| P2 | 서울 | 200 |
| P1 | 부산 | 150 |
| P2 | 부산 | 50 |
| SELECT SUM(CASE WHEN 지역='서울' THEN 매출 ELSE 50 END) AS 보정매출 FROM 판매; |
보정매출
200
300
350
400
보정매출의 합계는 400이다.
서울 행은 매출 값을 그대로 쓰고, 그 외 지역은 실제 매출과 상관없이 50으로 바뀐다.
오류나 개정된 내용이 보이면 알려주세요
학생, 수강 테이블에 대해 다음 질의문의 결과에 포함되는 학번으로 가장 적절한 것은?
<학생> <수강>
| 학번 | 학번 | |
| 1 | 1 | |
| 2 | NULL | |
| 3 |
| SELECT 학번 FROM 학생 WHERE 학번 NOT IN (SELECT 학번 FROM 수강); |
1
2, 3
1, 2, 3
없음
서브쿼리 결과에 NULL이 있어 어떤 행도 조건을 참으로 만들지 못하므로 결과는 없다.
NOT IN (1, NULL)은 학번 <> 1 AND 학번 <> NULL과 같다. NULL과의 비교는 UNKNOWN이므로 전체가 참이 될 수 없다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R의 카디널리티가 20,000이다. R의 속성 A가 균등 분포한다고 가정하고 서로 다른 값 40개를 가질 때, σA=k(R)에 대한 결과 튜플 수의 추정치로 가장 적절한 것은? (단, k는 서로 다른 값 40개 중 하나이다.)
40
500
800
20,000
균등 분포에서 등호 조건의 결과 튜플 수 추정치는 500이다.
값 하나의 선택도는 서로 다른 값 개수의 역수이다.
즉 카디널리티 ÷ 서로 다른 값의 수로 추정한다.
오류나 개정된 내용이 보이면 알려주세요
다음 응답 지연을 해결하기 위해 검토할 방안으로 가장 적절한 것은?
| 운영 DB의 특정 SQL이 전체 응답 지연의 대부분을 차지한다. 실행 계획을 보니 고객 테이블 500만 행을 매번 전체 스캔하고, 조건은 고객등급 = 'VIP' AND 가입일자 >= '2026-01-01'이다. VIP 비율은 1%이고 최근 가입자 조건도 선택도가 높다. |
고객 테이블의 보안 레벨을 낮춘다.
고객 테이블의 정규화 수준을 강화한다.
DBMS를 사용하지 않고 CSV 파일로 전환한다.
고객등급과 가입일자를 고려한 복합 인덱스 후보를 검토한다.
전체 스캔이 원인이고 두 조건의 선택도가 높으므로 복합 인덱스를 검토하는 것이 알맞다.
고객등급과 가입일자에 인덱스를 두면 소수의 행만 찾아 읽을 수 있어 전체 스캔을 피할 수 있다.
오류나 개정된 내용이 보이면 알려주세요
다음 상품 테이블에 가~라의 레코드를 입력할 때, 허용되는 것을 모두 고른 것으로 가장 적절한 것은?
| CREATE TABLE 상품 ( 상품번호 INT PRIMARY KEY, 가격 INT CHECK (가격 > 0) ); |
| 가.(1, 100) 나.(2, 0) 다.(3, -50) 라.(4, 1) |
가, 라
나, 다
가, 나, 라
가, 나, 다, 라
허용되는 레코드는 가격이 0보다 큰 가, 라이다.
CHECK (가격 > 0)은 0을 포함하지 않으므로 (2, 0)과 (3, -50)은 거부된다. 네 레코드의 상품번호는 서로 달라 기본키 제약에는 걸리지 않는다.
오류나 개정된 내용이 보이면 알려주세요
다음 분산 질의 처리에 대한 설명으로 가장 적절한 것은?
| 전역 질의가 서울 노드의 주문 테이블과 부산 노드의 부산고객 테이블을 고객ID로 조인한다. 네트워크 전송 비용을 줄이기 위해 서울에서 주문한 고객ID만 추출해 부산으로 보내고, 부산 노드에서 매칭된 부산 고객ID만 다시 서울로 보내 조인을 축소하려 한다. |
네스티드 루프 조인 수행
세미 조인 수행
외부 소트 머지 조인 수행
해시 조인 수행
조인 속성만 먼저 보내 상대 노드의 데이터를 줄이는 방식은 세미 조인이다.
서울의 고객ID 목록을 부산으로 보내 매칭된 고객ID만 돌려받아 조인 대상을 줄이므로, 전체 테이블을 옮기는 경우보다 네트워크 전송량이 줄어든다.
오류나 개정된 내용이 보이면 알려주세요
다음 릴레이션 R을 R1과 R2로 분해한 뒤 자연 조인으로 복원할 때, 그 결과 릴레이션의 튜플 수로 가장 적절한 것은?
< R >
| A | B | C |
| a1 | b1 | c1 |
| a2 | b1 | c2 |
< R1 >
| A | B |
| a1 | b1 |
| a2 | b1 |
< R2 >
| B | C |
| b1 | c1 |
| b1 | c2 |
0
2
4
6
공통 속성 B의 값이 모두 b1이므로 자연 조인 결과는 4개 튜플이다.
R1의 2개 튜플과 R2의 2개 튜플이 모두 짝을 이루어 가 된다. 원래 없던 (a1, b1, c2)와 (a2, b1, c1)이 생기는 손실 분해이다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R(A, B, C)에 F = {A → B, B → C}가 성립한다. 다음 분해 중 무손실 분해이면서 함수 종속성도 보존하는 것은?R1(A, B), R2(B, C)
R1(A, B), R2(A, C)
R1(A, C), R2(B, C)
R1(A, B, C), R2(A)
R1(A, B), R2(B, C)는 무손실 분해이면서 함수 종속성도 보존한다.
공통 속성 B가 R2의 키(B → C)이므로 무손실이고, A → B는 R1에서, B → C는 R2에서 그대로 검사할 수 있어 종속성이 보존된다.
오류나 개정된 내용이 보이면 알려주세요
다음 조건의 자기 디스크에서 임의의 블록 하나를 읽는 데 걸리는 평균 접근 시간(ms)으로 가장 적절한 것은?
| ○디스크 회전 속도 : 6,000 RPM ○평균 탐구 시간(average seek time) : 5 ms ○블록 하나의 전송 시간(transfer time) : 1 ms |
6
10
11
16
평균 접근 시간은 탐구 시간, 평균 회전 지연, 전송 시간의 합으로 11 ms이다.
6,000 RPM은 초당 100회전이므로 1회전은 10 ms이고, 평균 회전 지연은 그 절반인 5 ms이다.
오류나 개정된 내용이 보이면 알려주세요
다음과 같은 데이터 접근 상황에서 적합한 파일 조직을 연결한 것으로 가장 적절한 것은?
| 가.대량 로그 레코드를 파일 끝에 계속 덧붙여 저장만 하고, 개별 레코드 검색은 거의 하지 않는다. 나.특정 키 값에 대한 등호(=) 검색이 대부분이고, 범위 검색은 거의 발생하지 않는다. 다.날짜 범위에 대한 검색과 정렬된 순서의 순차 출력이 매우 빈번하다. |
가 나 다
순차 파일 해시 파일 힙 파일
해시 파일 힙 파일 순차 파일
힙 파일 순차 파일 해시 파일
힙 파일 해시 파일 순차 파일
가는 힙 파일, 나는 해시 파일, 다는 순차 파일이 적합하다.
힙 파일은 끝에 덧붙이는 삽입이 빠르고, 해시 파일은 등호 검색에 강하며, 순차 파일은 키 순서대로 저장되어 범위 검색과 순차 출력에 유리하다.
오류나 개정된 내용이 보이면 알려주세요
다음 인덱스에 대한 설명으로 적절한 것은 모두 몇 개인가?
| 가.보조(secondary) 인덱스는 데이터 파일이 정렬되어 있지 않을 수 있으므로 반드시 밀집(dense) 인덱스이어야 한다. 나.희소(sparse) 인덱스는 데이터 파일이 인덱스 대상 필드로 정렬되어 있을 때에만 사용할 수 있다. 다.클러스터링(clustering) 인덱스는 하나의 테이블에 여러 개 만들 수 있다. 라.기본(primary) 인덱스는 데이터 파일의 각 블록마다 하나의 엔트리를 두는 희소 인덱스로 구성할 수 있다. |
1
2
3
4
적절한 설명은 가, 나, 라의 3개이다.
클러스터링 인덱스는 데이터의 물리적 정렬 순서를 따르는데, 한 테이블의 물리적 순서는 하나뿐이므로 여러 개 만들 수 없다.
오류나 개정된 내용이 보이면 알려주세요
다음 조건의 B+트리에서 내부 노드가 가질 수 있는 최대 차수, 즉 자식 포인터의 최대 개수 n을 구한 것으로 가장 적절한 것은? (단, 내부 노드는 n-1개의 키와 n개의 포인터를 가진다.)
| ○노드(블록) 크기 : 4,096 바이트 ○탐색 키 값 하나의 길이 : 12 바이트 ○트리 포인터 하나의 길이 : 8 바이트 |
204
205
348
512
최대 차수 n은 205이다.
키 n-1개와 포인터 n개의 합이 블록 크기를 넘지 않아야 한다.
n은 정수이므로 내림하여 205가 된다.
오류나 개정된 내용이 보이면 알려주세요
트랜잭션 T1이 변수 X에 배타 잠금을 보유한 상태에서 트랜잭션 T2가 X에 공유 잠금을 요청하였다. 엄격한 2단계 잠금 규약을 따를 때, T2의 요청에 대한 처리로 가장 적절한 것은?
즉시 허용된다.
T1이 배타 잠금을 해제할 때까지 대기한다.
T2가 T1의 배타 잠금을 강제로 공유 잠금으로 낮춘다.
공유 잠금은 읽기용이므로 배타 잠금과 항상 호환된다.
배타 잠금은 다른 잠금과 호환되지 않으므로 T2는 T1이 잠금을 해제할 때까지 대기한다.
엄격한 2단계 잠금에서는 배타 잠금을 트랜잭션 종료(커밋·철회) 시점까지 유지하므로, T2는 그 이후에 공유 잠금을 얻는다.
오류나 개정된 내용이 보이면 알려주세요
RAID 1로 2TB 디스크 6개를 구성한다. 모든 디스크는 동일 용량이고 미러링 쌍을 구성한다고 할 때 사용 가능한 데이터 용량과 한 쌍 내 디스크 1개 장애 시 읽기 가능 여부로 가장 적절한 것은?
용량(TB) 읽기
6 가능
6 불가능
12 가능
12 불가능
사용 가능한 용량은 6 TB이고, 디스크 1개가 고장 나도 읽기가 가능하다.
디스크 6개는 미러링 3쌍이 되고, 각 쌍은 같은 데이터를 복제하므로 쌍당 2 TB만 쓸 수 있다.
한 쌍에서 1개가 고장 나도 남은 디스크에서 읽을 수 있다.
오류나 개정된 내용이 보이면 알려주세요
레코드를 블록 경계에서 분할하지 않는 비신장(unspanned) 방식으로 파일을 저장할 때, 다음 조건에서 필요한 최소 블록 수로 가장 적절한 것은?
| ○레코드 개수 : 40,000개 ○레코드 하나의 길이 : 100 바이트(고정 길이) ○블록 크기 : 1,024 바이트 |
3,907
4,000
4,100
4,167
필요한 최소 블록 수는 4,000개이다.
비신장 방식에서는 레코드를 쪼갤 수 없으므로 블록당 레코드 수를 내림한다.
블록마다 남는 24바이트는 사용되지 않는 내부 낭비 공간이다.
오류나 개정된 내용이 보이면 알려주세요
계좌 테이블에 잔액이 음수가 되면 오류를 발생시키는 BEFORE UPDATE 트리거가 있다. 한 트랜잭션이 잔액 50인 계좌에 대해 “잔액 = 잔액 – 70”을 수행하였다. 트리거가 정상 동작할 때의 설명으로 가장 적절한 것은?
갱신이 거부되고 트랜잭션은 오류 처리 대상이 된다.
잔액은 -20으로 저장되고 트리거는 다음 체크포인트 때 실행된다.
트리거는 SELECT 문에서만 실행되므로 아무 영향이 없다.
BEFORE UPDATE 트리거는 갱신 완료 후 로그만 삭제한다.
새 잔액이 -20이 되어 트리거가 오류를 발생시키므로 갱신이 거부되고 트랜잭션은 오류 처리 대상이 된다.
BEFORE UPDATE 트리거는 갱신이 적용되기 전에 실행되어 새 값을 검사할 수 있다.
오류나 개정된 내용이 보이면 알려주세요
다음 상황에서 발생할 수 있는 직렬성 위반 문제로 가장 적절한 것은?
| 트랜잭션 T1이 변수 A의 값을 100에서 50으로 변경하고 아직 커밋하지 않았다. 트랜잭션 T2가 A의 값으로 50을 읽어 보고서를 생성한 직후 T1이 롤백되었다. |
오손 읽기(dirty read)
반복 불가능 읽기(unrepeatable read)
팬텀 읽기(phantom read)
갱신 손실(lost update)
커밋되지 않은 값을 읽은 뒤 그 값이 철회되었으므로 오손 읽기에 해당한다.
T2가 읽은 50은 T1의 롤백으로 존재하지 않게 된 값이어서, 보고서는 잘못된 데이터를 근거로 작성되었다.
오류나 개정된 내용이 보이면 알려주세요
다음과 같이 트랜잭션 실행 중 시스템 장애가 발생하였다. 회복 기법이 성공적으로 수행되었을 때 변수 X, Y의 값으로 적절한 것은? (단, WAL(write-ahead logging) 규약과 steal/no-force 방식으로 캐시를 관리한다고 가정하고, 변경 로그 레코드 형식은 <트랜잭션 식별자, 변수, 이전값, 새값> 이다.)
| <START_TRANSACTION, T1> <T1, X, 100, 130> <START_TRANSACTION, T2> <T2, Y, 200, 240> <COMMIT T1> <CRASH> |
X Y
100 200
100 240
130 200
130 240
커밋된 T1은 재실행하고 미완료 T2는 취소하므로 X는 130, Y는 200이다.
steal 방식에서는 미커밋 변경이 디스크에 반영되었을 수 있어 UNDO가 필요하고, no-force 방식에서는 커밋된 변경이 아직 디스크에 없을 수 있어 REDO가 필요하다.
오류나 개정된 내용이 보이면 알려주세요
다음 상황에 해당하는 설명으로 가장 적절한 것은?
| 2단계 커밋에서 조정자가 모든 참여자로부터 YES를 받은 후 COMMIT 메시지를 보내는 중 장애가 발생했다. 참여자 일부는 아직 최종 결정을 받지 못했다. |
참여자는 독자적으로 항상 COMMIT을 결정할 수 있다.
참여자가 불확실 상태에서 조정자의 결정을 기다릴 수 있어 블로킹이 발생할 수 있다.
2단계 커밋에서는 로그를 사용하지 않는다.
YES 투표 후에는 어떤 장애도 발생하지 않는다.
YES를 보낸 참여자는 최종 결정을 받을 때까지 불확실 상태에 머물 수 있어 블로킹이 발생할 수 있다.
YES 투표 후에는 스스로 철회할 수 없고, 다른 참여자의 투표 결과를 모르면 커밋도 확정할 수 없다. 이것이 2단계 커밋의 대표적 약점이다.
오류나 개정된 내용이 보이면 알려주세요
검사점(checkpoint) 회복 기법을 적용한 트랜잭션 수행 과정이 다음과 같을 때 데이터 복원을 위해 수행되는 작업으로 가장 적절하지 않은 것은? (단, Tc는 검사점, Tf는 장애시점을 의미한다.)
T1은 Tc 이후에 일어난 변경 부분에 대해서만 redo 한다.
T2는 Tc 이후에 일어난 변경 부분에 대해서만 undo 한다.
T3는 처음부터 끝까지 redo 한다.
T4는 처음부터 끝까지 undo 한다.
T2의 변경을 검사점 이후 부분만 undo한다는 설명이 옳지 않다. T2는 처음부터 전부 undo해야 한다.
장애 시점 Tf 전에 완료된 트랜잭션은 redo, 완료되지 못한 트랜잭션은 undo 대상이다. T2는 Tc 전에 시작해 Tf까지 끝나지 않았으므로 원자성을 지키려면 Tc 이전 변경까지 모두 취소해야 한다. 검사점에서 그 변경이 디스크에 반영되었을 수 있기 때문이다.
오류나 개정된 내용이 보이면 알려주세요
다음 스케줄 S1, S2 중에서 직렬 가능한(serializable) 스케줄을 모두 고른 것은?
| <스케줄 S1> | |||
| TID 시간 | T1 | T2 | T3 |
| 1 | read(X) | ||
| 2 | read(Y) | ||
| 3 | read(Z) | ||
| 4 | read(Y) | ||
| 5 | read(Z) | ||
| 6 | read(X) | ||
| 7 | write(X) | ||
| 8 | write(Y) | ||
| 9 | write(Z) |
| <스케줄 S2> | |||
| TID 시간 | T1 | T2 | T3 |
| 1 | read(X) | ||
| 2 | read(Y) | ||
| 3 | read(Y) | ||
| 4 | read(Z) | ||
| 5 | read(X) | ||
| 6 | write(X) | ||
| 7 | write(Z) | ||
| 8 | read(Z) | ||
| 9 | write(Y) |
S1
S2
S1, S2
없음
충돌 그래프에 사이클이 없는 S2만 직렬 가능하다.
S1의 충돌은 X에서 T3 → T1, Y에서 T1 → T2, Z에서 T2 → T3이므로 사이클이 생긴다. S2의 충돌은 X에서 T3 → T1, Y에서 T1 → T2, Z에서 T3 → T2로 사이클이 없고, 등가 직렬 순서는 T3 → T1 → T2이다.
오류나 개정된 내용이 보이면 알려주세요
관계형 DBMS가 SQL 질의를 처리하는 단계를 순서대로 나열한 것으로 가장 적절한 것은?
| 가.질의를 파싱하고 문법과 의미를 검증한다. 나.여러 실행 방법의 비용을 비교해 최적의 실행 계획을 생성한다. 다.질의를 관계 대수식(질의 트리)으로 변환한다. 라.실행 계획에 따라 연산을 수행하여 결과를 반환한다. |
가 → 나 → 다 → 라
가 → 나 → 라 → 다
가 → 다 → 나 → 라
나 → 가 → 다 → 라
처리 순서는 가 → 다 → 나 → 라이다.
파싱으로 문법과 의미를 검증하고, 관계 대수식(질의 트리)으로 변환한 뒤, 비용 기반 최적화로 실행 계획을 고르고 실행한다.
오류나 개정된 내용이 보이면 알려주세요
DBMS 유형에 따른 특징으로 가장 적절하지 않은 것은?
관계형 데이터베이스는 테이블 간 참조관계를 통해 데이터 간의 연결을 관리할 수 있다.
NoSQL 데이터베이스는 정형, 반정형 데이터를 분산 관리할 수 있다.
벡터 데이터베이스는 ACID 특성을 보장하면서 시스템 확장성을 제공할 수 있다.
그래프 데이터베이스는 데이터를 노드와 엣지로 표현하여 연결된 정보를 효율적으로 저장하고 탐색할 수 있다.
벡터 데이터베이스의 특징을 ACID 보장으로 설명한 내용이 가장 적절하지 않다.
벡터 데이터베이스는 임베딩의 유사도 검색에 특화되어 있으며, 일반적으로 검색 성능과 확장성을 위해 강한 트랜잭션 보장을 완화한다.
오류나 개정된 내용이 보이면 알려주세요
다음 중 NoSQL 데이터 모델에 대한 옳은 설명을 모두 고른 것으로 가장 적절한 것은?
| 가.키-값(key-value) 저장소는 단순한 키로 값을 빠르게 조회하는 데 적합하다. 나.문서(document) 저장소는 JSON, XML 같은 반정형 문서를 저장하고 질의한다. 다.그래프(graph) 데이터베이스는 개체 간의 관계(연결)를 표현하고 탐색하는 데 강점이 있다. 라.칼럼 패밀리(column-family) 저장소는 행 단위로만 저장하여 열 기반 집계에 불리하다. |
가, 라
나, 다
다, 라
가, 나, 다
옳은 설명은 가, 나, 다이다.
칼럼 패밀리 저장소는 행 단위로만 저장하는 구조가 아니라 관련 열을 묶어 저장하므로, 라는 틀리다. 이 구조는 열 기반 집계에 오히려 유리하다.
오류나 개정된 내용이 보이면 알려주세요
다음분류모델의혼동행렬(confusionmatrix)에서 정밀도(precision)와 재현율(recall)로 가장 적절한 것은?
< 혼동 행렬 >
| 예측 실제 | 양성 | 음성 |
| 양성 | 60 | 40 |
| 음성 | 20 | 80 |
정밀도 재현율
0.6 0.6
0.6 0.75
0.75 0.6
0.75 0.75
정밀도는 0.75, 재현율은 0.6이다.
표에서 TP = 60, FN = 40, FP = 20, TN = 80이다.
정밀도:
재현율:
오류나 개정된 내용이 보이면 알려주세요
다음 선행 그래프(precedence graph)가 표현하는 충돌 직렬 가능한(conflict-serializable) 스케줄에 대한 설명으로 가장 적절한 것은? (단, 노드는 트랜잭션이고 화살표는 선행 관계이다.)
그래프에 사이클이 있어 충돌 직렬 가능하지 않다.
충돌 직렬 가능하지만 등가 직렬 순서는 유일하지 않다.
충돌 직렬 가능하며 등가 직렬 순서는 T1 → T3 → T2이다.
충돌 직렬 가능하며 등가 직렬 순서는 T2 → T3 → T1이다.
그래프를 위상 정렬하면 T2 → T3 → T1 하나만 나오므로, 이 순서가 등가 직렬 순서인 스케줄이다.
그래프의 간선은 T2→T3, T2→T1, T3→T1이다. 들어오는 간선이 없는 T2가 가장 먼저 오고, 그다음 T3, 마지막으로 T1이 온다. 세 트랜잭션의 모든 쌍에 선후 관계가 정해져 있어 순서가 유일하다.
오류나 개정된 내용이 보이면 알려주세요
[경찰간부후보생 데이터베이스론] 26년 1회차 시험지 PDF 다운로드·인쇄 →
[경찰간부후보생 데이터베이스론] 26년 1회차 정답과 해설은 무료인가요?
이 페이지의 40문항 정답과 해설은 로그인 없이 무료로 볼 수 있습니다. 무제한 풀이·실전 모의고사·PDF 출력·전자책 다운로드는 베이직 플랜에 포함됩니다.
이 회차를 CBT 로 직접 풀어볼 수 있나요?
경찰간부후보생 데이터베이스론 기출문제 암기장에서 이 회차를 회차별·랜덤으로 풀고 오답노트에 자동으로 모을 수 있습니다. 경찰간부후보생 데이터베이스론 기출문제 풀러 가기 →
시험지 PDF 나 전자책으로도 볼 수 있나요?
이 회차의 인쇄용 시험지 PDF 페이지에서 시험지를 받을 수 있습니다. 시험지 PDF 받기 →


