데이터베이스 기본 개념

데이터베이스 기본 개념

데이터와 정보

┌─────────────────────────────────────────────────────────────┐
│                                                              │
│    데이터 (Data)          정보 처리           정보 (Information)
│  ┌─────────────┐      ───────────→      ┌─────────────┐    │
│  │ 관찰/측정한  │                        │ 의사결정에   │    │
│  │ 사실이나 값  │                        │ 유용한 결과물 │    │
│  └─────────────┘                        └─────────────┘    │
│                                                              │
└─────────────────────────────────────────────────────────────┘

데이터 vs 정보

구분데이터 (Data)정보 (Information)
정의관찰/측정으로 수집한 사실이나 값데이터를 처리한 결과물
특성가공되지 않은 원시 상태의사결정에 활용 가능
예시25, 서울, 2024-01-15“서울의 1월 평균 기온은 -2도”

정보 시스템

┌─────────────────────────────────────────────────────────────┐
│                      정보 시스템                             │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   데이터 수집 → 데이터 저장 → 데이터 처리 → 정보 제공         │
│                     │                                        │
│              ┌──────┴──────┐                                │
│              │ 데이터베이스 │                                │
│              └─────────────┘                                │
│                                                              │
└─────────────────────────────────────────────────────────────┘

데이터베이스의 정의

데이터베이스(DB) = 공유 + 통합 + 저장 + 운영 데이터

4가지 핵심 특성

특성설명예시
공유 데이터여러 사용자가 함께 사용회사 전체가 고객 DB 공유
통합 데이터중복 최소화, 통제된 중복만 허용고객 정보를 한 곳에서 관리
저장 데이터컴퓨터가 접근 가능한 매체에 저장HDD, SSD, 클라우드 스토리지
운영 데이터조직 운영에 필수적인 데이터주문, 재고, 회원 정보

데이터 중복의 문제

❌ 중복 허용 시 문제
────────────────────────────────────────
테이블 A: 고객명 = "홍길동", 연락처 = "010-1234-5678"
테이블 B: 고객명 = "홍길동", 연락처 = "010-9999-8888"  ← 불일치!

✅ 통합 데이터베이스
────────────────────────────────────────
고객 테이블: 고객ID = 1, 고객명 = "홍길동", 연락처 = "010-1234-5678"
주문 테이블: 고객ID = 1 (참조)  ← 중복 없음

데이터베이스의 4가지 특징

1. 실시간 접근 (Real-time Accessibility)

-- 사용자 요청에 즉시 응답
SELECT * FROM orders WHERE customer_id = 123;
-- 결과가 즉시 반환됨 (밀리초 단위)

2. 계속 변화 (Continuous Evolution)

-- 현실 세계의 변화를 반영
INSERT INTO orders VALUES (1001, 123, NOW());  -- 삽입
UPDATE products SET stock = stock - 1;          -- 수정
DELETE FROM cart WHERE order_completed = true;  -- 삭제

3. 동시 공유 (Concurrent Sharing)

┌─────────────────────────────────────────────────────────────┐
│                      데이터베이스                            │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│    사용자 A ──┐                                              │
│              ├──→ 같은 데이터 동시 접근 가능                 │
│    사용자 B ──┤                                              │
│              ├──→ 다른 데이터 동시 접근 가능                 │
│    사용자 C ──┘                                              │
│                                                              │
└─────────────────────────────────────────────────────────────┘

4. 내용으로 참조 (Content Reference)

-- 주소/위치가 아닌 값(내용)으로 데이터 참조
SELECT * FROM employees WHERE name = '홍길동';     -- 이름으로 검색
SELECT * FROM products WHERE price > 10000;        -- 가격으로 검색
SELECT * FROM orders WHERE date = '2024-01-15';    -- 날짜로 검색

데이터 분류

형태에 따른 분류

┌─────────────────────────────────────────────────────────────┐
│                    데이터 형태 분류                          │
├──────────────┬──────────────┬──────────────────────────────┤
│   정형 데이터  │  반정형 데이터 │       비정형 데이터          │
├──────────────┼──────────────┼──────────────────────────────┤
│ 스키마 있음   │ 데이터 내 구조 │ 구조 없음                    │
│ (미리 정의)   │   설명 포함   │                              │
├──────────────┼──────────────┼──────────────────────────────┤
│ RDB 테이블    │ JSON, XML    │ 이미지, 영상, 텍스트          │
│ 스프레드시트   │ HTML, 로그   │ 음성, PDF, 소셜 데이터        │
└──────────────┴──────────────┴──────────────────────────────┘

정형 데이터 (Structured Data)

-- 스키마가 미리 정의된 테이블 구조
CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(255),
    created_at DATETIME
);

반정형 데이터 (Semi-structured Data)

// JSON - 데이터 내에 구조(메타데이터) 포함
{
  "id": 1,
  "name": "홍길동",
  "email": "hong@example.com",
  "orders": [
    {"id": 101, "amount": 50000},
    {"id": 102, "amount": 30000}
  ]
}
<!-- XML - 태그로 구조 설명 -->
<customer>
  <id>1</id>
  <name>홍길동</name>
  <email>hong@example.com</email>
</customer>

비정형 데이터 (Unstructured Data)

- 이미지 파일 (.jpg, .png)
- 동영상 파일 (.mp4, .avi)
- 텍스트 문서 (.txt, .pdf)
- 소셜 미디어 게시글
- 음성 파일 (.mp3, .wav)

특성에 따른 분류

┌─────────────────────────────────────────────────────────────┐
│                                                              │
│                      데이터 특성 분류                        │
│                                                              │
│   ┌─────────────────────┐    ┌─────────────────────┐       │
│   │    범주형 데이터     │    │    수치형 데이터     │       │
│   │  (Categorical)      │    │   (Numerical)       │       │
│   ├─────────────────────┤    ├─────────────────────┤       │
│   │ 명목형    │ 순서형   │    │ 이산형   │ 연속형   │       │
│   │(Nominal) │(Ordinal) │    │(Discrete)│(Continuous)│     │
│   └─────────────────────┘    └─────────────────────┘       │
│                                                              │
└─────────────────────────────────────────────────────────────┘

범주형 데이터 (Categorical Data)

유형설명예시
명목형서열 없는 분류성별, 혈액형, 지역
순서형서열 있는 분류학점(A>B>C), 만족도(상>중>하)
-- 명목형: 순서 의미 없음
SELECT * FROM users WHERE gender = 'M';
SELECT * FROM users WHERE blood_type = 'A';

-- 순서형: 순서 의미 있음
SELECT * FROM reviews WHERE rating >= 4;  -- 4점 이상
SELECT * FROM students WHERE grade IN ('A', 'B');

수치형 데이터 (Numerical Data)

유형설명예시
이산형셀 수 있는 단절된 값주문 수, 학생 수, 클릭 횟수
연속형측정으로 얻는 연속 값키, 몸무게, 온도, 시간
-- 이산형: 정수값, 개수
SELECT COUNT(*) FROM orders WHERE user_id = 1;
SELECT SUM(quantity) FROM order_items;

-- 연속형: 실수값, 측정값
SELECT AVG(height) FROM students;
SELECT MAX(temperature) FROM weather_data;

용어 비교 정리

스키마 vs 메타데이터

용어설명사용 위치
스키마 (Schema)미리 정해진 데이터 구조정형 데이터
메타데이터 (Metadata)데이터 내에 포함된 구조 설명반정형 데이터

정성적 vs 정량적 데이터

구분정성적 (Qualitative)정량적 (Quantitative)
의미질적 데이터양적 데이터
대응범주형 데이터수치형 데이터
연산산술 연산 불가산술 연산 가능

실무 예시

쇼핑몰 데이터베이스

-- 정형 데이터: 관계형 테이블
CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(200),           -- 명목형
    category VARCHAR(50),        -- 명목형
    price DECIMAL(10,2),         -- 연속형
    stock INT,                   -- 이산형
    rating VARCHAR(10)           -- 순서형 (상/중/하)
);

-- 데이터베이스 특징 활용
-- 1. 실시간 접근
SELECT * FROM products WHERE id = 100;

-- 2. 계속 변화
UPDATE products SET stock = stock - 1 WHERE id = 100;

-- 3. 동시 공유 (트랜잭션으로 관리)
BEGIN TRANSACTION;
UPDATE products SET stock = stock - 1 WHERE id = 100;
INSERT INTO orders (product_id, quantity) VALUES (100, 1);
COMMIT;

-- 4. 내용으로 참조
SELECT * FROM products
WHERE category = '전자제품'
  AND price BETWEEN 10000 AND 50000;

핵심 용어 정리

용어설명
데이터관찰/측정으로 수집한 사실이나 값
정보의사결정에 유용하게 처리된 데이터
정보 처리데이터에서 정보를 추출하는 과정
정보 시스템데이터를 저장하고 정보를 제공하는 시스템
스키마미리 정의된 데이터 구조
메타데이터데이터에 대한 데이터 (구조 설명)
파싱데이터 구조를 분석하는 과정
데이터 중복성동일 데이터가 여러 곳에 존재하는 상태