정규형

  • 분석, 설계시점에 수행한다

용어정리

  • 슈퍼키: 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합, 유일성만 만족
  • 후보키: 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합, 기본키가 될 수 있는 후보들. 유일성과 최소성을 동시에 만족
  • 기본키: 후보키 들 중에서 하나로 최소성과 유일성을 만족하는 속성, NULL과 중복값을 가질 수 없다.
  • 대체키: 기본키로 지정한 것 외의 후보키들
  • 결정자: x가 Y에 대응한다고 할 때, X는 결정자, Y는 종속자.

제1정규형 (1NF)

  • 릴레이션에 속하는 속성의 속성 값이 모두 원자값으로만 구성
  • 테이블 R에 속한 모든 도메인이 원자값만으로 구성되어 있다.

제2정규형 (2NF)

  • 후보키가 아닌 속성들이 후보키에 대해 완전 함수적 종속인 경우
  • 📌 테이블 R에서 키가 아닌 모든 필드가 키에 대해 함수적으로 종속되며, 키의 부분 집합이 결정자가 되는 부분 종속이 존재하지 않는다.

제3정규형 (3NF)

  • 이행적 함수 종속을 제거한 정규형
  • A->B, B->C일 때, A->C 관계를 제거
  • X->Y : Y는 X에 함수 종속

BCNF(Boyce and Codd Normal Form)

  • 📌 결정자가 항상 후보키가 되도록 릴레이션 분리
  • 📌 테이블 R에 존재하는 모든 함수적 종속에서 결정자가 후보키이다.

제5정규형

  • 📌 어떤 릴레이션 R의 모든 조인 종속성의 만족이 R의 후보 키를 통해서만 만족될 때
  • 📌 후보키를 통하지 않는조인 종속(JD : Join Dependency) 제거해야 만족하는 정규형

정규형 과정에서 발생할 수 있는 문제

이상(Anomaly)

  • 데이터의 중복으로 인하여 관계연산을 처리할 때 예기치 못한 곤란한 현상이 발생하는 것



인덱스

  • 문헌의 색인, 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조이다.
  • 테이블에 붙여진 색인으로 데이터 검색 시 처리속도 향상에 도움이 된다.
  • 📌 인덱스의 추가, 삭제 명령어는 각각 CREATE, DELETE 이다.
  • 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다.



동시성제어(병행제어)를 위한 직렬화 기법

타임스탬프 기법

  • 트랜잭션 간의 처리 순서를 미리 정하는 기법

로킹 기법

  • 📌 로킹 단위가 크면 로크 수가 작아지고, 제어기법이 간단해진다. 그리고 병행성 수준이 낮아진다.
  • 종류
    • shared lock: 읽기만 가능
    • exclusive lock: 읽기와 기록 모두 불가능, 배타 로크 기법
    • 2 phase locking: 모든 트랜잭션들이 lock과 unlock 연산을 확장 단계와 수축 단계로 구분하여 수행

Validation 낙관적 검증

  • 트랜잭션 수행이 끝난 뒤 일괄 검사

MVCC 다중버전 동시성 제어

  • 트랜잭션 타임스탬프와 접근 데이터의 여러 버전 타임스탬프 비교하여 직렬 가능성 보장되는 버전으로 선택



데이터베이스 설계

📌 요구조건 분석 > 개념적 설계(정보 모델링, 개념화) > 논리적 설계(데이터 모델링) > 물리적 설계(데이터 구조화) > 구현

1. 개념 데이터베이스 설계

  • DBMS 독립적 개념 스키마 설계, 📌 트랜잭션 모델링

트랜잭션

  • . 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산

2. 논리 데이터베이스 설계

  • 📌 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계, 스키마의 평가 및 정제
  • 관계 데이터 모델의 구성요소
    • 릴레이션, 튜플(행), 속성(열), 카디널리티, 차수, 스키마, 인스턴스
    • Cardinality: 튜플의 수
    • Degree: 속성의 수

릴레이션

데이터 관계를 중심으로 구현한 데이터베이스

  • 📌 모든 튜플은 서로 다른 값을 가지고 있다.
    • 동일한 값이 저장될 수 있으나 별개의 값으로 해석한다
  • 📌 하나의 릴레이션에서 튜플의 순서는 무의미하며, 보장되지 않는다.
  • 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
  • 모든 속성 값은 원자값(atomic value)을 가진다.

  • 📌 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다.
  • 뷰는 일종의 가상테이블이며, update에는 제약이 따른다.
    • 구성된 내용에 대한 삽입, 갱신, 삭제 연산에는 제약이 따른다.
  • 뷰는 기본 테이블을 만드는 것처럼 create view를 사용하여 만들 수 있다.
  • 📌 뷰는 논리적으로 존재하는 기본 테이블과 다르게 물리적으로 구현되어 있지 않다.
  • 독자적인 인덱스를 가질 수 있다.
  • 논리적 독립성을 제공한다.
  • 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
  • 접근 제어를 통한 자동 보안이 제공된다.

무결성(Integrity)

  • 데이터의 정확성, 일관성, 유효성이 유지되는 것
  • 무결성 규정의 대상으로는 도메인, 키, 종속성 등이 있다.
  • 무결성 규정에는 데이터가 만족해야 될 제약 조건, 규정을 참조할 때 사용하는 식별자 등의 요소가 포함될 수 있다.
  • 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.
  • 릴레이션 무결성 규정(Relation Integrity Rules)
    • 릴레이션을 조작하는 과정에서의 의미적 관계(Semantic Relationship)를 명세한 것이다
  • 무결성 제약 조건
    • DB에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 DB 내에 저장되는 것을 방지하기 위한 제약조건을 말한다.
    • 개체 무결성(실체 무결성)
      • 📌 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다.
      • 기본키는 중복값을 가질 수 없다.
    • 도메인 무결성(영역 무결성)
      • 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정이다.
    • 참조 무결성
      • 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
      • 외래키가 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다. 없는거 입력할 수 없다는 뜻.
    • 사용자 정의 무결성

관계대수와 관계해석

  • 관계대수는 절차적 언어이고, 관계해석은 비절차적 언어이다.
  • 관계해석 기호

연산자기호연산자기호연산자기호

SELECT σ UNION OR
PROJECT π INTERSECTION AND
JOIN ▷◁ DIFFERENCE - NOT
DIVISION ÷ CARTESIAN PRODUCT X FOR ALL (전칭 정량자)
        THERE EXISTS (존재 정량자)
  • 관계대수 연산
    • 📌 SELECT, PROJECT, JOIN, DIVISION
    • 📌 합집합, 교집합, 차집합, 카티션프로덕트(곱하기 연산)
      • 카티션 프로덕트 (Cartesian product) - cross join 형태 생각하면 될 듯

3. 물리 데이터베이스 설계

  • 논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
  • 📌 응답시간, 저장공간의 효율화, 트랜잭션 처리량
  • 물리적 설계의 목적은 효율적인 방법으로 데이터를 저장하는 것이다.
  • 📌 저장 레코드 집합
    • 물리적 데이터베이스 구조의 기본적인 단위

저장 레코드 양식 설계시 고려사항

  • 📌 데이터 타입, 데이터 값의 분포, 접근 빈도



SQL의 기능에 따른 분류

DDL(Data Definition Language)

  • 데이터 정의어, 데이터를 생성, 수정, 삭제하는 등의 데이터 전체의 골격을 결정하는 역할을 하는 언어
  • CREATE, ALTER, DROP, TRUNCATE
    • CREATE TABLE
      • 📌 속성 타입의 변경은 해당하지 않는다. 정의와 지정 위주

DML(Data Manipulation Language)

  • 데이터 조작어, 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 역할을 하는 언어
  • SELECT, INSERT, UPDATE, DELETE

DCL(Data Control Language)

  • 📌 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어
  • 📌 데이터의 보안과 무결성을 정의한다.
  • GRANT, REVOKE, COMMIT, ROLLBACK
    • GRANT CREATE TABLE TO SOMEONE;
    • ROLLBACK: 데이터베이스 조작 작업이 비정상적으로종료되었을 때 원래 상태로 복구한다.



트랜잭션

트랜잭션의 성질

원자성 Atomicity

  • 📌 트랜잭션의 모든 연산들이 정상적으로 수행 완료되거나 아니면 전혀 어떠한 연산도 수행되지 않은 원래상태가 되도록 해야 한다.
  • ALL OR NOTHING

일관성 Consistency

  • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.

격리성 Isolation

  • 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.

영속성 Durability

  • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

트랜잭션의 상태

활동(Active), 실패(Failed), 철회(Aborted), 부분완료(Partially Committed), 완료(Committed)

  • 부분완료 (Partially Committed)
    • 트랜잭션의 상태 중 트랜잭션의 마지막 연산이 실행된 직후의 상태로, 모든 연산의 처리는 끝났지만 트랜잭션이 수행한 최종 결과를 데이터베이스에 반영하지 않은 상태



데이터베이스 병행제어의 목적

  • 📌 시스템 활용도 최대화
  • 사용자에 대한 응답시간 최소화
  • 📌 데이터베이스 공유 최대화
  • 데이터베이스 일관성 유지



데이터 모델

  • Operation
    • 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업

관계형 데이터 모델

E-R 모델

개체(Entity, 네모), 속성(Attribute, 원), 관계(Relation, 마름모)

  • 📌 다중값 속성은 이중원으로 표기

계층형 데이터 모델

망형 데이터 모델



분산 데이터 시스템

  • 📌 분산 데이터베이스는 논리적으로는 하나의 시스템에 속하지만 물리적으로는 여러 개의 컴퓨터 사이트에 분산되어 있다.
  • 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성을 목표로 한다.
  • 데이터베이스의 설계가 비교적 어렵고, 개발 비용과 처리 비용이 증가한다는 단점이 있다.
  • 분산 데이터베이스 시스템의 주요 구성 요소는 분산 처리기, 분산 데이터베이스, 통신 네트워크 등이 있다.
    • 📌 P2P 시스템, 단일 데이터베이스는 해당되지 않는다.
댓글