데이터 입력, 출력 구현(2)

뚜니·2024년 9월 25일
0

정보처리기사

목록 보기
12/12

정규화(Normalization)

테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다.

  • 정규화의 목적은 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다.

<정규화 종류>

  • 제 1정규형(1NF)
  • 제 2정규형(2NF)
  • 제 3정규형(3NF)
  • BCNF
  • 제 4정규형(4NF)
  • 제 5정규형(5NF)

-> 순서대로 정규화의 정도가 높아짐

정규화 과정

제 1정규형(1NF)

어떤 릴레이션에 속한 모든 도메인이 원자값(Atomic Value)만으로 되어 있다. (모든 속성 값이 원자 값으로만 되어 있는 정규형)

-> 고객번호와 이름을 하나의 릴레이션으로 분리하고, 여행지를 다른 릴레이션을 만들어, 속성이 원자값만으로 구성되게 한다.

제 2정규형(2NF)

부분 함수적 종속을 모두 제거하여 완전 함수적 종속으로 만든다.

-> 주문번호와 회원번호가 기본키일 때, 기본키를 가지고 주문금액을 알 수 있지만, 이름은 회원번호만 알아도 알 수 있다.
-> 주문번호와 회원번호를 모두 알아야 확인할 수 있는 주문금액을 하나의 릴레이션으로 구성하고, 회원번호와 이름을 가지고 다른 하나의 릴레이션을 구성한다.

제 3정규형(3NF)

이행적 함수 종속을 없앤다.

-> 학번을 알면 주민번호를 알 수 있고, 주민번호를 알면 이름을 알 수 있다. 이때, 학번을 알면 이름을 알 수 있다.
-> 학번과 주민번호를 하나의 릴레이션으로 주민번호와 이름을 하나의 릴레이션으로 구성한다.

보이스코드정규형(BCNF)

결정자 중 후보키가 아닌 것들을 제거(모든 결정자가 후보키인 정규형)
3차 정규형을 조금 더 강화한 버전(일반적으로 제 3정규형에 후보키가 여러 개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우에 적용)

제 4정규형(4NF)

다치 종속을 제거

  • 다치종속 : A, B, C 3개의 속성을 가진 테이블 R에서 어떤 복합 속성(A, C)에 대응하는 B 값의 집합이 A 값에만 종속되고 C값에는 무관하면, B는 A에 다중 값 종속이라 하고 A->->B로 표기함

제 5정규형(5NF)

조인 종속 이용
릴레이션의 모든 조인 종속이 릴레이션의 후보키를 통해서만 성립되는 정규형

  • 조인 종속 : 어떤 테이블 R의 속성에 대한 부분 집합 X, Y, Z가 있다고 하자. 이때 만일 테이블 R이 자신의 프로젝션(Projection) X, Y, ..., Z를 모두 조인한 결과와 동일한 경우 테이블 R은 조인 종속을 만족 한다고 함

반정규화(Denormalization)

시스템의 성능을 향상하고 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위이다.

반정규화를 수행하면 시스템의 성능이 향상되고 관리효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다.
과도한 반정규화는 오히려 성능을 저하시킬 수 있다.

중복 테이블 추가

작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
<추가 방법>

  • 집계 테이블의 추가 : 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)를 설정하여 사용하는 것
  • 진행 테이블의 추가 : 이력 관리 등의 목적으로 추가하는 테이블
  • 특정 부분만을 포함 하는 테이블의 추가 : 데이터가 만흔 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성

시스템 카탈로그(System Catalog)

  • 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스이다.
  • 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다.
  • 카탈로그들이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터사전이라고도 한다.
  • 시스템 자신이 필요로 하는 스키마 및 여러가지 객체에 관한 정보를 포함하고 있는 시스템 데이터베티스로, DBMS가 스스로 생성하고 유지한다.
  • 시스템카탈로그에 저장되는 내용을 메타 데이터라고도 한다.

트랜잭션(Transaction)

  • 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
  • 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.
  • 트랜잭션은 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용된다.

트랜잭션의 특성

  • 원자성(Atomicity)
    트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함
  • 일관성(Consistency)
    트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
  • 독립성, 격리성, 순차성(Isolation)
    둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음
  • 영속성, 지속성(Durability)
    성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함

CRUD 분석

  • 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것이다.
  • CRUD 매트릭스의 각 셀에는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)의 앞 글자가 들어간다.
  • CRUD 분석을 통해 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 할 수 있다.

인덱스(Index)

  • 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다.
  • 인덱스는 레코드가 저장된 물리적 구조에 접근하는 방법을 제공한다.
  • 인덱스를 통해서 파일의 레코드에 빠르게 액세스 할 수 있다.
  • 대표적인 인덱스로는 트리 기반, 비트맵, 함수 기반, 비트맵 조인 등이 있다.

0개의 댓글