DB/DBMS

[DB] DB (Database)

JABHACK 2024. 12. 21. 16:29

Database

📌 데이터를 체계적으로 저장하고 관리하기 위한 시스템으로, 데이터를 저장, 검색, 수정, 삭제할 수 있는 기능을 제공하며, 애플리케이션과 사용자 간의 효율적인 데이터 관리를 가능하게 합니다.

 

데이터베이스의 특징

  1. 조직적 데이터 저장:
    • 데이터를 테이블, 행, 열 등 구조화된 형태로 저장.
  2. 데이터 무결성:
    • 데이터의 정확성과 일관성을 유지.
  3. 동시성:
    • 여러 사용자가 데이터를 동시에 사용할 수 있도록 지원.
  4. 보안성:
    • 인증 및 권한 부여를 통해 데이터 접근을 제어.
  5. 백업 및 복구:
    • 데이터 손실 방지를 위해 백업 및 복구 기능 제공.

 

데이터베이스의 주요 개념

a. 스키마 (Schema)

  • 데이터베이스의 구조를 정의한 설계도.
  • 테이블, 뷰, 인덱스, 트리거 등을 포함.

b. 트랜잭션 (Transaction)

  • 데이터베이스의 논리적 작업 단위.
  • ACID 특성을 보장:
    • Atomicity: 작업은 모두 성공하거나 모두 실패.
    • Consistency: 트랜잭션 후 데이터 일관성 유지.
    • Isolation: 여러 트랜잭션이 독립적으로 실행.
    • Durability: 작업이 완료되면 영구적으로 저장.

c. 인덱스 (Index)

  • 데이터 검색 속도를 향상시키기 위한 구조.
  • 예: 책의 목차와 같은 역할.

d. 관계 (Relation)

  • 데이터베이스 테이블 간의 연결.
  • 예: 외래 키(Foreign Key)를 통해 사용자와 주문 테이블 연결.

 

데이터베이스 설계

a. 정규화 (Normalization)

  • 중복 데이터를 제거하고 데이터 구조를 최적화.
  • 데이터를 여러 테이블로 나누고 관계를 정의.

b. 비정규화 (Denormalization)

  • 읽기 성능을 높이기 위해 정규화를 일부 해제.
  • 데이터 중복을 허용.

 

Spring과 데이터베이스 통합

Spring Framework는 데이터베이스와의 상호작용을 쉽게 하기 위해 다양한 도구를 제공합니다.

a. JDBC (Java Database Connectivity)

  • Java에서 데이터베이스와 연결하기 위한 표준 API.

b. JPA (Java Persistence API)

  • Java 객체와 관계형 데이터베이스 간의 매핑을 위한 API.
  • Hibernate가 JPA의 대표적인 구현체.

 

 

데이터 모델링 (Data Modeling)

📌 현실 세계의 데이터를 데이터베이스에 저장하고 관리하기 위해 구조화하는 과정입니다.

  • 데이터 간의 관계와 속성을 정의하여 체계적으로 데이터를 표현하고 설계합니다.
  • 데이터 모델링은 데이터베이스 설계의 핵심 단계이며, 애플리케이션의 데이터 흐름과 사용 방식을 반영합니다.

 

데이터 모델링의 목적

  1. 데이터 구조 정의:
    • 데이터를 저장할 테이블과 속성을 정의.
  2. 데이터 관계 설정:
    • 테이블 간의 관계(1:1, 1:N, N:N)를 정의.
  3. 데이터 무결성 보장:
    • 중복 데이터를 최소화하고 데이터의 일관성을 유지.
  4. 성능 최적화:
    • 효율적인 데이터 검색과 처리를 지원.
  5. 시스템 요구 사항 반영:
    • 애플리케이션 요구 사항에 맞는 데이터 구조 설계.

 

데이터 모델링의 단계

a. 개념적 데이터 모델링 (Conceptual Data Modeling)

  • 무엇을 저장할 것인지 정의:
    • 현실 세계의 데이터를 추상화하여 주요 엔티티(Entity)와 관계(Relationship)를 정의.
  • 비즈니스 중심:
    • 비즈니스 요구 사항에 초점을 맞춰 데이터 구조를 설계.
- 엔티티: 사용자(User), 주문(Order), 상품(Product)
- 관계: 사용자 - 주문 (1:N), 주문 - 상품 (N:M)

 

b. 논리적 데이터 모델링 (Logical Data Modeling)

  • 어떻게 저장할 것인지 정의:
    • 엔티티를 테이블로 변환하고 속성(Attribute)과 데이터 타입을 정의.
    • 테이블 간의 관계를 정확히 정의(1:1, 1:N, N:M).

예시

 

c. 물리적 데이터 모델링 (Physical Data Modeling)

  • 어디에 저장할 것인지 정의:
    • 실제 데이터베이스에 적합한 구조로 설계.
    • 데이터 타입, 인덱스, 제약 조건, 스키마를 정의.
    • SQL 스크립트 생성.
CREATE TABLE User (
    id BIGINT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(200) UNIQUE
);

CREATE TABLE Order (
    id BIGINT PRIMARY KEY,
    user_id BIGINT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES User(id)
);

CREATE TABLE Product (
    id BIGINT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10, 2)
);

CREATE TABLE Order_Product (
    order_id BIGINT,
    product_id BIGINT,
    PRIMARY KEY (order_id, product_id),
    FOREIGN KEY (order_id) REFERENCES Order(id),
    FOREIGN KEY (product_id) REFERENCES Product(id)
);

 

데이터 모델링의 주요 개념

a. 엔티티(Entity)

  • 데이터베이스에 저장할 대상. (예: 사용자, 주문, 상품)

b. 속성(Attribute)

  • 엔티티의 특성을 나타내는 값. (예: 이름, 이메일, 가격)

c. 관계(Relationship)

  • 엔티티 간의 연관성.
    • 1:1 관계: 한 명의 사용자 ↔ 하나의 프로필.
    • 1:N 관계: 한 명의 사용자 ↔ 여러 주문.
    • N:M 관계: 여러 주문 ↔ 여러 상품.

d. 기본 키(Primary Key)

  • 테이블의 각 행(Row)을 고유하게 식별하는 열(Column).

e. 외래 키(Foreign Key)

  • 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 정의.

f. 정규화(Normalization)

  • 중복 데이터를 제거하고 데이터 구조를 최적화.