CS공부 1주일 째. 오늘도 DB에 대해서 알아보겠습니다. :)
RDBMS에서 중복을 최소화하기 위해 데이터를 쪼개는 것입니다.
장점 : 중복이 줄어서 데이터 무결성을 보장할 수 있고, 이상현상을 방지할 수 있습니다.
단점 : 테이블끼리의 연산이 많아집니다.
이상(Anomaly) : 삽입이상, 삭제이상, 갱신 이상등이 있으며 정규화를 만족하지 않아서 일어날 수 있습니다.
함수적 종속성 : 칼럼들간의 관계가 A칼럼이 B칼럼을 특정조건하에 유일하게 결정하면 함수적 종속성을 가진다고 합니다.
제 1 정규형 : 도메인이 원자값만 포함하도록 만듦니다.
제 2 정규형 : 부분적 함수 종속 제거
제 3 정규형 : 이행적 함수 종속 제거
BCNF 정규화 : 결정자이면서 후보키가 아닌것 제거
4차 정규화 : 다치 함수 종속 제거
5차 정규화 : 조인 속성 이용
반정규화 : 정규화를 해치지만 성능이 좋아지는 방식으로 테이블들을 합치는 기술입니다. 과도하게 적용하면 무결성을 해칠 수 있습니다.
트랜잭션 4가지 원칙 : ACID법칙으로 각각 Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(지속성)입니다.
트랜잭션의 격리 수준과 각 수준에서 발생할 수 있는 문제들
Commit과 Rollback : 트랜젝션이 정상적으로 완료되면 commit하여 database에 물리적으로 적용하고 실패하면 Rollback하여 트랜젝션 이전 상태로 되돌려 원자성을 지킵니다.
Transaction vs Lock : Transaction은 데이터의 원자성을 보장하는 것이고 Lock은 동시성을 보장하는 것입니다.
UNDO : commit 이전의 상태로 되돌리는 것. 대부분의 DBMS에서 steal 방법을 채택하고 있기 때문에 로깅 등을 통해서 수정 전 상태를 저장하는 것이 필요합니다.
REDO : commit한 시점으로 되돌리는 것. 대부분의 DBMS에서 ^Force 방법을 채택하고 있기 때문에 역시 로깅이 필요합니다.