데이터베이스 구축 · 오답노트
2025년 2회
트랜잭션의 특성 중 다음 설명에 해당하는 것은? 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니 면 전혀 반영되지 않아야 한다.
핵심 해설
트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 작업 단위이며, 반드시 ACID 네 가지 특성을 만족해야 한다. 그중 원자성(Atomicity)은 트랜잭션에 포함된 연산이 전부 데이터베이스에 반영되거나 하나도 반영되지 않아야 한다는 All or Nothing 원칙이다. 중간까지만 수행된 상태가 남으면 데이터가 깨지므로, DBMS는 COMMIT으로 전부 반영하거나 ROLLBACK으로 전부 취소해 이 특성을 보장한다. 문제 지문의 '모두 반영되든지 아니면 전혀 반영되지 않아야 한다'는 표현이 곧 원자성의 정의 문장이다.
보기별 해설
정리
애트리뷰트가 가질 수 있는 원자값들의 집합을 의미하는 것은?
핵심 해설
관계형 데이터 모델의 기본 용어에서 도메인(Domain)은 하나의 애트리뷰트(속성)가 취할 수 있는 원자값들의 집합이다. 예를 들어 '성별' 속성의 도메인은 {남, 여}이고 '학년' 속성의 도메인은 {1, 2, 3, 4}이다. 도메인은 값의 범위와 타입을 제한해 릴레이션에 잘못된 값이 들어가는 것을 막는 역할을 하며, 이것이 도메인 무결성의 근거가 된다. 따라서 '애트리뷰트가 가질 수 있는 원자값들의 집합'은 도메인의 정의 그 자체이다.
보기별 해설
정리
데이터베이스 시스템에서 삽입갱신삭제, , 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL은?
핵심 해설
지문이 깨져 있지만 본래는 '삽입·갱신·삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL'을 묻는 문제이다. 트리거(Trigger)는 특정 테이블에 INSERT·UPDATE·DELETE가 일어나는 시점에 DBMS가 자동으로 실행하는 절차형 SQL 객체로, CREATE TRIGGER로 정의하고 BEFORE/AFTER 시점과 이벤트를 지정한다. 사용자가 직접 호출하지 않아도 이벤트에 반응해 실행된다는 점이 프로시저와의 결정적 차이이며, 주로 무결성 유지나 로그 기록 자동화에 쓰인다. 따라서 정답은 트리거이다.
보기별 해설
정리
STUDENT 테이블에 독일어과 학생 50명중국어과, 학생 30명, 영어영문학과 학생 50명의 정보가 저장되어 있을 때다음, 두 SQL문 의 실행 결과 튜플 수는? (단, DEPT 컬럼은 학과명) ⓐ SELECT DEPT FROM STUDENT; ⓑ SELECT DISTINCT DEPT FROM STUDENT;
핵심 해설
STUDENT 테이블에는 독일어과 50명, 중국어과 30명, 영어영문학과 50명으로 총 130개의 튜플이 저장되어 있다. ⓐ SELECT DEPT FROM STUDENT는 FROM STUDENT로 130개 행을 모두 읽고, WHERE 절이 없어 걸러지는 행이 없으며, SELECT DEPT로 DEPT 열만 남기는 프로젝션만 수행한다. SQL의 SELECT는 중복을 자동으로 제거하지 않으므로 결과는 학과명이 중복된 채 130개 튜플이 된다. ⓑ SELECT DISTINCT DEPT FROM STUDENT는 같은 130개 값에 DISTINCT를 적용해 중복을 없애므로 서로 다른 학과명 독일어과·중국어과·영어영문학과 3개만 남는다. 따라서 ⓐ 130, ⓑ 3이다.
보기별 해설
정리
관계대수의 순수 관계 연산자가 아닌 것은?
핵심 해설
관계대수 연산자는 순수 관계 연산자와 일반 집합 연산자로 나뉜다. 순수 관계 연산자는 릴레이션 구조에 맞게 새로 정의한 것으로 Select(σ), Project(π), Join(⋈), Division(÷) 네 가지이다. 일반 집합 연산자는 수학의 집합 이론에서 그대로 가져온 것으로 합집합(∪), 교집합(∩), 차집합(−), 카티션 프로덕트(×) 네 가지이다. Cartesian Product는 두 릴레이션의 모든 튜플 쌍을 만드는 곱집합 연산으로 집합 연산자 쪽에 속하므로, 순수 관계 연산자가 아닌 것은 Cartesian Product이다.
보기별 해설
정리
다음에 해당하는 함수 종속의 추론 규칙은? X → Y이고 Y → Z이면 X → Z이다.
핵심 해설
함수 종속성의 추론 규칙(암스트롱의 공리)은 이미 알려진 함수 종속으로부터 새로운 함수 종속을 유도하는 규칙들이다. 기본 공리는 반사(Y⊆X이면 X→Y), 증가(X→Y이면 XZ→YZ), 이행(X→Y이고 Y→Z이면 X→Z) 세 가지이고, 여기서 유도되는 부가 규칙으로 합집합(결합), 분해, 의사 이행 규칙이 있다. 문제에 제시된 'X→Y이고 Y→Z이면 X→Z'는 중간 속성 Y를 징검다리로 삼아 종속이 전달되는 형태이므로 이행 규칙(Transitivity)이다. 이 이행적 함수 종속이 릴레이션에 남아 있으면 제3정규형 위반이 되어 제거 대상이 된다.
보기별 해설
정리
뷰(View)의 장점이 아닌 것은?
핵심 해설
뷰(View)는 하나 이상의 기본 테이블로부터 유도된 이름을 갖는 가상 테이블로, 실제 데이터를 저장하지 않고 정의(SELECT문)만 데이터 사전에 보관한다. 물리적으로 저장된 실체가 없기 때문에 뷰 자체에 인덱스를 생성할 수 없다는 것이 뷰의 대표적인 단점이다. 반면 필요한 열만 노출해 보안을 강화하고, 기본 테이블 구조가 바뀌어도 뷰 정의로 사용자 질의를 보호해 논리적 독립성을 제공하며, 복잡한 질의를 단순한 이름으로 감춰 사용자 관리를 쉽게 하는 것은 뷰의 장점이다. 따라서 장점이 아닌 것은 '뷰 자체로 인덱스를 가짐'이다.
보기별 해설
정리
데이터베이스 설계 시 물리적 설계 단계에서 수행하는 사항이 아닌 것은?
핵심 해설
데이터베이스 설계는 요구조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현 순으로 진행된다. 논리적 설계 단계에서 개념 스키마를 목표 DBMS가 지원하는 데이터 모델(관계 모델 등)에 맞는 논리 스키마로 변환하고 트랜잭션 인터페이스를 설계한다. 물리적 설계 단계는 논리 스키마를 실제 저장장치에 어떻게 배치할지를 정하는 단계로, 저장 레코드의 양식 설계, 레코드 집중(clustering)의 분석과 설계, 접근 경로 설계, 인덱스 설계, 반응 시간·공간 활용도·트랜잭션 처리량 같은 성능 기준 고려가 여기에 해당한다. 따라서 '목표 DBMS에 맞는 스키마 설계'는 논리적 설계의 작업이므로 물리적 설계 단계의 사항이 아니다.
보기별 해설
정리
릴레이션에 있는 모든 튜플에 대해 유일성은 만족시키지만 최소성은 만족시키지 못하는 키는?
핵심 해설
관계형 데이터베이스의 키는 유일성(각 튜플을 유일하게 식별)과 최소성(식별에 꼭 필요한 속성만으로 구성)이라는 두 조건으로 구분된다. 슈퍼키(Super Key)는 유일성은 만족하지만 최소성은 만족하지 못하는 속성 또는 속성들의 집합이다. 예를 들어 학번만으로도 학생을 식별할 수 있는데 (학번, 이름)처럼 불필요한 속성을 덧붙인 조합은 여전히 유일하지만 최소성이 깨지므로 슈퍼키이다. 여기서 최소성까지 갖춘 것이 후보키이고, 후보키 중 선택된 하나가 기본키이다.
보기별 해설
정리
정규화의 필요성으로 거리가 먼 것은?
핵심 해설
정규화(Normalization)는 릴레이션에 존재하는 함수 종속을 분석해 이상(anomaly) 현상을 일으키는 속성 간 종속 관계를 분해하는 과정이다. 목적은 데이터 중복을 최소화해 삽입·삭제·갱신 이상을 없애고, 데이터 구조의 안정성과 무결성을 확보하며, 구조 변경이 필요할 때 그 영향을 줄이는 데 있다. 즉 정규화는 중복을 없애는 방향이지 중복을 늘리는 작업이 아니다. 따라서 '중복 데이터의 활성화'는 정규화의 필요성과 정반대이며, 성능을 위해 의도적으로 중복을 허용하는 것은 반정규화(De-normalization)이다.
보기별 해설
정리
릴레이션 R1에 속한 애튜리뷰트의 조합인 외래키를 변경하려면 이를 참조하고 있는 릴레이션 R2의 기본키도 변경해야 하는데 이를 무엇이라 하는가?
핵심 해설
무결성 제약조건은 데이터베이스에 저장된 값이 정확하고 일관되도록 보장하는 규칙이다. 참조 무결성(Referential Integrity)은 외래키 값은 반드시 참조하는 릴레이션의 기본키 값과 일치하거나 NULL이어야 한다는 제약으로, 릴레이션 사이의 연결이 끊어진 값(고아 튜플)을 허용하지 않는다. 이 때문에 한쪽 릴레이션의 외래키나 참조되는 기본키를 변경하면 다른 쪽도 함께 맞춰 변경해야 하며, DBMS는 CASCADE·SET NULL·RESTRICT 같은 옵션으로 이를 처리한다. 문제가 설명하는 상황은 바로 이 참조 무결성이다.
보기별 해설
정리
정규화를 거치지 않아 발생하게 되는 이상(anomaly) 현상의 종류에 대한 설명으로 옳지 않은 것은?
핵심 해설
이상(Anomaly)이란 릴레이션에 데이터 중복과 부적절한 함수 종속이 남아 있을 때 삽입·삭제·갱신 연산에서 발생하는 예기치 못한 부작용을 말한다. 이상 현상의 종류는 삽입 이상, 삭제 이상, 갱신 이상 세 가지뿐이며 '종속 이상'이라는 이상 현상은 존재하지 않는다. 또한 하나의 릴레이션에 함수적 종속성이 여러 개 존재하는 것 자체는 정상적인 상태이지, 그 자체로 이상 현상이라 부르지 않는다. 따라서 옳지 않은 설명은 4번이다.
보기별 해설
정리
개체관계- 모델(E-R)의 그래픽 표현으로 옳지 않은 것은?
핵심 해설
E-R(개체-관계) 모델은 현실 세계의 데이터를 개체, 속성, 관계로 표현하는 개념적 데이터 모델이며 피터 첸(Peter Chen)이 제안한 표기법을 사용한다. 기호는 개체 타입 = 사각형, 속성 = 타원(원형), 관계 타입 = 마름모, 다중값 속성 = 이중 타원, 개체 타입과 속성을 이어 주는 연결 = 선(직선)으로 정해져 있다. 관계에 참여하는 개체의 대응 수(1:1, 1:N, N:M)는 연결선 위에 숫자로 표기한다. 따라서 '연결 - 삼각형'은 잘못된 대응이며, 연결은 선으로 표현한다.
보기별 해설
정리
DDL(Data Define Language)의 명령어 중 스키마도메인인덱스, , 등을 정의할 때 사용하는 SQL문은?
핵심 해설
DDL(Data Definition Language, 데이터 정의어)은 데이터베이스의 구조와 객체를 정의·변경·삭제하는 언어로 CREATE, ALTER, DROP 세 명령으로 구성된다. 그중 CREATE는 스키마(SCHEMA), 도메인(DOMAIN), 테이블(TABLE), 뷰(VIEW), 인덱스(INDEX) 등을 새로 생성할 때 사용한다. ALTER는 이미 만들어진 테이블의 구조를 수정할 때, DROP은 정의된 객체를 삭제할 때 쓴다. 따라서 스키마·도메인·인덱스 등을 정의하는 명령은 CREATE이다.
보기별 해설
정리
로킹 단위(Locking Granularity)에 대한 설명으로 옳은 것은?
핵심 해설
로킹 단위(Locking Granularity)는 병행 제어에서 한 번에 잠금을 거는 데이터 객체의 크기를 말하며, 데이터베이스 전체·파일·테이블·레코드·필드 등 여러 수준이 될 수 있다. 로킹 단위가 크면 한 번의 락으로 넓은 범위를 묶어 버리므로 관리해야 할 락의 수가 적어져 제어 기법은 단순해지지만, 다른 트랜잭션이 접근할 수 없는 영역이 넓어져 병행성(공유도) 수준은 낮아진다. 반대로 로킹 단위가 작으면 락의 개수가 많아져 오버헤드와 기법의 복잡도가 커지지만 병행성은 높아진다. 따라서 옳은 설명은 '로킹 단위가 크면 병행성 수준이 낮아진다'이다.
보기별 해설
정리
테이블 R과 S에 대한 SQL문이 실행되었을 때실행, 결과로 옳은 것은? R S A B A B SELECT A FROM R 1 A 1 A UNION ALL 3 B 2 B SELECT A FROM S; 1 3 1 1 2 3 3 1
핵심 해설
원본 시험지의 두 릴레이션은 R = {(A=1, B=A), (A=3, B=B)}, S = {(A=1, B=A), (A=2, B=B)}이다. UNION ALL은 두 SELECT 결과를 세로로 이어 붙이는 집합 연산으로, UNION과 달리 중복 튜플을 제거하지 않고 정렬도 하지 않는다. 위쪽 SELECT A FROM R이 R의 A열을 뽑아 1, 3을 만들고, 아래쪽 SELECT A FROM S가 S의 A열을 뽑아 1, 2를 만든 뒤, UNION ALL이 두 결과를 순서 그대로 연결한다. 따라서 결과는 A열 하나에 1, 3, 1, 2 네 행이 되며, 값 1이 두 번 나타나지만 중복 제거 없이 그대로 남는다. 결과 행 수는 R의 튜플 수(2)와 S의 튜플 수(2)의 합인 4이다. 이 형태의 결과 표는 4번 보기이므로 정답은 4번이다.
보기별 해설
정리
관계해석에서 ‘모든 것에 대하여의’ 의미를 나타내는 논리 기호는?
핵심 해설
관계해석(Relational Calculus)은 원하는 결과가 무엇인지를 술어 논리로 기술하는 비절차적 언어로, 코드(E. F. Codd)가 제안했다. 사용하는 정량자(한정자)는 두 가지로, 전칭 정량자 ∀(for all)는 '모든 것에 대하여', 존재 정량자 ∃(there exists)는 '어떤 것이 존재한다'를 의미한다. 따라서 '모든 것에 대하여'를 나타내는 기호는 ∀이다. 참고로 관계대수에서 '모든 ~에 대하여' 조건을 표현하는 연산자는 디비전(÷)으로, ∀에 대응한다.
보기별 해설
정리
DELETE 명령에 대한 설명으로 틀린 것은?
핵심 해설
DELETE는 테이블에 저장된 튜플(행)을 삭제하는 DML 명령으로, 기본 형식은 DELETE FROM 테이블명 [WHERE 조건]이다. WHERE 절을 생략하면 테이블의 모든 행이 지워지지만, 테이블 구조(스키마) 자체는 그대로 남아 빈 테이블로 존재한다. 반면 DROP TABLE은 DDL 명령으로 테이블의 데이터와 정의를 모두 제거해 테이블이 아예 사라진다. 따라서 WHERE 없는 DELETE와 DROP TABLE의 효과가 같다는 2번 설명이 틀렸다.
보기별 해설
정리
관계 데이터 모델에서 릴레이션(Relation)에 포함되어 있는 튜플 (Tuple)의 수를 무엇이라고 하는가?
핵심 해설
관계 데이터 모델에서 릴레이션은 행과 열로 구성된 표이며, 그 크기를 나타내는 두 용어가 차수와 카디널리티이다. 카디널리티(Cardinality)는 릴레이션에 포함된 튜플(행)의 수를 뜻하고, 차수(Degree)는 애트리뷰트(열)의 수를 뜻한다. 예를 들어 열이 3개이고 행이 5개인 테이블은 차수 3, 카디널리티 5이다. 문제는 튜플의 수를 물었으므로 답은 Cardinality이다.
보기별 해설
정리
SQL의 명령을 사용 용도에 따라 DDL, DML, DCL로 구분할 경우, 그 성격이 나머지 셋과 다른 것은?
핵심 해설
SQL은 사용 용도에 따라 DDL, DML, DCL로 분류된다. DDL(정의어)은 CREATE·ALTER·DROP으로 스키마와 객체 구조를 정의하고, DML(조작어)은 SELECT·INSERT·UPDATE·DELETE로 저장된 데이터를 조회하거나 변경하며, DCL(제어어)은 GRANT·REVOKE·COMMIT·ROLLBACK으로 권한과 트랜잭션을 제어한다. 보기 중 SELECT·UPDATE·INSERT는 모두 DML에 속하지만 GRANT는 사용자에게 객체 접근 권한을 부여하는 DCL이다. 따라서 성격이 나머지 셋과 다른 것은 GRANT이다.