Post

데이터베이스 기초 이론

데이터베이스의 기본 개념부터 DBMS의 종류, 데이터 모델링까지 데이터베이스를 처음 학습하는 사람들을 위한 기초 이론을 정리했습니다.

데이터베이스 기초 이론

#01. 데이터베이스란?

1. 데이터베이스의 정의

데이터베이스(Database, DB)는 여러 사용자가 공유하여 사용할 목적으로 통합하여 관리되는 데이터의 집합입니다.

2. 데이터베이스의 특징

  • 통합된 데이터(Integrated Data): 중복을 최소화하여 통합된 데이터
  • 저장된 데이터(Stored Data): 컴퓨터가 접근 가능한 저장매체에 저장된 데이터
  • 공유 데이터(Shared Data): 여러 사용자가 서로 다른 목적으로 공동 이용하는 데이터
  • 운영 데이터(Operational Data): 조직의 고유한 업무를 수행하는데 반드시 필요한 데이터

#02. DBMS(Database Management System)

1. DBMS의 정의

데이터베이스를 관리하는 소프트웨어로, 사용자와 데이터베이스 사이에서 정보를 생성하고 관리해주는 소프트웨어입니다.

2. DBMS의 기능

  • 정의 기능(Definition): 데이터베이스 구조 정의
  • 조작 기능(Manipulation): 데이터 검색, 삽입, 삭제, 갱신
  • 제어 기능(Control): 데이터 무결성, 보안, 권한 검사, 병행 제어

3. DBMS의 장점

  • 데이터 중복 최소화: 동일한 데이터의 중복 저장을 방지
  • 데이터 일관성: 중복 제거로 인한 데이터 불일치 현상 제거
  • 데이터 무결성: 정확하고 유효한 데이터 유지
  • 데이터 보안: 권한이 없는 사용자의 접근 차단
  • 데이터 표준화: 데이터 형식과 구조의 표준화
  • 데이터 공유: 여러 사용자가 동시에 데이터 이용 가능

#03. 데이터베이스 모델

1. 계층형 데이터베이스 모델

  • 트리 구조로 데이터를 저장
  • 부모-자식 관계로 1:N 관계만 표현 가능
  • 예: IMS(Information Management System)

2. 네트워크 데이터베이스 모델

  • 그래프 구조로 데이터를 저장
  • M:N 관계 표현 가능
  • 예: IDMS(Integrated Database Management System)

3. 관계형 데이터베이스 모델

  • 테이블(릴레이션) 형태로 데이터를 저장
  • 현재 가장 널리 사용되는 모델
  • 예: MySQL, PostgreSQL, Oracle, SQL Server

4. 객체지향 데이터베이스 모델

  • 객체지향 개념을 데이터베이스에 도입
  • 복잡한 데이터 타입 지원
  • 예: db4o, ObjectDB

5. NoSQL 데이터베이스 모델

  • 문서형(Document): MongoDB, CouchDB
  • 키-값(Key-Value): Redis, DynamoDB
  • 컬럼형(Column-family): Cassandra, HBase
  • 그래프형(Graph): Neo4j, Amazon Neptune

#04. 관계형 데이터베이스의 구조

1. 기본 용어

용어설명
릴레이션(Relation)테이블, 2차원 표 형태의 데이터 구조
튜플(Tuple)행(Row), 하나의 레코드
애트리뷰트(Attribute)열(Column), 필드
도메인(Domain)속성이 가질 수 있는 값들의 집합
차수(Degree)릴레이션의 애트리뷰트 개수
카디널리티(Cardinality)릴레이션의 튜플 개수

2. 키(Key)의 종류

후보키(Candidate Key)

  • 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
  • 유일성과 최소성을 만족

기본키(Primary Key)

  • 후보키 중에서 선택한 주키
  • NULL 값을 가질 수 없음
  • 중복값을 가질 수 없음

대체키(Alternate Key)

  • 후보키 중에서 기본키가 되지 못한 나머지 키들

외래키(Foreign Key)

  • 다른 릴레이션의 기본키를 참조하는 속성
  • 참조 무결성 제약조건을 만족해야 함

복합키(Composite Key)

  • 두 개 이상의 속성으로 구성된 키

#05. 데이터 무결성

1. 개체 무결성(Entity Integrity)

  • 기본키는 NULL 값을 가질 수 없음
  • 기본키는 중복값을 가질 수 없음

2. 참조 무결성(Referential Integrity)

  • 외래키 값은 참조하는 릴레이션의 기본키 값이어야 함
  • 또는 NULL 값이어야 함

3. 도메인 무결성(Domain Integrity)

  • 속성의 값은 정의된 도메인에 속한 값이어야 함

4. 사용자 정의 무결성(User-defined Integrity)

  • 사용자가 정의한 제약조건을 만족해야 함

#06. 정규화(Normalization)

1. 정규화의 목적

  • 데이터 중복을 최소화
  • 데이터 일관성 유지
  • 저장 공간 절약
  • 데이터 무결성 강화

2. 정규화 단계

제1정규형(1NF)

  • 모든 속성의 값이 원자값(atomic value)이어야 함
  • 반복 그룹이 제거되어야 함

제2정규형(2NF)

  • 제1정규형을 만족
  • 부분 함수 종속성을 제거

제3정규형(3NF)

  • 제2정규형을 만족
  • 이행 함수 종속성을 제거

BCNF(Boyce-Codd Normal Form)

  • 제3정규형을 만족
  • 모든 결정자가 후보키여야 함

#07. SQL 개요

1. SQL의 정의

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다.

2. SQL의 분류

DDL(Data Definition Language) - 데이터 정의어

  • CREATE: 테이블, 인덱스 등 생성
  • ALTER: 테이블 구조 변경
  • DROP: 테이블, 인덱스 등 삭제

DML(Data Manipulation Language) - 데이터 조작어

  • SELECT: 데이터 조회
  • INSERT: 데이터 삽입
  • UPDATE: 데이터 수정
  • DELETE: 데이터 삭제

DCL(Data Control Language) - 데이터 제어어

  • GRANT: 권한 부여
  • REVOKE: 권한 취소

TCL(Transaction Control Language) - 트랜잭션 제어어

  • COMMIT: 트랜잭션 확정
  • ROLLBACK: 트랜잭션 취소
  • SAVEPOINT: 저장점 설정

#08. 트랜잭션(Transaction)

1. 트랜잭션의 정의

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위입니다.

2. ACID 특성

원자성(Atomicity)

  • 트랜잭션의 연산들이 모두 정상적으로 실행되거나 전혀 실행되지 않아야 함

일관성(Consistency)

  • 트랜잭션 실행 전후에 데이터베이스가 일관된 상태를 유지해야 함

독립성(Isolation)

  • 실행 중인 트랜잭션의 중간 결과를 다른 트랜잭션이 접근할 수 없음

지속성(Durability)

  • 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함

#09. 인덱스(Index)

1. 인덱스의 정의

데이터베이스에서 검색 속도를 향상시키기 위한 자료구조입니다.

2. 인덱스의 장점

  • 검색 속도 향상
  • ORDER BY, GROUP BY 연산 속도 향상
  • MIN, MAX 값을 빠르게 찾을 수 있음

3. 인덱스의 단점

  • 추가적인 저장 공간 필요
  • 데이터 삽입, 수정, 삭제 시 인덱스 갱신으로 인한 성능 저하
  • 인덱스 관리를 위한 추가 작업 필요

#10. 마무리

데이터베이스는 현대 정보 시스템의 핵심 구성요소입니다. 기본 이론을 탄탄히 익혀두면 실제 프로젝트에서 효율적인 데이터베이스 설계와 운영이 가능합니다.

다음 포스팅에서는 실제 SQL 쿼리 작성법과 데이터베이스 설계 실습을 다뤄보겠습니다.

This post is licensed under CC BY 4.0 by the author.