데이터베이스 구축 · 오답노트
2025년 3회
다음 설명의 ( ) 안에 들어갈 내용으로 적합한 것은? 후보키는 릴레이션에 있는 모든 튜플에 대해 유일성과 ( )을 모두 만족시켜야 한다.
핵심 해설
후보키(Candidate Key)는 릴레이션의 튜플을 유일하게 식별할 수 있는 속성 또는 속성 집합으로, 반드시 유일성(Uniqueness)과 최소성(Minimality) 두 가지를 동시에 만족해야 한다. 유일성은 그 키 값으로 릴레이션의 모든 튜플을 서로 구별할 수 있다는 뜻이고, 최소성은 그 키를 구성하는 속성 중 하나라도 빼면 더 이상 유일성이 성립하지 않는다는 뜻이다. 유일성만 만족하고 최소성을 만족하지 못하면 후보키가 아니라 슈퍼키(Super Key)이다. 예를 들어 (학번, 이름)은 유일하게 식별되지만 학번만으로도 충분하므로 최소성을 위반해 슈퍼키일 뿐이며, 학번만 남긴 것이 후보키가 된다.
보기별 해설
정리
E-R 모델의 표현 방법으로 옳지 않은 것은?
핵심 해설
E-R(개체-관계) 다이어그램은 피터 첸(Peter Chen)이 제안한 표기법으로, 도형마다 대응하는 구성 요소가 정해져 있다. 사각형은 개체 타입(Entity Type), 마름모는 관계 타입(Relationship Type), 타원(원)은 속성(Attribute), 이중 타원은 다중값 속성, 밑줄 친 타원은 기본키 속성, 선은 개체와 속성 또는 개체와 관계를 연결하는 링크를 나타낸다. 오각형은 E-R 다이어그램의 표준 기호에 존재하지 않으며, 속성은 오각형이 아니라 타원으로 표기한다. 따라서 옳지 않은 것은 '속성 : 오각형'이다.
보기별 해설
정리
데이터 무결성 제약 조건 중 “개체 무결성 제약조건에” 대한 설명으로 맞는 것은?
핵심 해설
관계형 데이터베이스의 무결성 제약조건은 크게 도메인 무결성, 개체 무결성, 참조 무결성으로 나뉜다. 개체 무결성(Entity Integrity)은 릴레이션의 기본키를 구성하는 속성은 NULL 값을 가질 수 없고 중복된 값도 가질 수 없다는 규칙이다. 기본키가 NULL이면 그 튜플을 식별할 수 없고, 중복되면 서로 다른 튜플을 구분할 수 없어 유일성이 깨지기 때문이다. 도메인 무결성은 속성 값이 정의된 도메인에 속해야 한다는 규칙이고, 참조 무결성은 외래키 값이 참조 릴레이션의 기본키 값이거나 NULL이어야 한다는 규칙이므로 서로 구분해야 한다.
보기별 해설
정리
릴레이션에 대한 설명으로 거리가 먼 것은?
핵심 해설
릴레이션(Relation)은 수학의 집합 개념에 기초하므로 몇 가지 고유한 특성을 갖는다. 첫째, 모든 속성 값은 더 이상 분해할 수 없는 원자값(atomic value)이어야 한다. 둘째, 릴레이션은 튜플의 집합이므로 한 릴레이션 안의 튜플들은 모두 서로 달라야 하며 중복 튜플이 존재할 수 없다. 셋째, 집합에는 순서가 없으므로 튜플 사이에도, 속성 사이에도 순서가 존재하지 않는다. 넷째, 삽입·삭제·갱신 연산에 의해 릴레이션의 내용(인스턴스)은 시간에 따라 계속 변한다. 따라서 '튜플 사이에 순서가 있다'는 서술이 릴레이션의 특성과 어긋난다.
보기별 해설
정리
player 테이블에는 player_name, team_id, height 컬럼이 존재한다. 아래 SQL문에서 문법적 오류가 있는 부분은? (1) SELECT player_name, height (2) FROM player (3) WHERE team_id = ‘korea’ (4) AND height BETWEEN 170 OR 180;
핵심 해설
SQL을 절 단위로 확인하면 오류 위치가 드러난다. (2) FROM player는 조회 대상 테이블을 지정하는 정상적인 절이고, (3) WHERE team_id = 'korea'는 문자열 상수를 작은따옴표로 감싼 올바른 비교 조건이며, (1) SELECT player_name, height는 존재하는 두 컬럼을 프로젝션하는 정상 구문이다. 문제는 (4)의 BETWEEN 구문으로, BETWEEN은 반드시 'BETWEEN 하한 AND 상한' 형태로 써야 하는데 여기서는 AND 대신 OR를 사용해 문법 오류가 발생한다. 즉 height BETWEEN 170 AND 180이 되어야 하며, 이는 170 <= height <= 180과 동일한 의미이다.
보기별 해설
정리
DCL(Data Control Language) 명령어가 아닌 것은?
핵심 해설
SQL은 기능에 따라 DDL, DML, DCL로 분류된다. DDL(정의어)은 CREATE·ALTER·DROP처럼 스키마와 객체 구조를 정의하고, DML(조작어)은 SELECT·INSERT·UPDATE·DELETE처럼 저장된 데이터를 검색하고 조작하며, DCL(제어어)은 GRANT·REVOKE·COMMIT·ROLLBACK처럼 권한·보안·무결성·회복 등 데이터베이스 관리 측면을 제어한다. SELECT는 테이블의 튜플을 조건에 맞게 검색하는 명령이므로 DML에 속하며, 그중에서도 질의어(Query)로 따로 부르기도 한다. 따라서 DCL이 아닌 것은 SELECT이다.
보기별 해설
정리
릴레이션 R 의 모든 결정자(Determinant)가 후보키이면 그 릴레이션 R은 어떤 정규형에 속하는가?
핵심 해설
결정자(Determinant)란 함수 종속 X → Y에서 화살표 왼쪽의 속성 X, 즉 다른 속성의 값을 유일하게 결정하는 속성이다. 보이스코드 정규형(BCNF)은 제3정규형을 만족하면서 릴레이션의 모든 결정자가 후보키인 상태로 정의되며, 강한 제3정규형이라고도 부른다. 제3정규형만 만족한 릴레이션에서는 후보키가 아닌 속성이 다른 속성을 결정하는 경우가 남아 있어 여전히 삽입·삭제·갱신 이상이 발생할 수 있는데, BCNF는 바로 그 결정자를 분해해 제거한다. 따라서 '모든 결정자가 후보키'라는 조건은 BCNF의 정의 그 자체이다.
보기별 해설
정리
A1, A2, A3 3개 속성을 갖는 한 릴레이션에서 A1의 도메인은 3개 값, A2의 도메인은 2개 값, A3의 도메인은 4개 값을 갖는다이. 릴레이션에 존재할 수 있는 가능한 튜플(Tuple)의 최대 수는?
핵심 해설
릴레이션은 수학적으로 각 속성 도메인의 카티션 프로덕트(Cartesian Product)의 부분집합으로 정의된다. 따라서 존재할 수 있는 튜플의 최대 개수는 각 속성 도메인의 원소 개수를 모두 곱한 값이며, 릴레이션에는 중복 튜플이 없으므로 이 값을 넘을 수 없다. 문제에서 A1은 3개 값, A2는 2개 값, A3은 4개 값을 가지므로 최대 튜플 수는 3 × 2 × 4 = 24이다. 여기서 24는 튜플 수(카디널리티)의 상한이고, 속성 수인 차수(degree)는 3으로 별개의 값이라는 점도 함께 기억해야 한다.
보기별 해설
정리
관계대수에 대한 설명으로 틀린 것은?
핵심 해설
관계대수(Relational Algebra)는 릴레이션을 다루기 위한 연산들의 집합으로, 원하는 결과를 얻기 위해 '어떤 연산을 어떤 순서로 수행할지'를 기술하는 절차적(procedural) 언어이다. 연산은 순수 관계 연산자(SELECT σ, PROJECT π, JOIN ⋈, DIVISION ÷)와 일반 집합 연산자(합집합 ∪, 교집합 ∩, 차집합 −, 카티션 프로덕트 ×)로 구분된다. 이에 대비되는 관계해석(Relational Calculus)은 '무엇을 원하는가'만 술어 논리로 기술하는 비절차적(non-procedural) 언어이다. 따라서 관계대수를 비절차적 방법이라고 서술한 보기가 틀렸다.
보기별 해설
정리
정규화된 엔티티속성관계를, , 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복통합분리, , 등을 수행하는 데이터 모델링 기법 은?
핵심 해설
문제 지문은 PDF 추출 과정에서 어순이 흐트러졌으나 '정규화된 엔티티·속성·관계를 시스템의 성능 향상과 개발·운영의 단순화를 위해 중복·통합·분리 등을 수행하는 데이터 모델링 기법'을 묻는 문항이다. 이는 반정규화(De-normalization)의 정의로, 정규화로 테이블이 잘게 나뉘면 조인이 많아져 조회 성능이 떨어지므로 의도적으로 중복을 허용해 성능을 회복하는 기법이다. 반정규화 기법에는 테이블 병합·분할, 중복 테이블 추가, 중복 컬럼 추가, 파생 컬럼 추가 등이 있다. 대가로 데이터 중복에 따른 갱신 이상 위험과 저장 공간 증가를 감수하게 된다.
보기별 해설
정리
트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전에 정상적인 상태로 복구시키는 작업은?
핵심 해설
회복(Recovery)은 트랜잭션 수행 중 하드웨어 고장, 소프트웨어 오류, 정전 등 장애가 발생해 데이터베이스가 손상되었을 때 손상 이전의 일관된 상태로 되돌리는 작업이다. DBMS는 로그(Log)와 덤프(Dump)를 이용해 회복을 수행하며, 대표 기법으로 로그를 이용한 즉시 갱신·지연 갱신 기법, 체크포인트 기법, 그림자 페이징 기법이 있다. 회복 과정에서는 완료된 트랜잭션을 다시 반영하는 REDO와 미완료 트랜잭션의 변경을 취소하는 UNDO 연산이 사용된다. 즉 '장애로 손상된 DB를 정상 상태로 복구하는 작업'의 명칭은 Recovery이다.
보기별 해설
정리
시스템 카탈로그에 대한 설명으로 틀린 것은?
핵심 해설
시스템 카탈로그(System Catalog)는 데이터베이스에 저장된 모든 객체(테이블, 뷰, 인덱스, 사용자, 권한 등)의 정의와 명세를 담고 있는 테이블들의 집합이며, 여기 저장된 정보를 메타 데이터(Meta Data)라고 부른다. 데이터 사전(Data Dictionary)이라고도 하며, 카탈로그 자체가 일반 테이블 형태이므로 사용자는 SELECT 문으로 내용을 조회할 수 있다. 그러나 갱신은 다르다. INSERT·UPDATE·DELETE로 사용자가 직접 카탈로그를 고치면 실제 데이터베이스 상태와 어긋나 무결성이 깨지므로, 카탈로그는 사용자가 DDL 명령을 수행할 때 DBMS가 자동으로 갱신한다. 따라서 사용자가 직접 갱신해야 한다는 서술이 틀렸다.
보기별 해설
정리
속성(attribute)에 대한 설명으로 틀린 것은?
핵심 해설
속성(Attribute)은 개체가 가지는 고유한 특성을 나타내며, 릴레이션에서는 테이블의 열(Column)에 해당하고 파일 구조에서는 데이터 항목 또는 필드(Field)에 대응한다. 데이터베이스를 구성하는 가장 작은 논리적 단위이기도 하다. 여기서 수를 세는 용어를 정확히 구분해야 하는데, 속성의 수는 차수(Degree)라고 하고 튜플(행)의 수는 카디널리티(Cardinality)라고 한다. 따라서 속성의 수를 cardinality라고 한다는 서술이 틀렸으며, 올바른 표현은 degree이다.
보기별 해설
정리
데이터 속성 간의 종속성에 대한 엄밀한 고려없이 잘못 설계된 데이터베이스에서는 데이터 처리 연산 수행 시 각종 이상 현상이 발생할 수 있는데이러한, 이상 현상이 아닌 것은?
핵심 해설
이상 현상(Anomaly)은 함수 종속을 제대로 고려하지 않아 한 릴레이션에 여러 정보가 뒤섞여 저장될 때, 데이터를 조작하면서 원하지 않는 결과가 생기는 현상이다. 종류는 삽입 이상, 삭제 이상, 갱신 이상 세 가지이다. 삽입 이상은 원하지 않는 정보까지 억지로 함께 넣어야 하거나 NULL 때문에 삽입이 불가능한 현상, 삭제 이상은 한 튜플을 지울 때 남겨야 할 정보까지 연쇄적으로 사라지는 현상, 갱신 이상은 중복 저장된 값 중 일부만 고쳐져 데이터가 불일치하게 되는 현상이다. 검색(조회)은 데이터를 변경하지 않으므로 이상 현상에 포함되지 않는다.
보기별 해설
정리
다음 관계 대수 중 순수 관계 연산자가 아닌 것은?
핵심 해설
관계대수의 연산자는 순수 관계 연산자와 일반 집합 연산자로 나뉜다. 순수 관계 연산자는 관계형 모델을 위해 별도로 정의된 네 가지로, SELECT(σ, 조건을 만족하는 튜플 선택), PROJECT(π, 지정한 속성만 추출), JOIN(⋈, 공통 속성을 기준으로 두 릴레이션 결합), DIVISION(÷, 나누는 릴레이션의 모든 값과 대응하는 튜플 추출)이다. 일반 집합 연산자는 수학의 집합론에서 그대로 가져온 합집합(∪), 교집합(∩), 차집합(−), 카티션 프로덕트(×) 네 가지이다. 차집합은 이 일반 집합 연산자에 속하므로 순수 관계 연산자가 아니다.
보기별 해설
정리
트랜잭션의 주요 특성 중 하나로둘, 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션 의 연산이 끼어들 수 없음을 의미하는 것은?
핵심 해설
트랜잭션의 ACID 특성 중 격리성(Isolation)은 여러 트랜잭션이 동시에 병행 수행되더라도 어느 한 트랜잭션의 실행 도중에 다른 트랜잭션의 연산이 끼어들 수 없다는 성질이다. 각 트랜잭션은 다른 트랜잭션이 완료되기 전의 중간 결과를 참조할 수 없으므로, 마치 혼자 수행되는 것처럼 보이게 된다. 이를 보장하기 위해 로킹(Locking), 타임스탬프 순서 기법, 다중 버전 병행제어 같은 병행제어(Concurrency Control) 기법이 사용된다. 격리성이 깨지면 갱신 손실, 오손 판독(Dirty Read), 모순성 같은 문제가 발생한다.
보기별 해설
정리
관계형 데이터베이스에서 다음 설명에 해당하는 키(Key)는? 한 릴레이션 내의 속성들의 집합으로 구성된 키로서, 릴 레이션을 구성하는 모든 튜플에 대한 유일성은 만족시키 지만 최소성은 만족시키지 못한다.
핵심 해설
관계형 데이터베이스의 키는 유일성과 최소성의 만족 여부로 구분된다. 슈퍼키(Super Key)는 릴레이션의 모든 튜플을 유일하게 식별할 수 있는 속성들의 집합으로 유일성은 만족하지만 최소성은 만족하지 않는 키이다. 예컨대 학생 릴레이션에서 (학번, 이름)이나 (학번, 이름, 학과)는 모두 튜플을 유일하게 구분하지만, 학번 하나만으로도 식별이 가능하므로 불필요한 속성이 포함되어 최소성을 위반한다. 여기서 최소성까지 만족하도록 속성을 줄인 것이 후보키이고, 후보키 중 설계자가 선택한 하나가 기본키이다. 따라서 '유일성은 만족하지만 최소성은 만족하지 못하는 키'는 슈퍼키이다.
보기별 해설
정리
물리적 데이터베이스 설계에 대한 설명으로 거리가 먼 것은?
핵심 해설
데이터베이스 설계는 요구조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현 순으로 진행된다. 물리적 설계는 논리적 구조로 표현된 데이터를 실제 저장 장치에 어떤 형태로 저장할지 결정하는 단계로, 저장 레코드의 형식과 순서, 접근 경로, 인덱스 설계 등을 다루며 트랜잭션 처리량(Throughput), 응답 시간, 디스크 용량 같은 성능 요소를 고려한다. 반면 '트랜잭션의 인터페이스를 설계하고 데이터 타입과 타입 간 관계로 표현'하는 것은 논리적 설계 단계의 일이다. 따라서 4번이 물리적 설계와 거리가 먼 설명이다.
보기별 해설
정리
뷰(View)에 대한 설명으로 틀린 것은?
핵심 해설
뷰(View)는 하나 이상의 기본 테이블로부터 유도된 이름을 갖는 가상 테이블로, 실제 데이터를 저장하지 않고 정의만 시스템 카탈로그에 보관된다. 논리적 독립성을 제공하고, 사용자에게 필요한 데이터만 보여 주므로 보안 수단으로도 쓰이며, 뷰 위에 또 다른 뷰를 정의할 수도 있다. 그러나 갱신에는 제약이 많다. 집계 함수나 GROUP BY, DISTINCT를 포함하거나 여러 테이블을 조인한 뷰, 계산식으로 만든 열이 있는 뷰는 삽입·갱신·삭제가 불가능하다. 또한 뷰는 ALTER로 변경할 수 없어 정의를 바꾸려면 DROP 후 다시 CREATE 해야 한다. 따라서 '제약 사항이 없다'는 서술이 틀렸다.
보기별 해설
정리
데이터 모델의 구성 요소 중 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업을 의미하는 것은?
핵심 해설
데이터 모델은 데이터 구조(Data Structure), 연산(Operation), 제약조건(Constraint) 세 가지 구성 요소로 이루어진다. 데이터 구조는 개념 세계나 컴퓨터 세계에서 데이터가 어떤 형태로 조직되고 서로 어떤 관계를 갖는지를 정의하는 정적 성질이다. 연산은 그렇게 정의된 구조에 따라 실제로 표현된 값들을 처리하는 작업, 즉 검색·삽입·삭제·갱신 같은 동적 성질을 가리킨다. 제약조건은 데이터 구조상 표현될 수 있는 값들이 지켜야 할 논리적 제한이다. 문제가 말하는 '실제로 표현된 값들을 처리하는 작업'은 연산(Operation)에 해당한다.