본문 바로가기
자격증

정보처리기사 실기 정리& 요약 - 키 종류/무결성/관계대수_⭐

by 경이 Kyung I 2026. 10. 6.
반응형

*은 개인적으로 외우는 방식으로 개인적 의견입니다.

정리 혹은 급한 경우에 참고하세요.

제목에 ⭐이 있으면 해당 내용 꼭 외우세요 시험에 잘나옵니다.

 

 

 

1. 릴레이션 구조 (Relation)

개념

- 릴레이션은 데이터를 원자값으로 갖는 2차원의 표(테이블)이며, 릴레이션 스키마(구조)와 릴레이션 인스턴스(실제 값)로 구성된다.

 

<학생>

학번 주민번호 이름 학년 학과
400 030315-3****** 이순신 4 컴퓨터공학과
422 030721-4****** 유관순 4 물리학과
301 041102-3****** 강감찬 3 수학과
320 050505-3****** 홍길동 3 체육과

 

용어 개념
튜플 (Tuple) 릴레이션을 구성하는 각각의 행. 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.
속성 (Attribute) 데이터베이스를 구성하는 가장 작은 논리적 단위로 릴레이션의 열. 속성의 수를 차수(Degree)라고 한다.
도메인 (Domain) 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합. 예) 학년 속성의 도메인은 {1, 2, 3, 4}
릴레이션 스키마 릴레이션의 구조. 릴레이션 이름과 속성 이름으로 정의한다. 예) 학생(학번, 주민번호, 이름, 학년, 학과)
릴레이션 인스턴스 어느 한 시점에 릴레이션에 실제로 들어 있는 튜플들의 집합

 

예시) <학생> 릴레이션의 차수와 카디널리티

→ 속성이 학번, 주민번호, 이름, 학년, 학과로 5개이므로 차수 = 5

→ 튜플(행)이 4개이므로 카디널리티 = 4

* 카디널리티는 "카운트(행 개수 세기)"로 외우면 차수랑 안 헷갈립니다. 차수는 열, 카디널리티는 행.

 

릴레이션의 특징

- 한 릴레이션에 똑같은 튜플이 포함될 수 없다. (튜플은 모두 다름)

- 튜플 사이에는 순서가 없다.

- 속성 사이에도 순서가 없다.

- 속성 값은 더 이상 쪼갤 수 없는 원자값만 저장한다.

- 속성 이름은 유일해야 하지만, 속성 값은 같은 값이 여러 번 나올 수 있다.

 

 

 

 

2. 키 (Key) ⭐

개념

- 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 튜플들을 서로 구분할 수 있는 기준이 되는 속성이다.

 

키의 조건

- 유일성 (Uniqueness) : 키 값 하나로 튜플 하나만 유일하게 식별할 수 있어야 한다.

- 최소성 (Minimality) : 키를 구성하는 속성 중 하나라도 빼면 유일하게 식별할 수 없도록, 꼭 필요한 최소한의 속성으로만 구성되어야 한다.

 

<수강>

학번 과목번호 성적
400 C123 A
400 C312 B
422 C123 A
301 E412 C

 

키의 종류

종류 개념 예시
후보키
(Candidate Key)
튜플을 유일하게 식별할 수 있는 속성들의 부분집합. 유일성과 최소성을 모두 만족한다. 학번, 주민번호
기본키
(Primary Key)
후보키 중에서 특별히 선정된 주키(Main Key). 중복 값과 NULL 값을 가질 수 없다. 학번
대체키
(Alternate Key)
후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키. 보조키라고도 한다. 주민번호
슈퍼키
(Super Key)
속성들의 집합으로 구성된 키. 모든 튜플을 유일하게 식별할 수 있지만(유일성 O) 최소성은 만족하지 못한다. (학번, 이름)
(주민번호, 학과)
외래키
(Foreign Key)
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합. 참조하는 기본키에 없는 값은 넣을 수 없다. (NULL은 가능) <수강>의 학번
→ <학생>의 학번 참조

 

- 이름은 동명이인이 생길 수 있어서 후보키가 될 수 없다.

- 외래키는 원래 NULL이 가능하지만, <수강>의 학번처럼 기본키의 일부이기도 하면 개체 무결성 때문에 NULL이 될 수 없다.

- <수강>은 학번만으로는 400이 두 번 나와서 구분이 안 된다. (학번, 과목번호)를 합쳐야 유일하므로 기본키는 (학번, 과목번호)이다.

 

유일성 / 최소성 정리

구분 유일성 최소성
후보키 O O
기본키 O O
대체키 O O
슈퍼키 O X

※ 엄밀히 말하면 후보키도 슈퍼키에 포함되지만(최소성까지 갖춘 슈퍼키 = 후보키), 시험에서는 "유일성은 만족, 최소성은 불만족"으로 구분해서 물어봅니다.

 

* 키는 반장 선거로 외웁니다.

반장 선거에 나온 후보들이 후보키, 그중 뽑힌 반장이 기본키, 떨어진 후보는 대체키.

후보 한 명이 친구들을 우르르 데리고 다니면 그 무리가 슈퍼키. 무리 안에 후보가 있으니 누군지는 알아볼 수 있지만(유일성 O), 쓸데없이 많다(최소성 X).

다른 반 반장 명찰을 빌려 단 학생이 외래키. (다른 릴레이션의 기본키를 참조)

 

문제) 다음 설명에 해당하는 키를 쓰시오.

"릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못하는 키"

→ 정답 : 슈퍼키 (Super Key)

 

문제) <학생> 릴레이션에서 학번을 기본키로 정했을 때, 주민번호는 어떤 키인지 쓰시오.

→ 정답 : 대체키 (Alternate Key) - 후보키 중 기본키로 뽑히지 않은 나머지

 

 

 

 

3. 무결성 (Integrity) ⭐

개념

- 무결성은 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.

- 무결성 제약 조건은 부정확한 자료가 저장되는 것을 막아 데이터의 정확성을 보장하기 위한 규칙이다.

 

무결성의 종류

종류 개념
개체 무결성 ⭐
(Entity Integrity)
기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복 값을 가질 수 없다.
참조 무결성 ⭐
(Referential Integrity)
외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 같아야 한다. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
도메인 무결성 ⭐
(Domain Integrity)
주어진 속성 값은 정의된 도메인에 속한 값이어야 한다.
사용자 정의 무결성 속성 값들이 사용자가 정의한 제약 조건을 만족해야 한다.
NULL 무결성 릴레이션의 특정 속성 값은 NULL이 될 수 없도록 하는 규정
고유 무결성 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다는 규정
키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
관계 무결성 튜플의 삽입 가능 여부, 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계가 적절한지를 지정한 규정

 

예시 - 위반되는 경우

예시 설명
<학생>에 학번이 NULL인 튜플 삽입 기본키는 NULL일 수 없다 → 개체 무결성 위반
<학생>에 학번 400인 튜플을 하나 더 삽입 기본키 값이 중복된다 → 개체 무결성 위반
<수강>에 학번 999인 튜플 삽입 <학생>에 999번 학생이 없다 → 참조 무결성 위반
<학생>에서 학번 400 삭제 <수강>에 400을 참조하는 튜플이 남는다 → 참조 무결성 위반 (아래 옵션에 따라 거부되거나 같이 삭제)
<수강>의 성적에 Z 입력 성적 도메인이 {A, B, C, D, F}라면 → 도메인 무결성 위반

 

참조 무결성 옵션 (SQL의 ON DELETE / ON UPDATE와 같이 나옴)

옵션 개념
제한 (RESTRICT / NO ACTION) 참조하는 튜플이 있으면 삭제·변경을 거부
연쇄 (CASCADE) 참조되는 튜플을 삭제·변경하면 참조하는 튜플도 함께 삭제·변경
널 값 (SET NULL) 참조되는 튜플이 삭제·변경되면 참조하는 튜플의 외래키 값을 NULL로 변경
기본값 (SET DEFAULT) 참조되는 튜플이 삭제·변경되면 참조하는 튜플의 외래키 값을 기본값으로 변경

 

* 개기참외 → 개체 무결성은 기본키, 참조 무결성은 외래키. "개기는 참외"로 외우면 안 섞여요.

 

문제) 다음 설명에 해당하는 무결성 제약 조건을 쓰시오.

"릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다."

→ 정답 : 참조 무결성

 

 

 

 

4. 관계대수 (Relational Algebra) ⭐

개념

- 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는지를 기술하는 절차적인 언어이다.

- 피연산자도 릴레이션이고, 연산 결과도 릴레이션이다.

- 순수 관계 연산자와 일반 집합 연산자로 나뉜다.

 

순수 관계 연산자

연산자 기호 개념
Select σ
(시그마)
릴레이션에서 조건을 만족하는 튜플(행)들의 부분집합을 구한다. 행을 고르므로 수평 연산이라고도 한다.
표기 : σ조건(R)
Project π
(파이)
릴레이션에서 주어진 속성(열)만 추출한다. 열을 고르므로 수직 연산이라고도 하며, 결과에 중복이 생기면 제거한다.
표기 : π속성리스트(R)
Join ⋈ 공통 속성을 기준으로 두 릴레이션을 합쳐 새로운 릴레이션을 만든다. Join 결과는 교차곱(×)을 한 뒤 Select를 한 것과 같다.
표기 : R ⋈키 S
Division ÷ R(X)와 S(Y)에서 X ⊃ Y일 때, R의 튜플 중 S의 속성값을 모두 가진 튜플에서 S의 속성을 제외한 속성만 구한다.
표기 : R ÷ S

 

- Join 종류 : 세타 조인(=, ≠, <, ≤, >, ≥ 조건으로 조인), 동일 조인(= 조건, 공통 속성이 중복으로 남음), 자연 조인(동일 조인에서 중복 속성을 제거, ⋈N)

 

예시) 위의 <학생>, <수강> 릴레이션으로 연산하기

 

① σ학년=4(학생) : 학년이 4인 튜플(행)만 고른다.

학번 주민번호 이름 학년 학과
400 030315-3****** 이순신 4 컴퓨터공학과
422 030721-4****** 유관순 4 물리학과

 

② π이름, 학과(학생) : 이름, 학과 속성(열)만 뽑는다.

이름 학과
이순신 컴퓨터공학과
유관순 물리학과
강감찬 수학과
홍길동 체육과

 

③ π이름, 과목번호, 성적(학생 ⋈학번 수강) : 학번으로 조인한 뒤 필요한 열만 뽑는다.

이름 과목번호 성적
이순신 C123 A
이순신 C312 B
유관순 C123 A
강감찬 E412 C

→ 홍길동(320)은 <수강>에 튜플이 없어서 결과에 나오지 않는다.

 

④ R ÷ S : 필수과목을 모두 들은 학생 찾기

<수강과목 (R)>

학번 과목번호
400 C123
400 C312
400 E412
422 C123
301 C312

<필수과목 (S)>

과목번호
C123
C312

<R ÷ S>

학번
400

→ C123과 C312를 둘 다 들은 학생은 400뿐이다. 422는 C123만, 301은 C312만 들었다.

 

일반 집합 연산자

연산자 기호 개념 카디널리티
합집합
(Union)
∪ 두 릴레이션의 튜플을 합친다. 중복 튜플은 제거 |R ∪ S| ≤ |R| + |S|
교집합
(Intersection)
∩ 두 릴레이션에 공통으로 있는 튜플 |R ∩ S| ≤ MIN(|R|, |S|)
차집합
(Difference)
− R에는 있지만 S에는 없는 튜플 |R − S| ≤ |R|
교차곱
(Cartesian Product)
× 두 릴레이션의 튜플들을 모두 짝지어 연결 |R × S| = |R| × |S|
차수 = R 차수 + S 차수

- 합집합·교집합·차집합은 두 릴레이션이 합병 가능(Union-compatible)해야 한다. 즉 차수가 같고, 대응하는 속성의 도메인이 같아야 한다.

 

* 시그마는 셀렉트(ㅅ↔ㅅ), 파이는 프로젝트(ㅍ↔ㅍ). 초성이 같아요.

* σ는 가로(행)로 자르고 π는 세로(열)로 자른다 → Select는 수평, Project는 수직. ⋈는 나비넥타이처럼 두 테이블을 묶는 Join.

 

문제) 차수가 3, 카디널리티가 4인 릴레이션 R과 차수가 2, 카디널리티가 5인 릴레이션 S가 있다. R × S의 차수와 카디널리티를 쓰시오.

→ 정답 : 차수 5 (3 + 2), 카디널리티 20 (4 × 5)

 

문제) 다음 SQL문과 같은 결과를 내는 관계대수식을 쓰시오.

SELECT 이름 FROM 학생 WHERE 학년 = 3;

→ 정답 : π이름(σ학년=3(학생)) (결과 : 강감찬, 홍길동)

 

 

 

 

5. 관계해석 (Relational Calculus)

개념

- 관계해석은 원하는 정보가 무엇인지만 정의하는 비절차적 특성을 가진 언어이다.

- 코드(E. F. Codd)가 수학의 술어 해석(Predicate Calculus)을 바탕으로 관계 데이터베이스를 위해 제안했다.

- 튜플 관계해석과 도메인 관계해석이 있으며, 관계대수와 관계해석은 표현할 수 있는 능력 면에서 동등하다.

 

구분 관계대수 관계해석
특징 절차적 언어 (어떻게 구할지 순서를 기술) 비절차적 언어 (무엇을 원하는지만 기술)
기반 집합 연산 술어 해석 (Predicate Calculus)

 

관계해석 기호

구분 기호 의미
연산자 ∨ OR
연산자 ∧ AND
연산자 ¬ NOT
정량자 ∀ 전칭 정량자 : 모든 것에 대하여 (for all)
정량자 ∃ 존재 정량자 : 어느 것 하나라도 존재한다 (there exists)

* 대수는 "어떻게(절차)", 해석은 "무엇을(비절차)". ∀는 All의 A를 뒤집은 모양, ∃는 Exist의 E를 뒤집은 모양.

 

 

 

 

- 정리 -

개념 핵심
릴레이션 튜플 = 행 (카디널리티) / 속성 = 열 (차수) / 도메인 = 속성이 가질 수 있는 원자값 집합
키 후보키(유일성 O, 최소성 O) / 기본키(NULL·중복 X) / 대체키 / 슈퍼키(유일성 O, 최소성 X) / 외래키(참조)
무결성 개체(기본키 NULL·중복 X) / 참조(외래키는 NULL 또는 참조 기본키 값) / 도메인(허용된 값만)
관계대수 σ Select(행) / π Project(열) / ⋈ Join / ÷ Division / ∪ ∩ − ×
관계해석 비절차적 / ∀ 전칭 정량자 / ∃ 존재 정량자

 

 

같이 보면 좋은 글

정보처리기사 실기 정리& 요약 - 이상/함수적 종속/정규화_⭐

정보처리기사 실기 정리& 요약 - 데이터 모델의 개념

정보처리기사 실기 정리& 요약 - 논리 데이터 모델의 물리 데이터 모델로 변환_⭐

반응형

댓글