Kong Eunho

기말고사 대비 개념정리

2025년 12월 11일 22시
카테고리 - LECTURE, 데이터베이스실무


데이터베이스실무(변시우) 기말고사 대비 개념정리

데이터베이스의 개념

전통적 파일 정보 시스템의 문제점

  1. 데이터 종속성
  2. 데이터 중복성

데이터베이스 시스템(위 문제를 해결)

  1. 데이터 독립성
  2. 제어된 중복

데이터베이스의 정의

  1. 공용 데이터의 저장소
    여러 사용자가 공동으로 소유하고 유지
  2. 통합 데이터의 저장소
    중복을 최소화하여 통합
  3. 운영 데이터의 저장소
    조직의 고유 업무를 위해 사용
  4. 저장 데이터의 저장소
    컴퓨터가 접근 가능한 매체에 저장

데이터베이스의 특성

  1. 실시간 접근(realtime accessibility):
    수많은 사용자가 접근해도 즉시 응답
  2. 끊임없는 변화(continuous evolution):
    현실 세계와 같이 계속해서 변화하여 현실 세계를 반영
  3. 동시 공용(concurrent sharing):
    여러 사용자가 동시에 같은 데이터 이용 가능
  4. 내용 기반 참조(content based referencing):
    주소(위치)가 아니라 값(내용)으로 데이터에 접근

데이터베이스 시스템

데이터베이스 사용자의 분류

  1. 일반 사용자(최종 사용자)
    전문 지식 없이 데이터베이스에 접근하는 사용자
  2. 응용 프로그래머
    프로그래밍 언어로 응용 프로그램을 개발하며, 데이터 언어나 DBMS 실행 명령어를 작성
  3. 데이터베이스 관리자(DBA)
    DB를 구축하고 운영, 통제하는 슈퍼 사용자

데이터 언어(SQL: Structured Query Language)

  1. 데이터 정의어(DDL: Data Definition Language)
    데이터베이스 구조를 정의하거나 변경
    CREATE, ALTER, DROP 등
  2. 데이터 조작어(DML: Data Manipulation Language)
    데이터의 입력, 수정, 삭제, 검색 요청
    INSERT, UPDATE, DELETE, SELECT 등
  3. 데이터 제어어(DCL: Data Control Language)
    데이터베이스를 제어하고 통제(보안, 무결성, 회복 등)
    GRANT, REVOKE, CREATE USER, COMMIT, ROLLBACK 등

DBMS의 필수 기능

  1. 정의 기능:
    통합 데이터베이스 구조를 생성, 삭제, 변경
  2. 조작 기능:
    데이터에 접근하여 입력, 수정, 삭제, 검색 처리
  3. 제어 기능:
    데이터를 정확하고 안전하게 유지하도록 통제(보안, 권한, 무결성, 회복)

데이터 모델의 종류

  1. 계층형(Hierarchical) 데이터 모델:
    트리 형태, 1:n 관계, 검색 속도 빠름
  2. 네트워크형(Network) 데이터 모델:
    포인터 사용, m:n 표현 용이
  3. 관계형(Relational) 데이터 모델:
    테이블 형태, 키(key)를 통해 관계 표현, 이해하기 쉬움
    MySQL, Oracle이 속함
  4. 객체 지향형(Object Oriented) 데이터 모델:
    객체 단위, OID 사용, 상속/캡슐화 개념 도입
  5. 객체 관계형(Object Relational) 데이터 모델:
    관계형을 기본으로 객체 개념 추가

3단계 데이터베이스 구조 (ANSI/SPARC) - 데이터 독립성 제공

데이터 사전 (Data Dictionary)

스키마와 사상 정보 등 다양한 DB 객체에 관한 모든 데이터(메타 데이터)를 저장 시스템 데이터베이스(System Database)의 일종 사용자는 검색만 가능하고 변경은 DBMS만 가능

데이터 독립성

  1. 논리적 데이터 독립성:
    외부 스키마와 개념 스키마 사이의 사상(Mapping)
    개념 스키마가 변경되어도 외부 스키마에는 영향을 주지 않음
  2. 물리적 데이터 독립성:
    개념 스키마와 내부 스키마 사이의 사상(Mapping)
    내부 저장 구조가 변경되어도 개념 스키마에는 영향을 주지 않음

관계형 데이터 모델

데이터 모델의 3요소

  1. 데이터 구조(Data Structure):
    데이터를 어떤 형태로 저장하는지 표현 (예: 릴레이션).
  2. 연산(Operation):
    데이터 구조 안의 데이터를 어떤 방식으로 처리하는지 표현 (예: 관계 대수).
  3. 제약 조건(Constraint):
    데이터 저장 시의 구조적 제약과 연산 적용 시의 행위적 제약 사항.

릴레이션(Relation)의 주요 개념

릴레이션의 4가지 특성

  1. 투플의 유일성
    모든 투플은 서로 달라야 하며, 유일한 속성 값이 있어야 함.
  2. 투플의 무순서성
    투플 사이의 순서는 의미가 없음(집합의 성질).
  3. 속성의 무순서성
    속성 사이의 순서는 의미가 없으며, 이름으로 참조됨.
  4. 속성의 원자성
    모든 속성 값은 더 이상 분해할 수 없는 하나의 원자 값만을 가짐(다중 값 허용 안 됨).

키(Key)의 종류

  1. 슈퍼키(Super Key)
    투플을 유일하게 식별할 수 있는 속성 집합
    유일성은 만족하지만 최소성은 만족하지 않아도 됨
  2. 후보키(Candidate Key)
    투플을 유일하게 식별할 수 있는 속성들의 최소 집합
    유일성과 최소성을 모두 만족해야 함
  3. 기본키(Primary Key - PK)
    후보키 중에서 하나를 선택하여 지정한 키
    널(NULL) 값을 가질 수 없음
  4. 대체키(Alternate Key)
    기본키로 선정되지 못한 나머지 후보키
  5. 외래키(Foreign Key - FK)
    다른 릴레이션의 기본키를 참조하는 속성 집합
    릴레이션 간의 연관성을 표현

무결성 제약 조건 (Integrity Constraint)

  1. 개체 무결성(Entity Integrity)
    기본키로 지정한 속성은 NULL 값을 가질 수 없고 중복될 수 없음
  2. 참조 무결성(Referential Integrity)
    외래키는 참조하는 릴레이션의 기본키 값과 일치하거나 NULL 값만을 가져야 함
  3. 도메인 무결성
    속성 값이 정의된 도메인에 속한 값이어야 함
  4. 유일성 제약 조건(Unique)
    키 속성 값이 중복되지 않아야 함 (대체키 관련)

관계 연산

관계 대수

관계 대수의 정의

연산의 분류

A. 집합 연산 (Set Operation)

  1. 합집합 (Union, $\cup$):
    두 릴레이션의 모든 투플을 반환 (중복 제거)
    결과 차수는 R1 또는 R2와 같음
  2. 교집합 (Intersection, $\cap$):
    두 릴레이션의 공통 투플만 반환
  3. 차집합 (Difference, $-$):
    R1에는 속하지만 R2에는 속하지 않는 투플 반환
  4. 카티션 프로덕트 (Cartesian Product, $\times$):
    두 릴레이션의 모든 투플을 수평으로 결합(연결)
    결과 차수: R1 차수 + R2 차수
    결과 카디널리티: R1 카디널리티 $\times$ R2 카디널리티

B. 관계 연산 (Relational Operation)

  1. 셀렉트 (Select, $\sigma$):
    조건을 만족하는 투플(행)을 선택
    릴레이션을 수평 분할(horizontal partitioning)하는 효과
    기호: $\sigma_{조건식}(R)$
    (SQL의 WHERE 절에 해당)
  2. 프로젝트 (Project, $\pi$):
    특정 속성(열)만 추출
    릴레이션을 수직 분할(vertical partitioning)하는 효과
    기호: $\pi_{속성리스트}(R)$
    (SQL의 SELECT 절에 해당)
  3. 조인 (Join, $\bowtie$):
    두 릴레이션의 공통 속성을 기준으로 투플을 결합
    동등 조인 (Equijoin): 비교 연산자로 ‘=’을 사용하는 가장 일반적인 조인
  4. 디비전 (Division, $\div$):
    특정 값들을 모두 가지고 있는 투플을 찾는 연산
    R2의 모든 투플과 연관된 R1의 투플을 반환

연산의 성격에 따른 분류(기본 vs 복합)

분류 연산 기호 비고
기본 연산 합집합
기본 연산 차집합
기본 연산 카티션 프로덕트 ×
기본 연산 셀렉트 σ
기본 연산 프로젝트 π
복합 연산 교집합 합집합, 차집합 등으로 표현 가능
복합 연산 조인 카티션 프로덕트 + 셀렉트 등으로 표현 가능
복합 연산 디비전 ÷

관계 대수의 활용 (쿼리 예시)

SQL 기초

SELECT 문의 실행 순서(논리적 순서)

  1. FROM (테이블 가져오기)
  2. WHERE (행 필터링 - 집계 함수 사용 불가)
  3. GROUP BY (그룹화)
  4. HAVING (그룹 필터링 - 집계 함수 사용 가능)
  5. SELECT (출력할 열 선택) - 별칭(AS) 정의
  6. ORDER BY (정렬)

NULL 값의 함정(연산 및 집계)

와일드카드 (_ vs %)

LIKE 연산자 사용 시 정확한 의미 구분이 필요합니다.

집합 연산자의 MySQL 특징

서브쿼리 (Subquery) 핵심

조인 (JOIN) 심화

데이터 변경 (DML) 속 서브쿼리

UPDATE 학생
SET 소속학과 = NULL
WHERE 학번 NOT IN (SELECT 학번 FROM 수강);
DELETE FROM 과목
WHERE 과목번호 IN
(SELECT 과목번호 FROM 수강 GROUP BY 과목번호 HAVING COUNT(*) < 2);

SQL 활용

데이터 정의어 (DDL)

데이터 제어어 (DCL)

뷰 (View)

인덱스 (Index)

SQL 응용

내장 함수 (Built-in Function)

절차형 SQL 3총사 비교

구분 저장 프로시저 사용자 정의 함수 트리거
호출 CALL 명령어로 명시적 호출 SELECT 문 안에서 호출 이벤트(INSERT 등) 발생 시 자동 호출
반환값 선택 사항 (OUT 파라미터) 필수 (RETURNS 자료형) 없음
목적 복잡한 로직 처리 (배치 작업 등) 값 계산 및 반환 무결성 유지, 로그 기록, 연쇄 작업

트랜잭션의 ACID 특성

  1. 원자성 (Atomicity):
    전부 실행되거나, 아예 실행되지 않아야 함 (All or Nothing).
  2. 일관성 (Consistency):
    트랜잭션 전후 데이터베이스 상태가 모순 없이 일관되어야 함.
  3. 고립성 (Isolation):
    실행 중인 트랜잭션의 중간 결과에 다른 트랜잭션이 접근할 수 없음.
  4. 지속성 (Durability):
    커밋된 결과는 장애가 발생해도 영구적으로 보존되어야 함.

동시성 제어와 락 (Lock)

트랜잭션 고립 수준 (Isolation Level)

회복 (Recovery)

◀ 이전 글 LECTURE, 객체지향프로그래밍II
기말고사 예상문제
2025-12-10
목록으로