[Database] 데이터베이스 개론

Kyeongmin·2022년 1월 5일
2

Chapter 1. 데이터베이스 기본 개념

  1. 데이터와 정보
    데이터란, 관찰하거나 측정하여 수집된 사실 혹은 값
    정보란, 의사 결정에 활용할 수 있도록 데이터를 처리 및 가공한 결과물

  2. 데이터베이스의 개념

    • 통합 데이터 : 중복성이 허용되지 않음 (단, 효율을 위해 의도적으로 중복을 허용하는 경우도 있음)
    • 공유 데이터 : 여러 사용자가 함께 이용해야 함, 사용 목적이 다른 사용자들을 모두 고려
    • 저장 데이터 : 컴퓨터가 접근할 수 있는 매체에 저장
    • 운영 데이터 : 지속적으로 유지해야 함
  3. 데이터베이스의 특징

    • 실시간 접근성 : 사용자의 데이터 요구에 실시간으로 응답
    • 계속 변화 : 동적으로 삽입/삭제/수정을 통해 현재의 데이터를 유지
    • 내용 기반 참조 : 저장된 주소나 위치가 아닌 내용 또는 값으로 참조 가능
    • 동시 공유 : 여러 사용자가 같은 데이터를 동시에 사용 가능
  4. 데이터의 종류

    • 정형 데이터 : 정해진 구조에 따라 저장된 데이터 (엑셀, RDBMS의 테이블)
    • 반정형 데이터 : 구조에 따라 저장됐지만, 데이터 내용 안에 구조에 대한 설명이 함께 존재
                              (HTML, XML, JSON 등)
    • 비정형 데이터 : 정해진 구조가 없이 저장된 데이터 (소셜 데이터의 텍스트/영상/이미지 등)

Chapter 2. 데이터베이스 관리 시스템의 정의

파일시스템

데이터를 파일로 관리하는 시스템 (파일을 생성/삭제/수정)

  1. 파일 시스템의 단점
    • 데이터 중복성
    • 프로그램이 파일에 종속적
    • 데이터 동시 공유 / 회복 기능의 부족
    • 프로그램 개발의 어려움

데이터베이스 관리 시스템 (DBMS)

  1. DBMS 주요 기능
    • 정의 : 데이터베이스 구조 정의 및 수정
    • 조작 : 데이터 삽입, 삭제, 수정, 검색 연산 처리
    • 제어 : 데이터를 안전하게 유지 (무결성, 장애 회복, 보안, 동시 접근)

DBMS 장단점

  1. DBMS 장점
    • 데이터 중복성 최소화 (중복 통제)
    • 데이터 독립성
    • 동시 공유
    • 보안 향상
    • 무결성 유지
    • 데이터 구조/접근 등의 표준화
    • 장애 회복
    • 응용 프로그램 개발 비용 감소
  2. DBMS 단점
    • 고비용 (DBMS License, 컴퓨터 자원)
    • 백업 / 장애 회복 방법의 복잡함
    • 중앙 집중 관리로 인한 취약점

DBMS 발전 과정

  • 1세대 네트워크•계층 DBMS
    네트워크 DBMS 노드/간선을 이용한 그래프 형태의 데이터베이스 (구조 복잡, 변경 어려움)
    계층 DBMS 트리 형태의 베이터베이스 (현실 데이터의 트리 형태 구현과 구조 변경 어려움)
  • 2세대 관계 DBMS
    단순하고 이해하기 쉬운 테이블 형태의 데이터베이스 (Oracle, MS SQL, My SQL)
  • 3세대 객체지향•객체관계 DBMS
    객체지향 DBMS 객체 개념을 이용한 데이터베이스 (O2, ONTOS, GemStone)
    객체관계 DBMS 관계DB + 객체DB
  • 4세대 이후
    NoSQL DBMS 비정형 데이터 저장/처리, 분산 저장/처리에 효율적 (MongoDB, HBase, Redis)
    NewSQL DBMS 관계DB + NoSQL (Spanner, NuoDB)

Chapter 3. 데이터베이스 시스템

데이터베이스 시스템 : 데이터베이스 + 데이터베이스 관리 시스템

데이터베이스 구조

  1. 개념
    스키마 (Schema) 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것
    인스턴스 (Instance) 스키마에 따라 데이터베이스에 저장된 값
  2. 3단계 데이터베이스 구조
    : 데이터베이스를 외부단계 / 개념단계 / 내부단계 3단계로 나누고 각각 다른 추상화를 제공하는 구조
    • 외부 단계 : 개별 사용자 관점, 외부 스키마 (사용자에게 필요한 데이터베이스를 정의한 것)
                       DB ↔︎ 외부 스키마 (1:N 관계)
    • 개념 단계 : 조직 전체의 관점, 개념 스키마 (데이터 유형, 관계, 제약조건, 정책, 권한에 대한 정의)
                       DB ↔︎ 개념 스키마 (1:1 관계), 외부 스키마는 개념 스키마를 바탕으로 만들어짐
    • 내부 단계 : 저장 장치의 관점, 내부 스키마 (레코드 구조, 필드 크기, 인덱스의 레코드 접근 경로)
                       DB ↔︎ 내부 스키마 (1:1 관계)
      ※ 데이터베이스는 저장 장치에 파일 형태로 저장된다.

데이터 독립성
: 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성

  1. 개념
    매핑(Mapping) 스키마 사이의 대응 관계 (=사상), 외부/개념 사상과 개념/내부 사상
  2. 데이터 독립성
    • 논리적 데이터 독립성
      개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것
      외부 스키마 변경 대신 외부/개념 사상(응용 인터페이스)을 수정하여 논리적 구조 변경을 대응함.
    • 물리적 데이터 독립성
      내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것
      개념 스키마 변경 대신 개념/내부 사상(저장 인터페이스)를 수정하여 물리적 구조 변경을 대응함.

데이터 사전 (=시스템 카탈로그)
: 저장된 데이터를 관리하고 이용하기 위한 부가 정보(스키마, 사상정보, 제약조건 등)

데이터베이스 사용자
: 데이터베이스 관리자, 응용 프로그래머, 일반 사용자로 나눠짐.

  1. 데이터베이스 관리자 (Database Administrator)
    데이터베이스의 운영 • 관리, 데이터 정의어/제어어를 주로 사용
  2. 응용 프로그래머 (Application Programmer)
    프로그래밍 언어로 응용 프로그램을 작성할 때 데이터 조작어를 삽입하는 사용자
  3. 최종 사용자 (End User)
    데이터를 조작(삽입•삭제•수정•검색)하기 위해 데이터베이스에 접근하는 사용자

데이터 언어

  1. 데이터 정의어 (DDL; Data Definition Language)
    스키마의 정의 • 삭제 • 수정을 위해 사용하는 데이터 언어
    DDL로 변경된 스키마는 데이터 사전에 반영됨
  2. 데이터 조작어 (DML; Data Manipulation Language)
    데이터의 삽입 • 삭제 • 수정 • 검색 등을 위해 사용하는 데이터 언어
    • 절차적 조작어 : 사용자가 어떤 데이터를 원하고 어떻게 처리해야 하는지 제시
    • 비절차적 조작어 : 사용자가 어떤 데이터를 원하는지 제시
  3. 데이터 제어어 (DCL; Data Control Language)
    데이터의 여러 특성(무결성,보안,회복,동시성) 유지를 위해 필요한 규칙/기법을 정의하는 데이터 언어

데이터베이스 관리 시스템의 구성

  1. 질의 처리기 (Query Processor)
    • DDL 컴파일러 DDL로 작성된 스키마의 정의를 해석하여 데이터 사전에 저장한다.
    • DML 프리 컴파일러 응용 프로그램에 삽입된 데이터 조작어를 추출하여 DML 컴파일러에 전달한다.
    • DML 컴파일러데이터 조작어로 작성된 데이터 처리를 분석하여 런타임 데이터베이스 처리기가 이해할 수 있도록 해석
    • 런타임 데이터베이스 처리기 데이터 처리 요구를 데이터베이스에서 실제로 실행한다.
    • 트랜잭션 관리자 접근 권한, 무결성 유지를 위한 제약조건 위반 여부, 회복, 병행 등을 담당한다.
  2. 저장 데이터 관리자 (Stored Data Mangaer)
    디스크에 저장된 데이터베이스, 데이터 사전 관리 및 접근을 담당

Chapter 4. 데이터 모델링

데이터 모델링이란

데이터 모델링
: 현실 세계의 데이터를 데이터베이스로 옮기는 변환 과정

  • 개념적 데이터 모델링
    현실 세계의 중요 데이터를 추상화를 통해 어떤 요소로 이루어져 있는지 표현하는 과정
  • 논리적 데이터 모델링
    추상화된 데이터를 데이터베이스에 저장할 구조를 결정하고 나타내는 과정

데이터 모델
: 데이터 모델링을 쉽게 할 수 있도록 도와주는 도구 (데이터 구조, 연산, 제약조건으로 구성됨)

  • 개념적 데이터 모델 (개체-관계 모델, E-R Model)
  • 논리적 데이터 모델 (관계 데이터 모델)

개체-관계 모델

  1. 개체 (Entity)
    : 중요 데이터를 가지고 있는 특정 요소
      다른 개체와 구별되는 이름을 가지고 있고 고유한 속성을 하나 이상 가지고 있다.
      E-R Diagram에서 개체는 사각형으로 표현한다.
    • 개체 타입 (Entity type)
      개체를 고유의 이름과 속성들로 정의한 것
      (ex. 고객개체 이름(이름, 주소, 연락처, 적립금개체 속성))
    • 개체 인스턴스 (Entity instance)
      개체를 구성하고 있는 속성이 실제 값을 가진 개체
      (ex. <홍길동, 서울시 강남구, 02-111-1111, 1999>)
  2. 속성 (Attribute)
    : 개체가 가지고 있는 고유의 특성, 의미 있는 데이터의 가장 작은 논리적 단위
      E-R Diagram에서 속성은 타원으로 표현한다.
    • 단일 값 속성 하나의 인스턴스에 대해 하나의 값만을 가지는 속성
      다중 값 속성 하나의 인스턴스에 대해 여러개의 값을 가지는 속성
    • 단순 속성 의미를 더는 분해할 수 없는 속성 (적립금, 가격 등)
      복합 속성 의미를 분해할 수 있어 하나의 값이 여러개의 의미를 포함하는 속성 (주소, 생년월일)
    • 유도 속성 다른 속성 값에서 유도되어 결정되는 속성 (가격과 할인율 속성으로 결정되는 판매가격)
    • 널 속성 아직 결정되지 않았거나 모르는 값을 의미함 (공백, 0과 다르다)
    • 키 속성 개체 인스턴스를 각각 식별할 수 있는 속성 (회원번호, 고객아이디 등)
  3. 관계 (Relationship)
    개체와 개체가 맺고 있는 의미 있는 연관성
    • 관계의 유형
      : Mapping Cardinality (관계를 맺는 상대 개체 인스턴스의 개수)에 따른 유형
        ( 1 : 1 관계 / 1 : N 관계 / N : M 관계 )
    • 관계의 참여 특성
      모든 개체 인스턴스가 관계에 참여할 때는 필수적 참여, 일부만 관계에 참여할 때는 선택적 참여
      ※ E-R Diagram에서 필수적 참여 관계는 이중선으로 표시한다.
    • 관계의 종속성
      특정 개체가 다른 개체의 존재 여부에 의존적인 경우 존재 종속이라 한다.
      ※ 의존적인 개체를 약한 개체, 존재 여부를 결정하는 개체를 강한 개체라고 한다.
      ※ E-R Diagram에서 약한 개체는 이중 사각형, 종속 관계는 이중 마름모로 표시한다.

논리적 데이터 모델

사용자 입장에서 개념적 구조(E-R Diagram)를 데이터베이스에 저장할 형태로 표현한 논리적인 구조

Chapter 5. 관계 데이터 모델

관계 데이터 모델의 개념

  • 용어
    릴레이션(Relation) : 하나의 개체에 관한 데이터 (테이블)
    속성(Attribute) : 릴레이션의 열 (파일 관리시스템에서의 필드)
    튜플(Tuple) : 릴레이션의 행, 개체에 대한 인스턴스 (파일 관리시스템에서의 레코드)
    도메인(Domain) : 속성 하나가 가질 수 있는 모든 값의 집합
                                (속성이 가질 수 있는 값을 모두 나열하기 힘든 경우 데이터타입을 사용한다.)
    널(Null) 값 : 해당되는 값을 모르거나 적합한 값이 없는 경우를 나타냄 (0, 공백과는 다르다)
    차수(Degree) : 속성의 개수 (자주 변하지 않는 정적 특성, 최소 1개 이상이어야 한다.)
    카디널리티(Cardinality) : 튜플의 개수 (자주 변하는 동적 특성)
  • 릴레이션과 데이터베이스의 구성
    릴레이션 스키마 : 릴레이션에 포함된 모든 속성을 정의하는 릴레이션의 논리적 구조
    릴레이션 인스턴스 : 릴레이션에 존재하는 튜플들의 집합
    데이터베이스 스키마/인스턴스 : 모든 릴레이션의 스키마 / 인스턴스
  • 릴레이션의 특성
    1. 튜플의 유일성 (하나의 릴레이션에 동일한 튜플이 존재할 수 없다.)
    2. 튜플의 무순서 (하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.)
    3. 속성의 무순서 (하나의 릴레이션에서 속성 사이의 순서는 무의미하다.)
    4. 속성의 원자성 (속성 값으로는 원자 값만 사용할 수 있다.)
  • 키(Key) 종류
    튜플들을 구별해주는 역할의 속성/속성들의 집합, 제약조건을 정의한다.
    1. 슈퍼키 : 유일성을 만족하는 속성/속성들의 집합
    2. 후보키 : 유일성과 최소성을 만족하는 속성/속성들의 집합
    3. 기본키 : 여러 후보키 중 튜플들을 구별하기 위한 1개의 속성/속성들의 집합
      기본키의 선택 기준
      • 널 값을 가질 수 있는 속성은 부적합하다.
      • 값의 변동성이 큰 속성은 부적합하다.
      • 단순한 후보키를 기본키로 선택한다.
    4. 대체키 : 기본키로 선택되지 못한 후보키
    5. 외래키 : 자신/다른 릴레이션의 기본키를 참조하는 속성

관계 데이터 모델의 제약

무결성 제약 조건
데이터를 정확하고 유효하게 유지하기 위한 제약 조건
1. 개체 무결성 제약조건
   기본키를 구성하는 모든 속성은 널 값을 가지면 안된다.
2. 참조 무결성 제약조건
   외래키는 참조할 수 없는 값을 가질 수 없다. (기본키 값으로 존재하는 값만 참조 가능)

Chapter 6. 관계 데이터 연산

관계 데이터 연산
: 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
  (관계 대수, 관계 해석으로 나뉨)

관계 대수

  • 절차 언어, 원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어
  • 폐쇄 특성, 피연산자인 릴레이션에 연산자를 적용해 얻은 결과도 릴레이션이다.

종류

  • 일반 집합 연산자 (릴레이션이 튜플의 집합이라는 개념을 이용)
    • 합집합(∪), 교집합(∩), 차집합(−), 카티션 프로덕트(×)
  • 순수 관계 연산자 (릴레이션의 구조와 특성을 이용)
    • 셀렉트(𝛔), 프로젝트(𝝅), 조인(⋈), 디비전(÷)

일반 집합 연산자

  • 제약조건
    • 연산을 위한 피연산자 2개가 필요하다. (릴레이션 2개)
    • 합/교/차집합은 릴레이션이 합병 가능 해야 한다.
      ※ 합병 가능 : 두 릴레이션의 차수가 같고, 서로 대응되는 속성의 도메인이 같아야 한다.
  • 종류
    • 합집합(∪) : 수학의 합집합과 연산이 같음
    • 교집합(∩) : 수학의 교집합과 연산이 같음
    • 차집합(−) : 수학의 차집합과 연산이 같음
    • 카티션 프로덕트(×) : 릴레이션1과 릴레이션2에 속한 각 튜플을 모두 연결하여 새로운 튜플을 만든다.

순수 관계 연산자
관계 데이터 모델에서 새로 제시된 관계 연산자

  • 종류
    • 셀렉트(𝛔)
      • 주어진 조건을 만족하는 튜플만 선택한다. (하나의 릴레이션을 대상으로 연산)
      • 조건식에 비교연산자(>,≥,<,≤,=,≠), 논리연산자(∧and,∨or,¬not)를 사용할 수 있다.
      • 𝛔조건식(릴레이션) , 릴레이션 where 조건식 으로 나타낸다.
      • 예시 : 𝛔등급='gold' ∧ 적립금≥2000(고객) / 고객 where 등급='gold' and 적립금≥2000
    • 프로젝트(𝝅)
      • 선택한 속성에 해당하는 값을 선택한다.
      • 동일한 튜플이 중복되지 않고 한 번만 나타난다.
      • 𝝅속성리스트(릴레이션) , 릴레이션[속성리스트] 로 나타낸다.
      • 예시 : 𝝅고객명,등급,적립금(고객) / 고객[고객명,등급,적립금]
    • 조인(⋈)
      • 두 릴레이션을 조합하여 하나의 릴레이션을 만들어낸다. (여러 릴레이션을 함께 연산)
      • 조인 속성의 값이 같은 튜플만 연결하여 새로운 릴레이션을 만든다.
      • 릴레이션1 ⋈ 릴레이션2 (= 릴레이션1 ⋈N 릴레이션2, Natural Join)
      • 예시 : 고객 ⋈ 주문
      • Theta Join, 조인 속성을 지정하여 조인 연산 실행
        릴레이션1 ⋈A𝛉B 릴레이션2
        A는 릴레이션1의 속성, B는 릴레이션2의 속성, 𝛉는 비교연산자
      • Semi Join, 후위연산자의 조인 속성으로만 구성된 릴레이션을 자연 조인
        릴레이션1 ⋉ 릴레이션2
        검색에 불필요한 속성을 미리 제거하여 조인 연산의 비용을 줄일 수 있다.
      • Outer Join, 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 튜플을 포함한다.
        릴레이션1 ⋈+ 릴레이션2
    • 디비전(÷)
      • R÷S, 릴레이션S 의 모든 튜플과 관련있는 릴레이션R 의 튜플로 릴레이션을 만들어낸다.
      • 릴레이션S 의 모든 속성과 도메인이 같은 속성을 릴레이션R 이 포함하고 있어야한다.
      • 릴레이션1 ÷ 릴레이션2
      • 예시 : 고객 ÷ 우수등급

관계 해석

  • 비절차 언어, 처리를 원하는 데이터가 무엇인지만 기술
  • 대표적인 비절차 언어로는 SQL이 있다.
  • 튜플 관계 해석, 도메인 관계 해석으로 나뉜다.

Chapter 7. 데이터 베이스 언어 SQL

SQL
: 관계 데이터베이스를 위한 표준 질의어 (비절차적 데이터 언어)
: 데이터 정의어DDL, 데이터 조작어DML, 데이터 제어어DCL로 나뉜다.

데이터 정의어 (DDL)

  1. CREATE 테이블 생성
CREATE TABLE 테이블이름 (
   속성이름 데이터타입 [NOT NULL] [DEFAULT 기본값]
   [PRIMARY KEY (속성리스트)]
   [UNIQUE (속성리스트)]
   [FOREIGN KEY (속성리스트) REFERENCES 테이블이름(속성리스트)] [ON DELETE 옵션] [ON UPDATE 옵션]
   [CONSTRAINT 이름] [CHECK(조건)]
);
  • 속성의 종류
데이터 타입의미
INT or INTEGER정수
SMALLINTINT 보다 작은 정수
CHAR(n) or CHARACTER(n)길이가 n인 고정길이 문자열
VARCHAR(n) or CHARACTER VARYING(n)최대 길이가 n인 가변 길이 문자열
NUMERIC(p,s) or DECIMAL(p,s)고정 소수점 실수 (p 소수점 제외 길이, s 소수점 이하 길이)
FLOAT(n)길이가 n인 부동 소수점 실수
REAL부동 소수점 실수
DATE연, 월, 일로 표현되는 날짜
TIME시, 분, 초로 표현되는 시간
DATETIME날짜와 시간

         NOT NULL : 널 값을 허용하지 않을때 사용
         DEFAULT : 기본값 설정시에 사용

  • 키의 종류
    PRIMARY KEY : 기본키 지정 시 사용 (테이블마다 하나만 지정 가능)
    UNIQUE : 대체키 지정 시 사용 (테이블마다 여러개 지정 가능, 널 값을 가질 수 있음)
    FOREIGN KEY : 외래키 지정 시 사용 (REFERENCES 키워드 사용, 참조 무결성 제약조건 유지 위함)
    • 외래키 관련 옵션
      ON DELETE : 외래키 관련 튜플을 삭제하려고 할 때, 처리 방법 지정
      ON UPDATE : 외래키 관련 튜플을 변경하려고 할 때, 처리 방법 지정
      ① NO ACTION : 튜플을 삭제/변경하지 못하게 한다.
      ② CASCADE : 관련 튜플도 함께 삭제/변경한다.
      ③ SET NULL : 관련 튜플의 외래키 값을 NULL로 변경한다.
      ④ SET DEFAULT : 관련 튜플의 외래키 값을 미리 지정한 기본값으로 변경한다.
  • 무결성 제약조건 정의
    CONSTRAINT 이름 : 제약 조건 고유의 이름을 지정한다. (테이블별 중복 불가)
    CHECK : 특정 속성에 대한 제약조건을 지정할 때 사용 (튜플 삽입/변경 시 해당 제약조건을 지켜야함)
  1. ALTER 테이블 변경

새로운 속성 추가

ALTER TABLE 테이블이름
   ADD 속성이름 데이터타입 [NOT NULL] [DEFAULT 기본값];

기존 속성 삭제

ALTER TABLE 테이블이름 DROP COLUMN 속성이름;

새로운 제약조건 추가

ALTER TABLE 테이블이름
   ADD CONSTRAINT 제약조건이름 제약조건내용;

기존 제약조건 삭제

ALTER TABLE 테이블이름 DROP CONSTRAINT 제약조건이름;
  1. DROP 테이블 삭제
DROP TABLE 테이블이름;

데이터 조작어 (DML)

🔗 SQL 사용법 정리 참고

뷰 (View)

: 다른 테이블/뷰를 기분으로 만들어진 가상 테이블 (논리적으로만 존재, 실제로 데이터를 저장하지 않음)

  1. 뷰의 생성 / 삭제

생성

CREATE VIEW 뷰이름[(속성리스트)]
AS SELECT[WITH CHECK OPTION];

#예시
CREATE VIEW 우수고객
AS SELECT 고객아이디, 고객이름, 나이
 FROM 고객
 WHERE 등급 = ‘vip’
WITH CHECK OPTION;
  • SELECT문에서 ORDER BY절을 사용할 수 없다.
  • WITH CHECK OPTION : 뷰에서 삽입/수정 연산을 할때 SELECT문의 정의 조건을 위반하면 수행되지 않도록 하는 제약조건

삭제

DROP VIEW 뷰이름
  1. View의 활용
  • View의 동작원리
    : View에 대한 SELECT문이 내부적으로 기본 테이블에 대한 SELECT문으로 변환되어 실행된다.
    (우수고객 View에 대한 SELECT문 -> 고객 Table에 대한 SELECT문으로 변환)
  • View의 장점
    1. 질의문 작성을 좀 더 쉽게 할 수 있다.
    2. 데이터 보안 유지에 도움이 된다.
    3. 데이터 관리의 편의성
  • View DML(Insert, Update, Delete)
    : View를 대상으로 실행가능하나 DML 실행이 되지 않는 View도 있음
    변경 불가능한 View
    1. 기본 테이블의 기본키가 포함되지 않는 View
    2. 기본 테이블에 있는 내용이 아닌(집계 함수로 계산된 속성 등) 내용이 포함된 View
    3. DISTINCT 키워드가 포함된 View
    4. GROUP BY절이 포함된 View
    5. 여러 개의 테이블을 조인한 View

삽입 SQL (ESQL)

: 응용 프로그램 안에 삽입하여 사용하는 SQL

  • 커서가 필요 없는 SQL CREATE / INSERT / UPDATE / DELETE
  • 커서가 필요한 SQL SELECT

Chapter 8. 데이터베이스 설계

데이터베이스 설계 단계
요구 사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현

  1. 요구 사항 분석
    데이터베이스의 용도 파악
    결과물 : 요구 사항 명세서
  2. 개념적 설계
    DBMS에 독립적인 개념적 구조 설계
    결과물 : 개념적 스키마 (E-R Diagram)
    • 개체와 속성 추출 : 명세서의 명사 → 개체, 동사 → 관계
    • E-R Diagram : 정의된 개체와 관계를 토대로 E-R Diagram을 작성한다.
  3. 논리적 설계
    DBMS에 적합한 논리적 구조 설계
    결과물 : 논리적 스키마 (릴레이션 스키마)
    E-R Diagram → 릴레이션 스키마 변환 규칙
    1. 개체는 릴레이션으로 변환
      개체의 속성 → 릴레이션의 속성 (복합 속성은 구성하고 있는 단순 속성 → 릴레이션 속성)
      개체의 키 → 릴레이션의 기본키
    2. 다대다n:m 관계는 릴레이션으로 변환
      관계를 맺고 있는 릴레이션들의 기본키 → 관계 릴레이션의 외래키로 변환
      (외래키의 조합으로 기본키 사용 혹은 별도의 기본키 지정)
    3. 일대다1:n 관계는 외래키로 표현
      관계의 속성은 N측에 포함, 1측의 기본키를 N측의 외래키로 지정
      ※ 약한 개체가 포함된 경우, 1측의 기본키를 N측에 포함하여 기본키를 구성해야 한다.
    4. 일대일1:1 관계는 외래키로 표현
      관계의 속성은 양측에 포함, 서로의 기본키를 외래키로 주고 받는다.
      ※ 약한 개체가 포함되는 경우, 약한 개체만 외래키를 받는다.
      ※ 양측이 관계에 필수적으로 참여하는 경우, 릴레이션을 하나로 합친다.
    5. 다중 값 속성은 릴레이션으로 변환
  4. 물리적 설계
    DBMS로 구현 가능한 물리적 구조 설계 (인덱스/내부 저장 구조 등)
    결과물 : 물리적 스키마
  5. 구현
    SQL문을 작성하여 이를 DBMS에서 실행, 데이터베이스 생성

Chapter 9. 정규화

정규화의 개념과 이상 현상

  1. 정규화
    : 함수 종속성을 이용해 릴레이션과 연관성이 있는 속성들로만 구성되도록 분해해서,
      이상 현상이 발생하지 않는 릴레이션을 만들어나가는 과정
      (DB를 설계한 후 설계 결과물을 검증하기 위해 사용)
  2. 이상현상
    : 불필요한 데이터 중복으로 릴레이션에 대한 삽입/수정/삭제 연산을 수행할 때 발생하는 부작용
  3. 이상현상의 종류
    • 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
    • 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
    • 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

함수 종속

하나의 X 값에 대해 Y 값이 항상 하나인 경우, Y가 X에 함수적으로 종속되어 있다라고 표현
함수 종속 관계는 X결정자 → Y종속자로 표현

  • 완전 함수 종속 : 속성 집합 X 전체에 종속된 경우 (일부분에 종속된 것이 아님)
  • 부분 함수 종속 : 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속된 경우

정규형

릴레이션의 정규화된 정도에 따라 정규형으로 표현
※ 정규형마다 만족시켜야 하는 제약조건 존재 (차수가 높아질수록 제약조건이 많아짐)

정규형의 종류

  1. 기본 정규형
    • 제 1 정규형, 제 2 정규형, 제 3 정규형, 보이스/코드 정규형
  2. 고급 정규형
    • 제 4 정규형, 제 5 정규형

정규형

  1. 제 1 정규형 (1NF)
    릴레이션에 속한 모든 속성의 도메인이 원자값으로만 구성되어 있어야 함. (다중 값 속성 X)
  2. 제 2 정규형 (2NF)
    기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되어 있어야 함.
  3. 제 3 정규형 (3NF)
    기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않아야 함.
    (X → Y → Z인 경우, Z가 X에 이행적 함수 종속 되어 있다고 표현.)
  4. 보이스/코드 정규형 (BCNF)
    함수 종속 관계에서 모든 결정자가 후보키이어야 함.
  5. 제 4 정규형 (4NF)
    함수 종속이 아닌 다치 종속을 제거해야 함.
  6. 제 5 정규형 (5NF)
    후보키를 통하지 않는 조인 종속을 제거해야 함.

Chapter 10. 회복과 병행 제어

트랜잭션

DB에서 논리적인 작업의 단위, 하나의 작업을 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것

트랜잭션의 특성(ACID)

  • 원자성 Atomicity : All or Nothing,연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 함.
  • 일관성Consistency : 트랜잭션의 수행 전/후 데이터베이스가 일관된 상태여야 함.
  • 격리성 Isolation : 트랜잭션 중간 결과에 다른 트랜잭션이 접근할 수 없어야 함.
  • 지속성 Durability : 트랜잭션 수행 결과는 손실되지 않고 영구적이어야 함.

※ 회복 기능 (원자성 / 지속성) , 병행 제어 (일관성 / 격리성)

트랜잭션의 연산

  • Commit : 트랜잭션 수행 성공 (작업 완료), 결과를 DB에 반영
  • Rollback : 트랜잭션 수행 실패 (작업 취소), 트랜잭션 실행 전 상태로 돌아감

트랜잭션의 상태

  • 활동 상태 : 트랜잭션이 수행 중인 상태
  • 부분 완료 상태 : 트랜잭션의 마지막 연산이 실행된 직후 (모든 연산 처리 완료했지만, 결과 DB 반영 전)
  • 완료 상태 : 트랜잭션 수행 성공, commit 연산을 실행한 상태
  • 실패 상태 : 트랜잭션의 수행이 중단된 상태
  • 철회 상태 : 트랜잭션 수행 실패, rollback 연산을 실행한 상태

장애와 회복

장애의 유형

  • 트랜잭션 장애 : 트랜잭션 수행 중 오류가 발생한 상태
    (트랜잭션 논리적 오류, 데이터 오입력, 시스템 자원 과다 사용 요구, 처리 대상 데이터 부재 등)
  • 시스템 장애 : 하드웨어 결함
    (하드웨어 이상으로 메인 메모리 정보 손실 및 교착 상태가 발생한 경우)
  • 미디어 장애 : 디스크 장치의 결함
    (디스크 헤드 손상 또는 고장 등)

데이터베이스 저장장치

  • 휘발성 저장 장치 : 장애 발생시 데이터 손실됨 (메인 메모리)
  • 비휘발성 저장 장치 : 장애가 발생해도 저장된 데이터 손실 안 됨 (디스크, 자기테이프, CD)
  • 안정 저장 장치 : 비휘발성 저장 장치를 이용해 데이터 복사본 여러개를 만듬 (어떤 장애에도 데이터 손실 X)

회복 기법
데이터베이스 회복의 핵심 원리는 데이터 중복이다.

  1. 데이터베이스 복사 방법
    • 덤프(dump) : 데이터베이스 전체를 다른 저장 장치에 주기적 복사
    • 로그(log) : 데이터베이스 변경 연산이 실행될 때마다 변경 이전/이후 값을 별도의 파일에 기록
  2. 회복 연산
    • redo(재실행) : 로그를 이용해 변경 연산을 재실행하여 장애 전으로 복구
    • undo(취소) : 로그를 이용해 변경 연산을 취소하여 원래의 상태로 복구

회복 기법의 종류

  1. 로그 회복 기법
    로그를 이용한 회복 기법, 연산 결과를 데이터베이스 반영하는 시점에 따라 2가지로 나뉜다.
    • 즉시 갱신 회복 기법 : 트랜잭션 수행 중의 연산 결과를 데이터베이스에 즉시 반영
    • 지연 갱신 회복 기법 : 트랜잭션 연산 결과를 로그 파일에 기록, 부분 완료 후에 데이터베이스에 반영
  2. 검사 시점 회복 기법
    로그를 이용하되, 일정 시간 간격으로 검사 시점(checkpoint)를 만들어 해당 시점 이후의 회복 작업만 수행
    (로그 회복 기법의 비효율성을 해결하기 위한 기법)
  3. 미디어 회복 기법
    덤프를 이용하여 장애 발생 전의 데이터베이스로 복구한 후 로그를 토대로 redo연산을 실행하는 기법
    (고비용, CPU 자원 낭비와 같은 단점이 있음)

병행 제어

여러개의 트랜잭션을 실행하더라도 문제 없이 정확한 수행 결과를 얻도록 트랜잭션의 수행을 제어하는 것

병행 수행의 문제
병행 수행을 별도의 제어 없이 진행하는 경우 발생할 수 있는 문제점

  • 갱신 분실 : 하나의 트랜잭션의 결과를 다른 트랜잭션이 덮어써 변경 연산이 무효화 되는 것
  • 모순성 : 하나의 트랜잭션이 여러 연산을 실행할 때 일관성 없는 데이터베이스를 참조하여 모순된 결과가 발생하는 것
  • 연쇄 복귀 : 다른 트랜잭션으로 인해 정상적으로 rollback 연산 수행이 불가한 경우

트랜잭션 스케줄 유형

  • 직렬 스케줄 : 인터리빙 방식을 이용하지 않고 트랜잭션을 순차적으로 실행하는 것
  • 비직렬 스케줄 : 인터리빙 방식을 이용해 트랜잭션을 병행하여 실행하는 것
  • 직렬 가능 스케줄 : 직렬 스케줄과 같이 정확한 결과를 생성하는 비직렬 스케줄

병행 제어 기법
병행 수행을 하면서 정확한 결과를 얻을 수 있는 직렬 가능성을 보장하는 기법

  • 로킹 기법
    여러 트랜잭션이 동일한 데이터에 동시 접근하지 못하도록 하는 것
    (로킹 단위가 커질수록 병행성 ↓, 제어 쉬움 / 로킹 단위가 작아질수록 병행성 ↑, 제어 어려움)
    • lock 연산 : 트랜잭션이 데이터에 대한 독점권을 요청하는 연산
    • unlock 연산 : 트랜잭션이 데이터에 대한 독점권을 반환하는 연산
  • 2단계 로킹 규약
    lock/unlock 연산을 확장/축소 단계로 나누어 수행
    • 확장 단계 : 트랜잭션이 lock 연산만 실행할 수 있음
    • 축소 단계 : 트랜잭션이 unlock 연산만 실행할 수 있음

Chapter 11. 보안과 권한 관리

Chapter 12. 데이터베이스 응용 기술

분산 데이터베이스 시스템

데이터베이스를 분산 설치하되, 사용자가 논리적으로는 하나의 중앙 집중시 데이터베이스처럼 사용할 수 있도록 한 것.

분산 데이터베이스 시스템의 구성

  • 분산 처리기 : 지역별로 필요한 데이터를 처리할 수 있는 지역 컴퓨터
  • 분산 데이터베이스 : 물리적으로 분산된 지역 데이터베이스
  • 통신 네트워크 : 지역의 분산 처리기 간 자원을 공유할 수 있는 네트워크

분산 데이터 독립성
분산 된 데이터베이스를 분산되지 않은 것처럼 사용할 수 있음을 뜻함
(이를 위해서 분산 투명성을 보장해야한다.)

  • 분산 투명성
    • 위치 투명성 : 지역적으로 분산되어 있지만 사용자는 논리적인 이름으로만 접근 가능한 것
    • 중복 투명성 : 데이터가 중복되지 않게 분할하여 저장하는 것
      • 중복의 장점 : 신뢰성 및 가용성 증가, 처리 성능 향상, 데이터 처리 부담 감소
      • 중복의 단점 : 저장 공간의 증가, 데이터 불일치 발생 가능성
    • 단편화 투명성 : 하나의 릴레이션을 더 작은 조각(단편)으로 나누고 별개의 릴레이션으로 처리하는 것
      • 단편화 조건 : 완전성, 회복성, 분리성
      • 단편화의 종류 : 수평적/수직적/혼합 단편화
    • 병행 투명성 : 분산 DB 관련 트랜잭션들이 동시에 수행되도 결과는 항상 일관성 유지
    • 장애 투명성 : 특정 시스템에 문제가 발생하도 전체 시스템의 수행은 정상적으로 가능한 것

분산 데이터베이스 구조
전역 개념 스키마 ⇒ 단편화 스키마 ⇒ 할당 스키마 ⇒ 지역 스키마 ⇒ DBMS ⇒ DB

  • 전역 개념 스키마 : 모든 데이터 구조와 제약조건 (데이터의 분산 고려 X)
  • 단편화 스키마 : 전역 개념 스키마를 분할하는 단편화 정의, 전역 개념 ↔︎ 각 조각간 대응 관계
  • 할당 스키마 : 각 조각 스키마의 인스턴스를 물리적으로 저장하는 지역 정의
  • 지역 스키마 : 지역별로 저장하고 있는 데이터의 구조와 제약조건

분산 데이터베이스의 장단점

  • 장점
    • 신뢰성 / 가용성 증대
    • 지역 자치성 / 효율성 증대
    • 확장성 증대
  • 단점
    • 설계 및 구축 비용의 증가
    • 관리의 복잡성과 관리 비용 증가
    • 통신 및 처리 비용 발생

멀티미디어 데이터베이스 시스템

멀티미디어 데이터 : 여러개의 데이터 타입으로 이루어진 데이터 (비디오, 오디오, 그래픽 등)

  • 특성
    • 대용량 데이터
    • 구조의 복잡함
    • 검색 방법의 복잡함
      • 설명 기반 검색 : 데이터의 특성을 나타내는 키워드나 설명을 함께 저장하여 이를 검색에 이용
      • 내용 기반 검색 : 데이터의 실제 내용을 이용하여 검색
  • 멀티미디어 데이터 질의 처리 방법
    • 매칭 / 랭킹 / 필터링 / 인덱스 기법

데이터 웨어하우스

DB에서 의사 결정에 필요한 데이터를 미리 추출하여 이를 원하는 형태로 변환한 읽기 전용의 데이터 저장소

  • 특징
    • 주제 지향적 내용
    • 통합된 내용
    • 시간에 따라 변하는 내용
    • 내용의 비소멸성

Chapter 13. 데이터 과학과 빅데이터

빅데이터
기존의 DB가 저장하고 관리할 수 있는 범위를 넘어서는 대규모의 다양한 데이터

  • 특징 : 3V (데이터양 Volume, 속도 Velocity, 다양성 Variety)
  • 관련 기술 : 저장 / 분석 / 표현

NoSQL
기존의 관계 DB가 아닌 대량의 비정형 데이터의 저장과 처리를 위한 새로운 데이터베이스

  • 종류
    • 키-값 데이터베이스
    • 문서 기반 데이터베이스
    • 컬럼 기반 데이터베이스
    • 그래프 기반 데이터베이스

기계 학습 : 프로그램을 학습시켜서 새로운 데이터의 입력 결과를 예측하는 기술

데이터 마이닝 : 기존 데이터의 숨겨진 규칙/패턴을 찾아 새로운 가치를 찾아내는 분석 기술

  • 분석 기법
    • 분류 분석 : 정해진 기준에 따라 데이터가 어떤 그룹에 속하는지 예측하는 방법
    • 군집 분석 : 정해진 기준이 없는 상태에서 유사한 데이터들을 군집으로 나누는 방법
    • 연관 분석 : 데이터 간의 발생 빈도를 분석하여 연관 규칙을 파악하는 방법
profile
개발자가 되고 싶은 공장장이🛠

0개의 댓글