데이터베이스 설계 단계
- 논리적 설계 (Logical Design)
- 개념 : 현실 세계의 개체(Entity)와 관계(Relationship)를 데이터베이스 모델로 추상화하는 단계
- 목적 : 사용자 요구사항을 반영하여 DBMS에 독립적인 데이터 구조 설계
- 주요 활동
- 개체(Entity), 속성(Attribute), 관계(Relationship) 도출
- ER 다이어그램 작성
- 정규화 수행 (1NF ~ BCNF 등)
- 결과물 : 논리적 스키마 (ex. 테이블 이름, 속성 이름, 키, 관계)
- 물리적 설계 (Physical Design)
- 개념 : 논리적 구조를 기반으로 실제 DBMS에 맞게 구현 가능한 물리적 구조로 변환
- 목적 : 성능, 저장 효율, 접근 속도를 고려하여 최적화된 데이터 저장 구조 설계
- 주요 활동
- 테이블, 인덱스, 파티션 설계
- 저장소 구조 및 데이터 타입 정의
- 접근 경로(Access Path), 트리 구조, 클러스터링 등 적용
- 결과물 : 물리적 스키마 (실제 DB 생성 SQL, 저장 방식, 인덱스 구성 등)
트랜잭션의 4가지 특성 (ACID)
- 원자성 (Atomicity)
- 트랜잭션은 모든 작업이 전부 수행되거나, 전혀 수행되지 않아야 합니다.
- 중간에 일부만 처리된 상태로는 남지 않으며, 실패 시 모두 롤백됩니다.
- 일관성 (Consistency)
- 트랜잭션 수행 전과 수행 후에 데이터는 항상 일관된 상태를 유지해야 합니다.
- 시스템의 규칙이나 제약조건(무결성)이 트랜잭션 전후에 유지되어야 합니다.
- 격리성 (Isolation)
- 동시에 실행되는 트랜잭션들은 서로 간섭하지 않고 독립적으로 수행되어야 합니다.
- 한 트랜잭션의 중간 결과를 다른 트랜잭션이 볼 수 없어야 합니다.
- 영속성 (Durability)
- 트랜잭션이 완료되면 그 결과는 영구적으로 데이터베이스에 반영되어야 합니다.
- 시스템 장애가 발생하더라도 결과는 손실되지 않아야 합니다.
개체 무결성 (Entity Integrity)
- 테이블에서 **기본키(Primary Key)**는 절대 NULL이거나 중복될 수 없다는 제약 조건
데이터베이스 키(Key)의 종류 정리
- 기본키 (Primary Key)
- 후보키(Candidate Key) 중에서 특별히 선정된 주키(Main Key)
- 하나의 릴레이션에서 각 튜플을 유일하게 식별하는 데 사용됨
- NULL 불가, 중복 불가