Database
ACID
ACID는 1970년대 말에 짐 그레이에 의해 정의되었으며, Database Transaction이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.
- Atomicity(원자성)
- Transaction과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 속성.
- ex) 자금 이체는 선공할 수도 실패할 수도 있지만, 보내는 쪽에서 돈을 빼오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다.
- Consistency(일관성)
- Transaction이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다.
- 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 Transaction은 중단된다.
- Isolation(고립성)
- Transaction을 수행 시, 다른 Transaction의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다.
- 이것은 Transaction 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다.
- Durability(지속성)
- 성공적으로 수행된 Transaction은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다.
- 전형적으로 모든 Transaction은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다.
- Transaction은 로그에 모든 것이 저장된 후에만 Commit 상태로 간주될 수 있다.
Database Design Phases
-
Requirements Specification & Analysis - 요구사항 명세화 및 분석
-
Conceptual Design - ER Diagram
-
Logical Design - Data Model Mapping
-
Physical Design
-
Implementation Phase
Entity
- Entity는 독립적이고 실존하는 정보 개체이다.
Attributes
- Attributes는 Entity를 설명하는 속성이다.
Relationships
- Entities 사이의 관계
Normalization
- 1NF
- 각 테이블에서 중복을 제거한다.
- 각각 관계된 데이터 모임을 위하여 분리된 테이블을 만든다.
- 각각 관계된 데이터 모임을 기본키로 인식한다.
- 2NF
- 1NF를 만족해야 한다.
- 모든 비기본 속성들이 후보 키에 속한 속성들 전체에 함수 종속인 경우를 의미한다.
- 3NF
- 2NF를 만족해야 한다.
- 테이블 내의 모든 속성이 기본 키에만 의존하며 다른 후보 키에 의존하지 않아야 한다.
- BCNF(Boyce-Codd)
- 둘 이상의 속성으로 구성된 합성 키가 기본 키이고, 그 기본 키가 2개 이상일 때 발생하는 이상 현상을 방지하기 위해 고안되었다.
- 모든 결정자가 후보 키인 경우 테이블은 BCNF이다.