← 목록

데이터베이스 구축 · 오답노트

2025년 3회

Q1

다음 설명의 ( ) 안에 들어갈 내용으로 적합한 것은? 후보키는 릴레이션에 있는 모든 튜플에 대해 유일성과 ( )을 모두 만족시켜야 한다.

1중복성
2최소성
3참조성
4동일성
정답 2번 · 최소성

핵심 해설

후보키(Candidate Key)는 릴레이션의 튜플을 유일하게 식별할 수 있는 속성 또는 속성 집합으로, 반드시 유일성(Uniqueness)과 최소성(Minimality) 두 가지를 동시에 만족해야 한다. 유일성은 그 키 값으로 릴레이션의 모든 튜플을 서로 구별할 수 있다는 뜻이고, 최소성은 그 키를 구성하는 속성 중 하나라도 빼면 더 이상 유일성이 성립하지 않는다는 뜻이다. 유일성만 만족하고 최소성을 만족하지 못하면 후보키가 아니라 슈퍼키(Super Key)이다. 예를 들어 (학번, 이름)은 유일하게 식별되지만 학번만으로도 충분하므로 최소성을 위반해 슈퍼키일 뿐이며, 학번만 남긴 것이 후보키가 된다.

보기별 해설

1. 중복성은 같은 값이 여러 번 나타나는 성질로, 오히려 키가 배제해야 할 성질이다. 후보키 값은 튜플마다 서로 달라야 하므로 중복성을 만족시켜야 한다는 서술은 유일성과 정면으로 어긋난다.
2. 최소성은 키를 구성하는 속성 집합에서 어느 하나라도 제거하면 유일성이 깨지는 성질이다. 후보키는 유일성에 더해 이 최소성까지 만족해야 하며, 최소성이 빠지면 슈퍼키로만 분류된다.
3. 참조성은 외래키(Foreign Key)가 다른 릴레이션의 기본키 값을 참조한다는 개념으로, 참조 무결성 제약조건과 관련된 성질이다. 릴레이션 간 관계를 다루는 개념이라 한 릴레이션 내부의 후보키 조건과는 층위가 다르다.
4. 동일성은 값이 서로 같음을 뜻하는 표현으로 관계형 모델의 키 정의에는 쓰이지 않는 용어이다. 후보키는 튜플들이 서로 동일하지 않아야 성립하므로 의미상으로도 반대이다.

정리

키 계층 — 슈퍼키: 유일성만 / 후보키: 유일성 + 최소성 / 기본키: 후보키 중 선정한 하나 / 대체키: 선정되지 않은 나머지 후보키 / 외래키: 다른 릴레이션의 기본키를 참조.
#데이터베이스
Q2

E-R 모델의 표현 방법으로 옳지 않은 것은?

1개체 타입 : 사각형
2관계 타입 : 마름모
3속성 : 오각형
4연결 : 선
정답 3번 · 속성 : 오각형

핵심 해설

E-R(개체-관계) 다이어그램은 피터 첸(Peter Chen)이 제안한 표기법으로, 도형마다 대응하는 구성 요소가 정해져 있다. 사각형은 개체 타입(Entity Type), 마름모는 관계 타입(Relationship Type), 타원(원)은 속성(Attribute), 이중 타원은 다중값 속성, 밑줄 친 타원은 기본키 속성, 선은 개체와 속성 또는 개체와 관계를 연결하는 링크를 나타낸다. 오각형은 E-R 다이어그램의 표준 기호에 존재하지 않으며, 속성은 오각형이 아니라 타원으로 표기한다. 따라서 옳지 않은 것은 '속성 : 오각형'이다.

보기별 해설

1. 개체 타입을 사각형으로 표기하는 것은 맞다. 개체는 현실 세계에서 독립적으로 존재하며 구별 가능한 대상(학생, 과목 등)으로, 약한 개체(Weak Entity)는 이중 사각형으로 구분해 표기한다.
2. 관계 타입을 마름모로 표기하는 것은 맞다. 관계는 개체 간의 연관성(수강, 소속 등)을 나타내며, 식별 관계는 이중 마름모로 표기하고 마름모 양쪽 선 위에 1:1, 1:N, N:M 같은 대응 수를 적는다.
3. 속성은 오각형이 아니라 타원으로 표기한다. 속성은 개체가 갖는 특성이며, 다중값 속성은 이중 타원, 유도 속성은 점선 타원, 기본키 속성은 타원 안 이름에 밑줄을 그어 나타낸다.
4. 연결을 선으로 표기하는 것은 맞다. 선(링크)은 개체와 속성, 개체와 관계를 이어 주며 전체 참여를 나타낼 때는 이중선을 사용한다.

정리

E-R 다이어그램 기호 — 사각형: 개체, 마름모: 관계, 타원: 속성, 이중 타원: 다중값 속성, 밑줄: 기본키, 선: 연결. 오각형은 사용되지 않는다.
#데이터베이스
Q3

데이터 무결성 제약 조건 중 “개체 무결성 제약조건에” 대한 설명으로 맞는 것은?

1릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다.
2기본키에 속해 있는 애트리뷰트는 널 값이나 중복 값을 가질 수 없다.
3릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
4외래키 값은 참조 릴레이션의 기본키 값과 동일해야 한다.
정답 2번 · 기본키에 속해 있는 애트리뷰트는 널 값이나 중복 값을 가질 수 없다.

핵심 해설

관계형 데이터베이스의 무결성 제약조건은 크게 도메인 무결성, 개체 무결성, 참조 무결성으로 나뉜다. 개체 무결성(Entity Integrity)은 릴레이션의 기본키를 구성하는 속성은 NULL 값을 가질 수 없고 중복된 값도 가질 수 없다는 규칙이다. 기본키가 NULL이면 그 튜플을 식별할 수 없고, 중복되면 서로 다른 튜플을 구분할 수 없어 유일성이 깨지기 때문이다. 도메인 무결성은 속성 값이 정의된 도메인에 속해야 한다는 규칙이고, 참조 무결성은 외래키 값이 참조 릴레이션의 기본키 값이거나 NULL이어야 한다는 규칙이므로 서로 구분해야 한다.

보기별 해설

1. 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만 가져야 한다는 것은 도메인 무결성(Domain Integrity)의 정의이다. 데이터 타입, 길이, CHECK 제약 같은 값의 범위를 규정하는 조건으로, 기본키의 NULL 여부와는 무관하다.
2. 기본키에 속한 애트리뷰트가 널 값이나 중복 값을 가질 수 없다는 것이 개체 무결성 제약조건이다. 기본키는 튜플을 유일하게 식별하는 역할을 하므로 NULL이면 식별 자체가 불가능하고, 중복되면 유일성이 무너진다.
3. 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 이 서술은 참조 무결성(Referential Integrity)의 정의이다. 외래키 값은 참조하는 릴레이션의 기본키에 실제 존재하는 값이거나 NULL이어야 하며, 기본키의 NULL 금지 규칙과는 다른 조건이다.
4. 외래키 값이 참조 릴레이션의 기본키 값과 동일해야 한다는 서술 역시 참조 무결성 쪽 내용이다. 게다가 외래키는 NULL을 허용할 수 있으므로 '반드시 동일해야 한다'는 표현은 참조 무결성의 정확한 진술로도 다소 어긋난다.

정리

무결성 3종 — 도메인 무결성: 속성 값이 도메인 범위 안 / 개체 무결성: 기본키는 NULL·중복 불가 / 참조 무결성: 외래키는 참조 대상 기본키 값이거나 NULL.
#데이터베이스
Q4

릴레이션에 대한 설명으로 거리가 먼 것은?

1튜플들의 삽입삭제, 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
2한 릴레이션에 포함된 튜플들은 모두 상이하다.
3애트리뷰트는 논리적으로 쪼갤 수 없는 원자값으로 저장한다.
4한 릴레이션에 포함된 튜플 사이에는 순서가 있다.
정답 4번 · 한 릴레이션에 포함된 튜플 사이에는 순서가 있다.

핵심 해설

릴레이션(Relation)은 수학의 집합 개념에 기초하므로 몇 가지 고유한 특성을 갖는다. 첫째, 모든 속성 값은 더 이상 분해할 수 없는 원자값(atomic value)이어야 한다. 둘째, 릴레이션은 튜플의 집합이므로 한 릴레이션 안의 튜플들은 모두 서로 달라야 하며 중복 튜플이 존재할 수 없다. 셋째, 집합에는 순서가 없으므로 튜플 사이에도, 속성 사이에도 순서가 존재하지 않는다. 넷째, 삽입·삭제·갱신 연산에 의해 릴레이션의 내용(인스턴스)은 시간에 따라 계속 변한다. 따라서 '튜플 사이에 순서가 있다'는 서술이 릴레이션의 특성과 어긋난다.

보기별 해설

1. 튜플들의 삽입·삭제 등의 작업으로 릴레이션이 시간에 따라 변한다는 것은 옳다. 릴레이션 스키마(구조)는 정적이지만 릴레이션 인스턴스(현재 저장된 튜플 집합)는 연산에 따라 계속 바뀐다.
2. 한 릴레이션에 포함된 튜플들이 모두 상이하다는 것은 옳다. 릴레이션은 집합이므로 동일한 튜플이 두 번 나타날 수 없고, 이 성질 때문에 튜플을 식별하는 후보키가 반드시 존재한다.
3. 애트리뷰트는 논리적으로 쪼갤 수 없는 원자값으로 저장한다는 서술은 옳다. 이 조건을 만족하는 상태가 제1정규형(1NF)이며, 다중값이나 반복 그룹은 허용되지 않는다.
4. 한 릴레이션의 튜플 사이에 순서가 있다는 서술은 틀렸다. 릴레이션은 튜플의 집합이라 튜플 간에도 속성 간에도 순서가 없으며, 조회 결과를 특정 순서로 보려면 ORDER BY로 별도 정렬해야 한다.

정리

릴레이션 특성 — 속성 값은 원자값, 튜플은 모두 상이, 튜플·속성 모두 순서 없음, 인스턴스는 시간에 따라 변함.
#데이터베이스
Q5

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;

1(1)
2(2)
3(3)
4(4)
정답 4번 · (4)

핵심 해설

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과 동일한 의미이다.

보기별 해설

1. (1) SELECT player_name, height는 문법적으로 정상이다. player 테이블에 실제로 존재하는 두 컬럼을 선택 목록에 나열한 형태이며, SELECT는 논리적으로 FROM·WHERE가 끝난 뒤 마지막에 열을 골라내는 절이다.
2. (2) FROM player 역시 정상이다. FROM은 SQL에서 가장 먼저 처리되는 절로 조회 대상 테이블을 지정하며, 테이블 이름 하나만 오는 가장 단순한 형태이므로 오류가 없다.
3. (3) WHERE team_id = 'korea'도 정상이다. WHERE는 FROM이 읽어 온 행 중 조건을 만족하는 행만 남기는 절이고, 문자 상수를 작은따옴표로 감싼 등호 비교는 표준 SQL 문법에 맞다.
4. (4) AND height BETWEEN 170 OR 180이 문법 오류 부분이다. BETWEEN 연산자는 'BETWEEN 하한값 AND 상한값' 형태로만 쓸 수 있으므로 OR를 AND로 바꿔 height BETWEEN 170 AND 180으로 고쳐야 하며, 이는 170 이상 180 이하를 경계값 포함으로 검사한다.

정리

BETWEEN은 항상 'BETWEEN a AND b' 형태이며 a, b 경계값을 포함한다. SQL 처리 순서는 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
#데이터베이스#SQL
Q6

DCL(Data Control Language) 명령어가 아닌 것은?

1COMMIT
2ROLLBACK
3GRANT
4SELECT 3
정답 4번 · SELECT 3

핵심 해설

SQL은 기능에 따라 DDL, DML, DCL로 분류된다. DDL(정의어)은 CREATE·ALTER·DROP처럼 스키마와 객체 구조를 정의하고, DML(조작어)은 SELECT·INSERT·UPDATE·DELETE처럼 저장된 데이터를 검색하고 조작하며, DCL(제어어)은 GRANT·REVOKE·COMMIT·ROLLBACK처럼 권한·보안·무결성·회복 등 데이터베이스 관리 측면을 제어한다. SELECT는 테이블의 튜플을 조건에 맞게 검색하는 명령이므로 DML에 속하며, 그중에서도 질의어(Query)로 따로 부르기도 한다. 따라서 DCL이 아닌 것은 SELECT이다.

보기별 해설

1. COMMIT은 DCL의 트랜잭션 제어 명령이다. 트랜잭션이 수행한 모든 변경을 데이터베이스에 영구적으로 반영하고 트랜잭션을 정상 종료시켜 영속성(Durability)을 확정한다.
2. ROLLBACK은 DCL의 트랜잭션 제어 명령이다. 트랜잭션 수행 중 오류가 생겼을 때 변경 내용을 모두 취소해 트랜잭션 시작 이전 상태로 되돌리며, 원자성(Atomicity)을 보장하는 수단이다.
3. GRANT는 DCL의 권한 부여 명령이다. 특정 사용자나 롤에게 테이블·뷰 등에 대한 SELECT, INSERT 같은 사용 권한을 부여하며, 반대로 부여한 권한을 회수하는 명령은 REVOKE이다.
4. SELECT는 DML(데이터 조작어)에 속하는 검색 명령이다. 저장된 튜플을 조회할 뿐 권한을 부여하거나 트랜잭션을 확정·취소하지 않으므로 DCL이 아니다.

정리

SQL 분류 — DDL: CREATE/ALTER/DROP, DML: SELECT/INSERT/UPDATE/DELETE, DCL: GRANT/REVOKE/COMMIT/ROLLBACK.
#데이터베이스
Q7

릴레이션 R 의 모든 결정자(Determinant)가 후보키이면 그 릴레이션 R은 어떤 정규형에 속하는가?

1제 1 정규형
2제 2 정규형
3보이스코드/ 정규형
4제 4 정규형
정답 3번 · 보이스코드/ 정규형

핵심 해설

결정자(Determinant)란 함수 종속 X → Y에서 화살표 왼쪽의 속성 X, 즉 다른 속성의 값을 유일하게 결정하는 속성이다. 보이스코드 정규형(BCNF)은 제3정규형을 만족하면서 릴레이션의 모든 결정자가 후보키인 상태로 정의되며, 강한 제3정규형이라고도 부른다. 제3정규형만 만족한 릴레이션에서는 후보키가 아닌 속성이 다른 속성을 결정하는 경우가 남아 있어 여전히 삽입·삭제·갱신 이상이 발생할 수 있는데, BCNF는 바로 그 결정자를 분해해 제거한다. 따라서 '모든 결정자가 후보키'라는 조건은 BCNF의 정의 그 자체이다.

보기별 해설

1. 제1정규형은 릴레이션의 모든 속성 값이 더 이상 분해되지 않는 원자값만을 갖는 상태이다. 다중값 속성과 반복 그룹을 제거한 단계일 뿐, 함수 종속의 결정자가 후보키인지는 전혀 따지지 않는다.
2. 제2정규형은 제1정규형을 만족하면서 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속인 상태이다. 복합키의 일부에만 종속되는 부분 함수 종속을 제거한 단계이므로, 결정자 전체를 후보키로 요구하는 조건보다 약하다.
3. 보이스코드 정규형(BCNF)은 릴레이션의 모든 결정자가 후보키인 정규형이다. 제3정규형을 만족해도 후보키가 아닌 결정자가 남으면 이상 현상이 생기는데, BCNF는 그 결정자까지 제거하므로 문제의 조건과 정확히 일치한다.
4. 제4정규형은 BCNF를 만족하면서 다치 종속(MVD) A →→ B가 존재할 때 A가 후보키인 상태이다. 하나의 속성이 여러 값의 집합을 독립적으로 결정하는 다치 종속을 제거하는 단계로, 함수 종속의 결정자 조건과는 다루는 대상이 다르다.

정리

정규화 단계별 제거 대상 — 1NF: 원자값 아닌 속성 / 2NF: 부분 함수 종속 / 3NF: 이행 함수 종속 / BCNF: 후보키가 아닌 결정자 / 4NF: 다치 종속 / 5NF: 조인 종속.
#데이터베이스
Q8

A1, A2, A3 3개 속성을 갖는 한 릴레이션에서 A1의 도메인은 3개 값, A2의 도메인은 2개 값, A3의 도메인은 4개 값을 갖는다이. 릴레이션에 존재할 수 있는 가능한 튜플(Tuple)의 최대 수는?

124
212
38
49
정답 1번 · 24

핵심 해설

릴레이션은 수학적으로 각 속성 도메인의 카티션 프로덕트(Cartesian Product)의 부분집합으로 정의된다. 따라서 존재할 수 있는 튜플의 최대 개수는 각 속성 도메인의 원소 개수를 모두 곱한 값이며, 릴레이션에는 중복 튜플이 없으므로 이 값을 넘을 수 없다. 문제에서 A1은 3개 값, A2는 2개 값, A3은 4개 값을 가지므로 최대 튜플 수는 3 × 2 × 4 = 24이다. 여기서 24는 튜플 수(카디널리티)의 상한이고, 속성 수인 차수(degree)는 3으로 별개의 값이라는 점도 함께 기억해야 한다.

보기별 해설

1. 24는 3 × 2 × 4로 계산한 카티션 프로덕트의 크기이며 이 릴레이션이 가질 수 있는 튜플의 최대 수이다. 세 도메인에서 값을 하나씩 뽑아 만들 수 있는 모든 조합의 개수에 해당한다.
2. 12는 3 × 4 = 12처럼 세 도메인 중 두 개만 곱한 값이다. 속성이 3개이므로 A2의 2도 반드시 곱해야 하며, 하나라도 빠뜨리면 조합의 일부만 세게 된다.
3. 8은 도메인 크기를 곱하지 않고 더하거나(3+2+4=9와 혼동) 2의 3제곱처럼 잘못 계산했을 때 나오는 값이다. 튜플 최대 수는 도메인 크기의 합이나 거듭제곱이 아니라 곱으로 구한다.
4. 9는 3 + 2 + 4 = 9로 도메인 크기를 더한 값이다. 카티션 프로덕트는 각 속성에서 값을 독립적으로 선택한 조합이므로 합이 아니라 곱으로 계산해야 한다.

정리

튜플 최대 수 = 각 속성 도메인 크기의 곱(카티션 프로덕트 크기). 여기서는 3 × 2 × 4 = 24이며, 속성 수 3은 차수(degree)로 별개이다.
#데이터베이스
Q9

관계대수에 대한 설명으로 틀린 것은?

1주어진 릴레이션 조작을 위한 연산의 집합이다.
2일반 집합 연산과 순수 관계 연산으로 구분된다.
3질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시 한다.
4원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 비절 차적 방법이다.
정답 4번 · 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 비절 차적 방법이다.

핵심 해설

관계대수(Relational Algebra)는 릴레이션을 다루기 위한 연산들의 집합으로, 원하는 결과를 얻기 위해 '어떤 연산을 어떤 순서로 수행할지'를 기술하는 절차적(procedural) 언어이다. 연산은 순수 관계 연산자(SELECT σ, PROJECT π, JOIN ⋈, DIVISION ÷)와 일반 집합 연산자(합집합 ∪, 교집합 ∩, 차집합 −, 카티션 프로덕트 ×)로 구분된다. 이에 대비되는 관계해석(Relational Calculus)은 '무엇을 원하는가'만 술어 논리로 기술하는 비절차적(non-procedural) 언어이다. 따라서 관계대수를 비절차적 방법이라고 서술한 보기가 틀렸다.

보기별 해설

1. 주어진 릴레이션 조작을 위한 연산의 집합이라는 설명은 옳다. 관계대수는 릴레이션을 입력받아 릴레이션을 결과로 내놓는 연산자들의 모음이며, 결과가 다시 릴레이션이므로 연산을 계속 이어 붙일 수 있다(폐쇄 성질).
2. 일반 집합 연산과 순수 관계 연산으로 구분된다는 설명도 옳다. 순수 관계 연산자는 SELECT(σ)·PROJECT(π)·JOIN(⋈)·DIVISION(÷)이고, 일반 집합 연산자는 합집합·교집합·차집합·카티션 프로덕트이다.
3. 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다는 설명은 옳으며, 이것이 관계대수가 절차적 언어로 분류되는 이유이다. 예컨대 σ 조건(R ⋈ S)처럼 조인 후 선택인지 선택 후 조인인지가 식에 그대로 드러난다.
4. 원하는 정보와 그것을 어떻게 유도하는지를 기술하는 비절차적 방법이라는 서술은 틀렸다. 비절차적 언어는 관계해석이며, 관계해석은 '무엇을' 원하는지만 술어 논리로 적고 유도 절차는 기술하지 않는다는 점에서도 이 문장은 앞뒤가 맞지 않는다.

정리

관계대수 = 절차적(어떻게 구할지 연산 순서 명시), 관계해석 = 비절차적(무엇을 원하는지만 기술). 순수 관계 연산자는 σ(Select)·π(Project)·⋈(Join)·÷(Division) 4개.
#데이터베이스
Q10

정규화된 엔티티속성관계를, , 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복통합분리, , 등을 수행하는 데이터 모델링 기법 은?

1정규화
2반정규화
3집단화
4머징
정답 2번 · 반정규화

핵심 해설

문제 지문은 PDF 추출 과정에서 어순이 흐트러졌으나 '정규화된 엔티티·속성·관계를 시스템의 성능 향상과 개발·운영의 단순화를 위해 중복·통합·분리 등을 수행하는 데이터 모델링 기법'을 묻는 문항이다. 이는 반정규화(De-normalization)의 정의로, 정규화로 테이블이 잘게 나뉘면 조인이 많아져 조회 성능이 떨어지므로 의도적으로 중복을 허용해 성능을 회복하는 기법이다. 반정규화 기법에는 테이블 병합·분할, 중복 테이블 추가, 중복 컬럼 추가, 파생 컬럼 추가 등이 있다. 대가로 데이터 중복에 따른 갱신 이상 위험과 저장 공간 증가를 감수하게 된다.

보기별 해설

1. 정규화(Normalization)는 함수 종속을 이용해 릴레이션을 무손실 분해함으로써 데이터 중복과 이상 현상을 제거하는 기법이다. 중복을 없애는 방향이므로 '중복을 허용해 성능을 높인다'는 문제 설명과 정반대이다.
2. 반정규화는 정규화된 모델에 의도적으로 중복·통합·분리를 적용해 조인 비용을 줄이고 성능과 운영 편의를 높이는 기법이다. 테이블 병합·분할, 중복 컬럼 및 파생 컬럼 추가 등이 대표적이며, 데이터 무결성 저하를 감수하는 선택이다.
3. 집단화(Aggregation)는 여러 개체와 그들 간의 관계를 하나의 상위 개체처럼 묶어 추상화하는 개념적 모델링 기법이다. 모델의 추상 수준을 높이는 표현 방법일 뿐 성능 향상을 목적으로 중복을 허용하는 기법이 아니다.
4. 머징(Merging)은 여러 대상을 하나로 합치는 일반적인 병합 동작을 가리키는 말로, 반정규화 기법 중 '테이블 병합'의 일부를 설명할 수는 있어도 중복·통합·분리를 아우르는 모델링 기법의 정식 명칭은 아니다.

정리

정규화는 중복 제거로 무결성 확보, 반정규화는 중복 허용으로 성능 확보. 반정규화 기법 — 테이블 병합·분할, 중복 테이블/컬럼 추가, 파생 컬럼 추가.
#데이터베이스#정규화
Q11

트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전에 정상적인 상태로 복구시키는 작업은?

1Recovery
2Commit
3Abort
4Restart
정답 1번 · Recovery

핵심 해설

회복(Recovery)은 트랜잭션 수행 중 하드웨어 고장, 소프트웨어 오류, 정전 등 장애가 발생해 데이터베이스가 손상되었을 때 손상 이전의 일관된 상태로 되돌리는 작업이다. DBMS는 로그(Log)와 덤프(Dump)를 이용해 회복을 수행하며, 대표 기법으로 로그를 이용한 즉시 갱신·지연 갱신 기법, 체크포인트 기법, 그림자 페이징 기법이 있다. 회복 과정에서는 완료된 트랜잭션을 다시 반영하는 REDO와 미완료 트랜잭션의 변경을 취소하는 UNDO 연산이 사용된다. 즉 '장애로 손상된 DB를 정상 상태로 복구하는 작업'의 명칭은 Recovery이다.

보기별 해설

1. Recovery(회복)는 장애로 손상된 데이터베이스를 손상 이전의 일관된 상태로 되돌리는 작업이다. 로그를 기반으로 REDO(재실행)와 UNDO(취소)를 수행하며, 즉시 갱신·지연 갱신·체크포인트·그림자 페이징 등의 기법이 쓰인다.
2. Commit은 트랜잭션이 성공적으로 끝났을 때 그 변경을 데이터베이스에 영구 반영하고 트랜잭션을 정상 종료시키는 연산이다. 장애 발생 후의 복구 작업이 아니라 정상 종료 시점의 확정 행위이다.
3. Abort는 트랜잭션이 실패(Failed) 상태가 되어 수행을 중단하고 철회되는 상태 전이를 가리킨다. 해당 트랜잭션 하나를 롤백하는 것이지, 손상된 데이터베이스 전체를 이전 상태로 복원하는 작업을 뜻하지는 않는다.
4. Restart는 시스템이나 DBMS를 다시 시작하는 동작이다. 재시작 시점에 회복 절차가 함께 수행되기는 하지만, 데이터를 이전 상태로 복원하는 작업 자체를 가리키는 용어는 Recovery이다.

정리

회복(Recovery) = 장애 발생 시 일관된 상태로 복원. 수단은 로그·덤프, 연산은 REDO(완료 트랜잭션 재반영)·UNDO(미완료 트랜잭션 취소).
#데이터베이스#트랜잭션
Q12

시스템 카탈로그에 대한 설명으로 틀린 것은?

1시스템 카탈로그의 갱신은 무결성 유지를 위하여 SQL을 이용 하여 사용자가 직접 갱신하여야 한다.
2데이터베이스에 포함되는 데이터 객체에 대한 정의나 명세에 대한 정보를 유지관리한다.
3DBMS가 스스로 생성하고 유지하는 데이터베이스 내의 특별 한 테이블의 집합체이다.
4카탈로그에 저장된 정보를 메타 데이터라고도 한다.
정답 1번 · 시스템 카탈로그의 갱신은 무결성 유지를 위하여 SQL을 이용 하여 사용자가 직접 갱신하여야 한다.

핵심 해설

시스템 카탈로그(System Catalog)는 데이터베이스에 저장된 모든 객체(테이블, 뷰, 인덱스, 사용자, 권한 등)의 정의와 명세를 담고 있는 테이블들의 집합이며, 여기 저장된 정보를 메타 데이터(Meta Data)라고 부른다. 데이터 사전(Data Dictionary)이라고도 하며, 카탈로그 자체가 일반 테이블 형태이므로 사용자는 SELECT 문으로 내용을 조회할 수 있다. 그러나 갱신은 다르다. INSERT·UPDATE·DELETE로 사용자가 직접 카탈로그를 고치면 실제 데이터베이스 상태와 어긋나 무결성이 깨지므로, 카탈로그는 사용자가 DDL 명령을 수행할 때 DBMS가 자동으로 갱신한다. 따라서 사용자가 직접 갱신해야 한다는 서술이 틀렸다.

보기별 해설

1. 시스템 카탈로그의 갱신을 사용자가 SQL로 직접 해야 한다는 서술은 틀렸다. 사용자는 SELECT로 조회만 할 수 있고, 갱신은 CREATE·ALTER·DROP 같은 DDL 실행 시 DBMS가 자동으로 수행해야 무결성이 유지된다.
2. 데이터베이스에 포함되는 데이터 객체의 정의나 명세 정보를 유지·관리한다는 설명은 옳다. 테이블·뷰·인덱스의 구조, 제약조건, 사용자 권한, 통계 정보 등이 카탈로그에 저장된다.
3. DBMS가 스스로 생성하고 유지하는 데이터베이스 내의 특별한 테이블 집합체라는 설명도 옳다. 카탈로그는 일반 테이블과 같은 구조를 가져 SQL로 조회할 수 있다는 점이 특징이다.
4. 카탈로그에 저장된 정보를 메타 데이터라고 부른다는 설명은 옳다. 메타 데이터는 '데이터에 관한 데이터'로, 실제 사용자 데이터가 아니라 그 데이터의 구조와 속성을 기술하는 정보이다.

정리

시스템 카탈로그 = 메타 데이터를 담은 DBMS 관리 테이블(데이터 사전). 사용자는 SELECT 조회만 가능하고, 갱신은 DDL 수행 시 DBMS가 자동으로 한다.
#데이터베이스#SQL
Q13

속성(attribute)에 대한 설명으로 틀린 것은?

1속성은 개체의 특성을 기술한다.
2속성은 데이터베이스를 구성하는 가장 작은 논리적 단위이다.
3속성은 파일 구조상 데이터 항목 또는 데이터 필드에 해당된다.
4속성의 수를 “cardinality”라고 한다.
정답 4번 · 속성의 수를 “cardinality”라고 한다.

핵심 해설

속성(Attribute)은 개체가 가지는 고유한 특성을 나타내며, 릴레이션에서는 테이블의 열(Column)에 해당하고 파일 구조에서는 데이터 항목 또는 필드(Field)에 대응한다. 데이터베이스를 구성하는 가장 작은 논리적 단위이기도 하다. 여기서 수를 세는 용어를 정확히 구분해야 하는데, 속성의 수는 차수(Degree)라고 하고 튜플(행)의 수는 카디널리티(Cardinality)라고 한다. 따라서 속성의 수를 cardinality라고 한다는 서술이 틀렸으며, 올바른 표현은 degree이다.

보기별 해설

1. 속성은 개체의 특성을 기술한다는 설명은 옳다. 예를 들어 학생 개체의 학번, 이름, 학년이 각각 그 개체를 설명하는 속성이 된다.
2. 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위라는 설명도 옳다. 속성 값은 더 이상 논리적으로 분해되지 않는 원자값이어야 하며, 이것이 제1정규형의 조건이기도 하다.
3. 속성은 파일 구조상 데이터 항목 또는 데이터 필드에 해당한다는 설명은 옳다. 릴레이션-파일, 튜플-레코드, 속성-필드로 대응시켜 기억하면 된다.
4. 속성의 수를 cardinality라고 한다는 서술은 틀렸다. 속성(열)의 수는 차수(Degree)이고, cardinality는 튜플(행)의 수를 가리키는 용어이다.

정리

차수(Degree) = 속성(열)의 수, 카디널리티(Cardinality) = 튜플(행)의 수. 대응 관계는 릴레이션-파일, 튜플-레코드, 속성-필드.
#데이터베이스
Q14

데이터 속성 간의 종속성에 대한 엄밀한 고려없이 잘못 설계된 데이터베이스에서는 데이터 처리 연산 수행 시 각종 이상 현상이 발생할 수 있는데이러한, 이상 현상이 아닌 것은?

1검색 이상
2삽입 이상
3삭제 이상
4갱신 이상
정답 1번 · 검색 이상

핵심 해설

이상 현상(Anomaly)은 함수 종속을 제대로 고려하지 않아 한 릴레이션에 여러 정보가 뒤섞여 저장될 때, 데이터를 조작하면서 원하지 않는 결과가 생기는 현상이다. 종류는 삽입 이상, 삭제 이상, 갱신 이상 세 가지이다. 삽입 이상은 원하지 않는 정보까지 억지로 함께 넣어야 하거나 NULL 때문에 삽입이 불가능한 현상, 삭제 이상은 한 튜플을 지울 때 남겨야 할 정보까지 연쇄적으로 사라지는 현상, 갱신 이상은 중복 저장된 값 중 일부만 고쳐져 데이터가 불일치하게 되는 현상이다. 검색(조회)은 데이터를 변경하지 않으므로 이상 현상에 포함되지 않는다.

보기별 해설

1. 검색 이상은 존재하지 않는 용어이다. 검색(SELECT)은 저장된 데이터를 읽기만 할 뿐 상태를 바꾸지 않으므로 데이터 불일치나 정보 손실이 발생할 여지가 없어 이상 현상으로 분류되지 않는다.
2. 삽입 이상(Insertion Anomaly)은 실제 이상 현상이다. 새 튜플을 넣을 때 불필요한 정보까지 함께 입력해야 하거나, 기본키 일부가 결정되지 않아 아예 삽입할 수 없는 상황이 생긴다.
3. 삭제 이상(Deletion Anomaly)도 실제 이상 현상이다. 하나의 튜플을 삭제할 때 그 튜플에만 들어 있던 다른 정보까지 함께 사라져 유지해야 할 데이터가 연쇄적으로 소실된다.
4. 갱신 이상(Update Anomaly)도 실제 이상 현상이다. 같은 값이 여러 튜플에 중복 저장된 상태에서 일부만 수정하면 같은 사실에 대해 서로 다른 값이 남아 데이터 불일치가 발생한다.

정리

이상 현상 3종 — 삽입 이상(불필요 정보 강제 입력/삽입 불가), 삭제 이상(연쇄 정보 손실), 갱신 이상(일부만 수정되어 불일치). 검색 이상은 없다.
#데이터베이스
Q15

다음 관계 대수 중 순수 관계 연산자가 아닌 것은?

1차집합(Difference)
2프로젝트(Project)
3조인(Join)
4디비전(Division)
정답 1번 · 차집합(Difference)

핵심 해설

관계대수의 연산자는 순수 관계 연산자와 일반 집합 연산자로 나뉜다. 순수 관계 연산자는 관계형 모델을 위해 별도로 정의된 네 가지로, SELECT(σ, 조건을 만족하는 튜플 선택), PROJECT(π, 지정한 속성만 추출), JOIN(⋈, 공통 속성을 기준으로 두 릴레이션 결합), DIVISION(÷, 나누는 릴레이션의 모든 값과 대응하는 튜플 추출)이다. 일반 집합 연산자는 수학의 집합론에서 그대로 가져온 합집합(∪), 교집합(∩), 차집합(−), 카티션 프로덕트(×) 네 가지이다. 차집합은 이 일반 집합 연산자에 속하므로 순수 관계 연산자가 아니다.

보기별 해설

1. 차집합(Difference, −)은 일반 집합 연산자이다. R − S는 릴레이션 R에는 있고 S에는 없는 튜플만 반환하며, 두 릴레이션의 차수와 도메인이 같아야(합병 가능해야) 수행할 수 있다.
2. 프로젝트(Project, π)는 순수 관계 연산자이다. 릴레이션에서 지정한 속성(열)만 골라내는 수직적 부분집합 연산이며, 결과에서 중복 튜플은 자동으로 제거된다.
3. 조인(Join, ⋈)은 순수 관계 연산자이다. 공통 속성 값을 기준으로 두 릴레이션의 튜플을 연결해 하나의 릴레이션으로 만들며, 자연 조인·세타 조인·외부 조인 등으로 나뉜다.
4. 디비전(Division, ÷)은 순수 관계 연산자이다. R ÷ S는 S의 모든 튜플과 짝을 이루는 R의 튜플에서 S의 속성을 제외한 값을 반환하며, '모든 ~을 만족하는' 형태의 질의에 쓰인다.

정리

순수 관계 연산자 — SELECT(σ), PROJECT(π), JOIN(⋈), DIVISION(÷). 일반 집합 연산자 — 합집합(∪), 교집합(∩), 차집합(−), 카티션 프로덕트(×).
#데이터베이스
Q16

트랜잭션의 주요 특성 중 하나로둘, 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션 의 연산이 끼어들 수 없음을 의미하는 것은?

1Log
2Consistency
3Isolation
4Durability - 4
정답 3번 · Isolation

핵심 해설

트랜잭션의 ACID 특성 중 격리성(Isolation)은 여러 트랜잭션이 동시에 병행 수행되더라도 어느 한 트랜잭션의 실행 도중에 다른 트랜잭션의 연산이 끼어들 수 없다는 성질이다. 각 트랜잭션은 다른 트랜잭션이 완료되기 전의 중간 결과를 참조할 수 없으므로, 마치 혼자 수행되는 것처럼 보이게 된다. 이를 보장하기 위해 로킹(Locking), 타임스탬프 순서 기법, 다중 버전 병행제어 같은 병행제어(Concurrency Control) 기법이 사용된다. 격리성이 깨지면 갱신 손실, 오손 판독(Dirty Read), 모순성 같은 문제가 발생한다.

보기별 해설

1. Log(로그)는 트랜잭션이 수행한 변경 내역을 시간 순으로 기록해 두는 파일로, 장애 발생 시 REDO·UNDO를 수행하기 위한 회복 수단이다. 트랜잭션의 특성(ACID)이 아니라 구현을 뒷받침하는 도구이다.
2. Consistency(일관성)는 트랜잭션 수행 전에 데이터베이스가 일관된 상태였다면 수행이 끝난 뒤에도 일관된 상태를 유지해야 한다는 특성이다. 무결성 제약조건의 유지에 관한 것이지 다른 트랜잭션의 간섭 차단을 뜻하지는 않는다.
3. Isolation(격리성/독립성)은 병행 수행 중인 트랜잭션들이 서로의 중간 연산에 끼어들 수 없다는 특성이다. 로킹이나 타임스탬프 기반 병행제어로 보장되며, 깨지면 갱신 손실이나 오손 판독이 발생한다.
4. Durability(영속성/지속성)는 성공적으로 완료(COMMIT)된 트랜잭션의 결과가 시스템 장애가 나더라도 영구히 데이터베이스에 남아야 한다는 특성이다. 완료 후의 결과 보존에 관한 것이므로 수행 중의 간섭 차단과는 다르다.

정리

트랜잭션 ACID — 원자성(All or Nothing), 일관성(수행 전후 일관 상태), 격리성(병행 수행 중 상호 간섭 차단), 영속성(완료 결과 영구 보존).
#데이터베이스#트랜잭션
Q17

관계형 데이터베이스에서 다음 설명에 해당하는 키(Key)는? 한 릴레이션 내의 속성들의 집합으로 구성된 키로서, 릴 레이션을 구성하는 모든 튜플에 대한 유일성은 만족시키 지만 최소성은 만족시키지 못한다.

1후보키
2대체키
3슈퍼키
4외래키
정답 3번 · 슈퍼키

핵심 해설

관계형 데이터베이스의 키는 유일성과 최소성의 만족 여부로 구분된다. 슈퍼키(Super Key)는 릴레이션의 모든 튜플을 유일하게 식별할 수 있는 속성들의 집합으로 유일성은 만족하지만 최소성은 만족하지 않는 키이다. 예컨대 학생 릴레이션에서 (학번, 이름)이나 (학번, 이름, 학과)는 모두 튜플을 유일하게 구분하지만, 학번 하나만으로도 식별이 가능하므로 불필요한 속성이 포함되어 최소성을 위반한다. 여기서 최소성까지 만족하도록 속성을 줄인 것이 후보키이고, 후보키 중 설계자가 선택한 하나가 기본키이다. 따라서 '유일성은 만족하지만 최소성은 만족하지 못하는 키'는 슈퍼키이다.

보기별 해설

1. 후보키(Candidate Key)는 유일성과 최소성을 모두 만족하는 키이다. 최소성까지 요구하므로 '최소성을 만족하지 못한다'는 문제 조건과 어긋난다.
2. 대체키(Alternate Key)는 후보키 중에서 기본키로 선정되지 않고 남은 나머지 키를 말한다. 후보키의 일종이므로 유일성과 최소성을 모두 갖추고 있다.
3. 슈퍼키(Super Key)는 유일성은 만족하지만 최소성은 만족하지 못하는 속성 집합이다. 후보키에 임의의 속성을 더해도 여전히 유일성이 유지되므로 슈퍼키가 되며, 불필요한 속성을 제거해야 후보키가 된다.
4. 외래키(Foreign Key)는 다른 릴레이션의 기본키를 참조하는 속성으로 참조 무결성을 유지하는 역할을 한다. 자기 릴레이션에서는 값이 중복되거나 NULL일 수 있어 유일성 자체를 보장하지 않는다.

정리

슈퍼키 = 유일성만 만족(최소성 X), 후보키 = 유일성 + 최소성, 기본키 = 후보키 중 선택한 것, 대체키 = 나머지 후보키, 외래키 = 타 릴레이션 기본키 참조.
#데이터베이스
Q18

물리적 데이터베이스 설계에 대한 설명으로 거리가 먼 것은?

1물리적 설계의 목적은 효율적인 방법으로 데이터를 저장하는 것이다.
2트랜잭션 처리량과 응답시간디스크, 용량 등을 고려해야 한다.
3저장 레코드의 형식순서접근, , 경로와 같은 정보를 사용하여 설계한다.
4트랜잭션의 인터페이스를 설계하며데이터, 타입 및 데이터 타입들 간의 관계로 표현한다.
정답 4번 · 트랜잭션의 인터페이스를 설계하며데이터, 타입 및 데이터 타입들 간의 관계로 표현한다.

핵심 해설

데이터베이스 설계는 요구조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현 순으로 진행된다. 물리적 설계는 논리적 구조로 표현된 데이터를 실제 저장 장치에 어떤 형태로 저장할지 결정하는 단계로, 저장 레코드의 형식과 순서, 접근 경로, 인덱스 설계 등을 다루며 트랜잭션 처리량(Throughput), 응답 시간, 디스크 용량 같은 성능 요소를 고려한다. 반면 '트랜잭션의 인터페이스를 설계하고 데이터 타입과 타입 간 관계로 표현'하는 것은 논리적 설계 단계의 일이다. 따라서 4번이 물리적 설계와 거리가 먼 설명이다.

보기별 해설

1. 물리적 설계의 목적이 효율적인 방법으로 데이터를 저장하는 것이라는 설명은 옳다. 저장 구조와 접근 경로를 정해 응답 시간과 저장 공간 활용을 최적화하는 것이 이 단계의 목표이다.
2. 트랜잭션 처리량, 응답 시간, 디스크 용량 등을 고려해야 한다는 설명도 옳다. 이 세 가지는 물리적 설계의 대표적인 성능 평가 기준이다.
3. 저장 레코드의 형식과 순서, 접근 경로 같은 정보를 사용해 설계한다는 설명도 옳다. 레코드 배치 방법, 인덱스 구조, 클러스터링 등이 여기에 포함된다.
4. 트랜잭션의 인터페이스를 설계하고 데이터 타입 및 타입 간 관계로 표현하는 것은 논리적 설계 단계의 작업이다. 논리적 설계에서 목표 DBMS에 맞는 스키마로 변환하고 정규화를 수행하며, 물리적 저장 구조는 다루지 않는다.

정리

DB 설계 단계 — 개념적 설계(E-R 모델, 개념 스키마), 논리적 설계(목표 DBMS 스키마 변환·정규화·트랜잭션 인터페이스), 물리적 설계(저장 구조·접근 경로·인덱스, 응답시간/처리량 고려).
#데이터베이스#트랜잭션
Q19

뷰(View)에 대한 설명으로 틀린 것은?

1뷰 위에 또 다른 뷰를 정의할 수 있다.
2DBA는 보안성 측면에서 뷰를 활용할 수 있다.
3사용자가 필요한 정보를 요구에 맞게 가공하여 뷰로 만들 수 있다.
4SQL을 사용하면 뷰에 대한 삽입갱신삭제, , 연산 시 제약 사항 이 없다.
정답 4번 · SQL을 사용하면 뷰에 대한 삽입갱신삭제, , 연산 시 제약 사항 이 없다.

핵심 해설

뷰(View)는 하나 이상의 기본 테이블로부터 유도된 이름을 갖는 가상 테이블로, 실제 데이터를 저장하지 않고 정의만 시스템 카탈로그에 보관된다. 논리적 독립성을 제공하고, 사용자에게 필요한 데이터만 보여 주므로 보안 수단으로도 쓰이며, 뷰 위에 또 다른 뷰를 정의할 수도 있다. 그러나 갱신에는 제약이 많다. 집계 함수나 GROUP BY, DISTINCT를 포함하거나 여러 테이블을 조인한 뷰, 계산식으로 만든 열이 있는 뷰는 삽입·갱신·삭제가 불가능하다. 또한 뷰는 ALTER로 변경할 수 없어 정의를 바꾸려면 DROP 후 다시 CREATE 해야 한다. 따라서 '제약 사항이 없다'는 서술이 틀렸다.

보기별 해설

1. 뷰 위에 또 다른 뷰를 정의할 수 있다는 설명은 옳다. 뷰도 조회 대상이 되는 가상 테이블이므로 다른 뷰의 FROM 절에 올 수 있으며, 원본 뷰가 삭제되면 그것에 의존하는 뷰도 함께 삭제된다.
2. DBA가 보안성 측면에서 뷰를 활용할 수 있다는 설명도 옳다. 민감한 열이나 행을 제외한 뷰만 사용자에게 권한으로 부여하면 기본 테이블 전체를 노출하지 않고도 필요한 데이터만 제공할 수 있다.
3. 사용자가 필요한 정보를 요구에 맞게 가공해 뷰로 만들 수 있다는 설명도 옳다. 조인·조건·정렬을 포함한 SELECT 문을 뷰로 정의해 두면 복잡한 질의를 단순한 이름으로 재사용할 수 있다.
4. SQL로 뷰에 삽입·갱신·삭제 연산을 할 때 제약 사항이 없다는 서술은 틀렸다. 집계 함수·GROUP BY·DISTINCT를 포함하거나 조인으로 만든 뷰, 계산 열이 있는 뷰는 갱신할 수 없으며, 뷰 정의 자체도 ALTER로 수정할 수 없다.

정리

뷰 = 기본 테이블에서 유도된 가상 테이블. 장점은 논리적 독립성·보안·질의 단순화, 단점은 ALTER 불가(DROP 후 재생성)와 삽입·갱신·삭제 시 제약.
#데이터베이스#SQL#보안
Q20

데이터 모델의 구성 요소 중 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업을 의미하는 것은?

1Data Structure
2Operation
3Relation
4Constraint
정답 2번 · Operation

핵심 해설

데이터 모델은 데이터 구조(Data Structure), 연산(Operation), 제약조건(Constraint) 세 가지 구성 요소로 이루어진다. 데이터 구조는 개념 세계나 컴퓨터 세계에서 데이터가 어떤 형태로 조직되고 서로 어떤 관계를 갖는지를 정의하는 정적 성질이다. 연산은 그렇게 정의된 구조에 따라 실제로 표현된 값들을 처리하는 작업, 즉 검색·삽입·삭제·갱신 같은 동적 성질을 가리킨다. 제약조건은 데이터 구조상 표현될 수 있는 값들이 지켜야 할 논리적 제한이다. 문제가 말하는 '실제로 표현된 값들을 처리하는 작업'은 연산(Operation)에 해당한다.

보기별 해설

1. Data Structure(구조)는 데이터를 어떻게 조직하고 개체 간 관계를 어떻게 표현할지를 정의하는 정적 요소이다. 값을 처리하는 작업이 아니라 그 작업이 이루어질 틀을 규정한다.
2. Operation(연산)은 데이터 구조에 따라 실제 표현된 값들을 처리하는 작업을 명세하는 동적 요소이다. 검색·삽입·삭제·갱신처럼 데이터베이스를 조작하는 기본 도구를 정의한다.
3. Relation(릴레이션)은 관계형 데이터 모델에서 데이터를 담는 2차원 테이블을 가리키는 용어로, 데이터 모델의 세 구성 요소에 포함되지 않는다. 굳이 대응시키면 데이터 구조 쪽에 속하는 개념이다.
4. Constraint(제약조건)는 데이터 구조상 표현될 수 있는 값들이 만족해야 할 논리적 제한을 규정하는 요소이다. 무결성 조건 등을 명시할 뿐 값을 처리하는 작업 자체는 아니다.

정리

데이터 모델 구성 요소 3가지 — 구조(Structure, 정적 조직과 관계), 연산(Operation, 값 처리 작업), 제약조건(Constraint, 값이 지켜야 할 논리적 제한).
#데이터베이스