Database
📌 데이터를 체계적으로 저장하고 관리하기 위한 시스템으로, 데이터를 저장, 검색, 수정, 삭제할 수 있는 기능을 제공하며, 애플리케이션과 사용자 간의 효율적인 데이터 관리를 가능하게 합니다.
데이터베이스의 특징
- 조직적 데이터 저장:
- 데이터를 테이블, 행, 열 등 구조화된 형태로 저장.
- 데이터 무결성:
- 데이터의 정확성과 일관성을 유지.
- 동시성:
- 여러 사용자가 데이터를 동시에 사용할 수 있도록 지원.
- 보안성:
- 인증 및 권한 부여를 통해 데이터 접근을 제어.
- 백업 및 복구:
- 데이터 손실 방지를 위해 백업 및 복구 기능 제공.
데이터베이스의 주요 개념
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:1, 1:N, N:N)를 정의.
- 데이터 무결성 보장:
- 중복 데이터를 최소화하고 데이터의 일관성을 유지.
- 성능 최적화:
- 효율적인 데이터 검색과 처리를 지원.
- 시스템 요구 사항 반영:
- 애플리케이션 요구 사항에 맞는 데이터 구조 설계.
데이터 모델링의 단계
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)
- 중복 데이터를 제거하고 데이터 구조를 최적화.