[Database] 정규화 & Transaction

­Valentine·2021년 12월 30일
0

CS

목록 보기
10/23

CS공부 1주일 째. 오늘도 DB에 대해서 알아보겠습니다. :)

정규화

  • RDBMS에서 중복을 최소화하기 위해 데이터를 쪼개는 것입니다.

  • 장점 : 중복이 줄어서 데이터 무결성을 보장할 수 있고, 이상현상을 방지할 수 있습니다.

  • 단점 : 테이블끼리의 연산이 많아집니다.

  • 이상(Anomaly) : 삽입이상, 삭제이상, 갱신 이상등이 있으며 정규화를 만족하지 않아서 일어날 수 있습니다.

  • 함수적 종속성 : 칼럼들간의 관계가 A칼럼이 B칼럼을 특정조건하에 유일하게 결정하면 함수적 종속성을 가진다고 합니다.

  • 제 1 정규형 : 메인이 원자값만 포함하도록 만듦니다.

  • 제 2 정규형 : 분적 함수 종속 제거

  • 제 3 정규형 : 행적 함수 종속 제거

  • BCNF 정규화 : 정자이면서 후보키가 아닌것 제거

  • 4차 정규화 : 치 함수 종속 제거

  • 5차 정규화 : 인 속성 이용

  • 반정규화 : 정규화를 해치지만 성능이 좋아지는 방식으로 테이블들을 합치는 기술입니다. 과도하게 적용하면 무결성을 해칠 수 있습니다.

Transaction

  • 트랜잭션 4가지 원칙 : ACID법칙으로 각각 Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(지속성)입니다.

  • 트랜잭션의 격리 수준과 각 수준에서 발생할 수 있는 문제들

    • 0단계 : commit이 완료되지 않은 트랜젝션 열람 가능. 데이터 일관성 유지 불가능. 같은 쿼리문에도 다른 결과가 나타날 수 있다는 의미.(Dirty Read, Non-Repeatable Read, Phantom Read)
    • 1단계 : commit이 완료된 트랜젝션만 열람 가능. default level
    • 2단계 : 외부에서 트랜젝션중인 데이터에 입력 불가능.
    • 3단계 : 외부에서 입력, 수정 불가능
  • Commit과 Rollback : 트랜젝션이 정상적으로 완료되면 commit하여 database에 물리적으로 적용하고 실패하면 Rollback하여 트랜젝션 이전 상태로 되돌려 원자성을 지킵니다.

  • Transaction vs Lock : Transaction은 데이터의 원자성을 보장하는 것이고 Lock은 동시성을 보장하는 것입니다.

  • UNDO : commit 이전의 상태로 되돌리는 것. 대부분의 DBMS에서 steal 방법을 채택하고 있기 때문에 로깅 등을 통해서 수정 전 상태를 저장하는 것이 필요합니다.

  • REDO : commit한 시점으로 되돌리는 것. 대부분의 DBMS에서 ^Force 방법을 채택하고 있기 때문에 역시 로깅이 필요합니다.

profile
천체관측이 취미

0개의 댓글