데이터베이스

yg kim·2023년 10월 14일
0

공부하기

목록 보기
13/14

정규화

  • 정규화 과정은 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러개로 분리하는 과정

  • 제1정규형

    • 모든 도메인이 더 이상 분해될 수 없는 원자값 만으로 구성되어야함
  • 제2정규형

    • 부분 함수의 종속성을 제거(기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인것)한 형태
  • 제3정규형

    • 기본키가 아닌 모든 속성이 이행적 함수 종속(A->B->C, A->C)을 만족하지 않는 상태
  • BCNF형

    • 결정자가 후보키가 아닌 함수 종속 관계 제거

트랜잭션

  • 트랜잭션 - DB에서 하나의 논리적 기능을 수행하기 위한 최소한의 작업 단위
  • 트랜잭션의 시작
    • DML, DDL, DCL 수행시
  • 트랜잭션의 종료
    • COMMIT, ROLLBACK 수행시
    • DDL, DCL 수행시
    • 기기 장애 또는 충돌
    • deadlock 발생시
    • 강제 종료시

트랜잭션의 특징

  • 원자성
    • 트랜잭션과 관련된 일은 모두 수행되거나 모두 수행되지 않아야 함
    • update, delete, insert 후 commit 하지 않으면 rollback으로 실행 전으로 돌아갈 수 있음
  • 일관성
    • 조건에 맞는 방식으로만 데이터를 변경해야함
  • 격리성
    • 트랜잭션 수행시 다른 사용자가 끼어들 수 없음
    • 격리 수준( 격리성이 높은 수준부터 순서)
      • SERIALIZABLE - 다른 트랜잭션이 동시에 같은 행에 접근할 수 없음
      • REPEATABLE_READ - 한 행에 같이 접근할 수는 없지만 새로운 행 추가를 막지않음
      • READ_COMMITED - 기본값 / 커밋이 완료된 데이터만 조회할 수 있음
      • READ_UNCOMMITED - 커밋되기 전에도 다른 트랜잭션의 데이터를 조회할 수 있음
    • 격리 수준에 따른 발생 현상
      • 팬텀리드(Phantom Read) - 한 트랜잭션에서 동일한 쿼리를 보냈을때 다른 결과가 나오는 경우
        • 반복가능하지 않은 조회 - 같은 쿼리문을 수행했을 때, 다른 결과가 나오는 경우
        • 더티 리드 - 트랜잭션 수행 중 다른 트랜잭션에 의해 변경된 데이터를 읽을수 있는 경우
  • 지속성
    • 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함
profile
발전하고 싶은 사람

0개의 댓글