1. 데이터베이스(Database)

1.1. 데이터와 정보

  • 데이터(Data)

    • 단순한 사실에 불과한 아직 처리되지 않은 값
  • 정보(Information)

    • 데이터가 사람에게 유용한 의미로 쓰일 수 있도록 처리된 결과

1.2. 데이터베이스의 정의와 특징

  • 정의

    • 서로 논리적으로 연관되어 통합 관리되는, 관련 있는 데이터의 저장소
  • 특징

    • 통합된 데이터(Integrated)
    • 관련 있는 데이터(Related)
    • 중복 최소화(Redundancy minimized)하여 보조기억장치에 저장

2. 데이터베이스 구조

2.1. 데이터베이스 구조

  • 필드

    • 특정한 종류의 데이터(이름, 학번 등)를 저장하는 가장 작은 논리적 단위
    • (데이터 유형: 정수, 문자열 등)
  • 레코드

    • 여러 필드가 모여서 구성된 하나의 단위
    • (예: 학생 1명의 전체 정보)
  • 파일

    • 여러 개의 레코드가 모여 파일이 된다.
  • 데이터베이스

    • 서로 관련 있는 파일들이 통합되어 데이터베이스를 구성한다.

2.2. 데이터베이스 추상화

  • 데이터베이스를 보는 관점(View)을 3단계로 추상화하여 복잡성을 숨김.
    1. 물리적 단계 (내부 단계): 실제 데이터가 저장 장치에 어떻게 저장되는지(하드웨어, 바이트 구조) 다룸. (물리 스키마)
    2. 논리적 단계 (개념 단계): 어떤 데이터가 저장되고 그들 간의 관계는 무엇인지 기술. 전체적인 데이터 구조(논리 스키마).
    3. 뷰 단계 (외부 단계): 사용자와 직접 상호작용하는 최상위 단계. 사용자별로 필요한 부분만 보여줌. (서브 스키마)

2.3. 데이터 독립성

  • 논리적 독립성: 응용 프로그램을 바꾸지 않고 논리 스키마를 변경할 수 있음.
  • 물리적 독립성: 논리 스키마나 응용 프로그램을 바꾸지 않고 물리적 저장 구조를 변경할 수 있음.

3. 데이터베이스 모델

데이터의 논리적 설계와 관계를 표현하는 방식들이다.

  1. 계층적 모델(Hierarchical)

    • 데이터가 트리(Tree) 형태
    • 부모-자식 관계 (1:N)
  2. 네트워크 모델(Network)

    • 레코드 간의 관계를 그래프(Graph) 형태로 연결
  3. 관계형 모델(Relational)

    • 데이터를 행과 열로 구성된 이차원 테이블 집합으로 표현
    • 현재 가장 널리 사용됨

4. 관계형 모델

4.1. 구조 및 용어

  • 관계(Relation)

    • 이차원 테이블
  • 속성(Attribute)

    • 테이블의 열(Column)
    • 필드에 해당
  • 튜플(Tuple)

    • 테이블의 행(Row)
    • 레코드에 해당
    • (중복 불가, 원자값 가짐)
  • 도메인(Domain)

    • 하나의 속성이 가질 수 있는 값의 범위

4.2. 키

  • (Key)
    • 후보키: 튜플을 유일하게 식별할 수 있는 속성들의 집합 (유일성, 최소성)
    • 주키(Primary Key): 후보키 중 튜플을 식별하기 위해 선택된 키
    • 외래키(Foreign Key): 다른 테이블의 주키를 참조하여 관계를 맺는 키

4.3. 관계 연산

  • 삽입(Insert): 새로운 튜플 추가
  • 삭제(Delete): 특정 튜플 삭제
  • 수정(Update): 속성 값 변경
  • 조회(Select): 조건에 맞는 튜플이나 속성 검색

4.4. SQL

  • SQL(Structured Query Language)
    • 관계형 데이터베이스와 소통하기 위한 표준 언어
    • 구성: DDL(정의), DML(조작), TCL(트랜잭션), DCL(제어)

5. 데이터베이스 관리시스템(DBMS)

5.1. 개요

  • DBMS: 사용자가 데이터베이스를 생성, 관리, 활용할 수 있도록 해주는 중재자 소프트웨어
  • 구성: 저장 관리자, 질의 처리기, 인터페이스 도구 등

5.2. 주요 DBMS 종류

  • MySQL: 대표적인 오픈소스 DBMS
  • Oracle: 기업용으로 가장 널리 사용되는 상용 DBMS
  • SQL Server: 마이크로소프트사가 개발, 윈도우/인텔 서버 기반에서 널리 사용

5.3. 데이터베이스 연결

  • ODBC(Open Database Connectivity)
    • 종류에 상관없이 DBMS에 접근할 수 있도록 만든 표준 인터페이스

5.4. 임베디드 DBMS

  • SQLite: 서버가 필요 없는 라이브러리 형태의 가벼운 SQL 데이터베이스 엔진
    • 특징: C언어로 구현, 용량이 작고 빠름. 모바일(iOS, Android) 기기에 기본 탑재
    • 실습: sqlite3.exe (명령행 쉘)을 이용해 테이블 생성(create), 데이터 삽입(insert), 조회(select) 등의 SQL 실습 가능

6. 데이터 마이닝과 문서 데이터베이스

6.1. 데이터 마이닝

  • 데이터 마이닝(Data Mining)
    • 정의: 대규모 데이터 안에서 가치 있는 정보, 통계적 규칙, 패턴을 찾아내는 기법 (KDD)
    • 기법: 연관 규칙(장바구니 분석), 연속성 규칙, 분류, 군집화 등
    • 절차: 비즈니스 이해 → 데이터 수집 → 분석 → 모델링 → 결과 검토/평가

6.2. 문서 데이터베이스

  • NoSQL(Not Only SQL)

    • 비관계형 데이터베이스
  • 특징

    • 이미지, 영상 등 비정형 대용량 데이터를 처리하기 용이
    • 클라우드 환경에 적합
  • 유형

    • 문서(Document), 키-값(Key-Value), 그래프(Graph) 등
  • 몽고DB(MongoDB)

    • 가장 인기 있는 문서 지향 데이터베이스
    • 데이터를 JSON(BSON) 형태로 저장
    • 관계형 DB의 테이블/행/열 컬렉션/다큐먼트/필드로 대응