Post

정보처리기사 3과목 데이터베이스 구축 핵심노트

정규화

정규화란?

  • 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
  • 정규화된 데이터 모델은 일관성, 정확성, 단순성, 비중복성, 안정성 등을 보장한다.

정규화 목적

  • 데이터 구조의 안정성 및 무결성을 유지한다.
  • 효과적인 검색 알고리즘을 생성할 수 있다. 따라서 자료 검색과 추출의 효율성을 높인다.
  • 데이터 중복을 배제하여 이상(Anomaly)의 발생 방지자료 저장 공간의 최소화가 가능하다.
  • 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.
  • 데이터 모형의 단순화가 가능하다.

이상 (Anomaly) 의 개념 및 종류

정규화를 거치지 않은 데이터베이스 내의 데이터들이 불필요하게 중복돼 릴레이션 조작 시 예상치 못한 문제가 발생하는데 이를 이상(Anomaly)이라고 한다.

  • 삽입 이상(Insertion Anomaly)
    릴레이션에 데이터를 삽입할 때 의도와는 상관없는 값들도 함께 삽입되는 현상이다.
  • 삭제 이상(Deletion Anomaly)
    릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들이 삭제되는 연쇄가 일어나는 현상이다.
  • 갱신 이상(Update Anomaly)
    릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되며 정보에 모순이 생기는 현상이다.

정규화 과정

  1. 1NF: 모든 메인이 원자값으로 구성
  2. 2NF: 분 함수 종속 제거 (완전 함수적 종속 관계)
  3. 3NF: 행 함수 종속 제거

    이행적 함수 제거

    A → B 이고 B → C 일 때 A → C 인 관계를 제거

  4. BCNF: 모든 정자가 후보키 (종속성 보존 제거)
  5. 4NF: 중값(다치) 종속성 제거
  6. 5NF: 인 종속성 제거

함수 종속 추론 규칙

어떤 릴레이션 R에서 X와 Y를 각각 R의 애트리뷰트 집합의 부분 집합이라고 할 경우 애트리뷰트 X의 값 각각에 대해 시간에 관계없이 항상 애트리뷰트 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수 종속 (X → Y)이라고 한다.

  • 분해 규칙
    X → YZ 이면 X → YX → Z 이다.
  • 이행 규칙
    X → Y 이고 Y → Z 이면 X → Z 이다.

    3차 정규화(3NF) 의 조건

  • 반사 규칙
    X ⊇ Y 이면 X → YY → X 이다.
  • 결합 규칙
    X → Y 이고 X → Z 이면 X → YZ 이다.

트랜잭션 (Transaction)

Git 의 Commit 과 유사

  • 데이터베이스의 상태를 변화시키기 위해서 수행하는 더이상 분할이 불가능한 업무처리의 단위
  • 데이터 거래에 있어서 안전성을 확보하기 위한 방법

트랜잭션의 특징

  1. 원자성 (Atomicity)
    완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 한다.
    1
    2
    3
    4
    5
    6
    
     START TRANSACTION
     -- 하나의 명령어처럼 처리
    
     -- A의 계좌로부터 인출;
     -- B의 계좌로 입금;
     COMMIT
    
  2. 일관성 (Consistency)
    시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 한다.
  3. 독립성 (Isolation)
    트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다.
  4. 지속성 (Durability)
    트랜잭션이 성공적으로 완료됬을 경우, 결과는 데이터베이스에 영구적으로 반영되어야 한다.

트랜잭션의 연산

  1. COMMIT
    트랜잭션이 성공적으로 수행되었음을 선언하고, 그 결과를 DB에 반영한다.
  2. ROLLBACK
    트랜잭션 수행이 실패했음을 선언하고 작업을 취소하고, DB를 트랜잭션 수행 전과 일관된 상태로 되돌린다.

트랜잭션의 상태

flowchart TD
    A(["활성화\n(Active)"])
    B(["부분 완료\n(Partially commited)"])
    C(["실패\n(Failed)"])
    D(["완료\n(Commited)"])
    E(["철회\n(Aborted)"])

    A -- Read/Write --> B
    B -- Permanent change --> D
    B -- Failure --> C
    A -- Failure --> C
    C -- Rollback --> E
  1. 활성화 (Active)
    트랜잭션이 작업을 시작하여 실행 중 인 상태
  2. 실패 (Failed)
    트랜잭션에 오류가 발생하여 실행이 중단 된 상태
  3. 철회 (Aborted)
    트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
  4. 부분 완료 (Partially commited)
    트랜잭션의 마지막 연산까지 실행하고 Commit 요청이 들어온 직후의 상태
    최종 결과를 데이터베이스에 아직 반영하지 않은 상태
  5. 완료 (Commited)
    트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태

데이터베이스 회복기법

회복이란?

  • 트랜잭션 도중에 손상된 데이터베이스를 이전 상태로 복귀하는 작업
  • 트랜잭션 연산을 수행할 때 데이터베이스를 변경하기 전 로그 데이터 생성
  • 취소(Undo) 연산으로 이미 데이터베이스에 쓰여진 것도 수정

기법의 종류

  • 즉각 갱신 기법(Immediate Update) 로그 ⭕️
  • 연기 갱신 기법(Deffered Update) 로그 ⭕️
  • 검사적 기법 (Check Point) 로그 ⭕️
  • 그림자 페이지 대체 기법 (Shadow Paging) 로그 ❌

저장 레코드 양식 설계

  1. 데이터 타입
  2. 데이터 값의 분포
  3. 접근 빈도

데이터베이스 명령어

  1. DDL (Data Definition Languange)

    데이터 정의어

    데이터를 생성, 수정, 삭제 하는 등의 데이터 전체의 골격을 결정하는 역할을 하는 언어

    • CREATE(정의) 스키마(Scheme), 도메인(Domain), 테이블(Table), 뷰(View), 인덱스(Index) 정의
    • ALTER(변경) 테이블에 대한 정의를 변경
    • DROP(삭제) 스키마(Scheme), 도메인(Domain), 테이블(Table), 뷰(View), 인덱스(Index) 삭제
      • CASCADE: 참조 테이플 튜플 삭제 시 관련 튜플 모두 삭제 및 속성 변경 시 속성값 모두 변경
      • RESTRICTED: 타 개체가 제거할 요소를 참조중이면 제거를 취소, 제거 못함
    • TRUNCATE 테이블을 초기화

    데이터베이스 관리자나 설계자가 사용

  2. DML (Data Manipulation Language)

    데이터 조작어

    정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어

    • SELECT(검색) 테이블에서 조건에 맞는 튜플을 검색
    • INSERT(삽입) 테이블에 새로운 튜플을 삽입
    • UPDATE(갱신) 테이블에서 조건에 맞는 튜플의 내용 변경
    • DELETE(삭제) 테이블에서 조건에 맞는 튜플을 삭제

    데이터베이스 사용자가 응용 프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 처리하는데 사용

    데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공

  3. DCL (Data Control Language)

    데이터 제어어

    데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어

    • GRANT(권한부여) 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여
      1
      2
      
       -- PARK 에게 CREATE TABLE 권한 부여
       GRANT CREATE TABLE TO PARK;
      
    • REVOKE(권한취소) 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
      1
      2
      
       -- PARK 에게 CREATE TABLE 권한 취소
       REVOKE CREATE TABLE TO PARK;
      
    • COMMIT(완료) 트랜잭션의 작업을 저장
    • ROLLBACK(되돌림) 트랜잭션의 작업을 취소, 원래대로 복구

SQL 예시문제

예시1) 테이블 두 개를 조인하여 뷰 V_1을 정의하고, V_1을 이용하여 뷰 V_2를 정의하였다. 다음 명령 수행 후 결과로 옳은 것은?

1
2
3
DROP VIEW V_1 CASCADE;

-- V_1과 V_2 모두 삭제된다.
  • CASCADE: 연쇄적으로 삭제하라는 뜻. 참조하는(자식) 개체까지 모두 삭제된다.
  • RESTRICTED: 참조 중일때는 에러를 띄우고 삭제 작업을 중지한다.

예시2) SQL문의 결과

1
2
3
(SELECT id FROM R1)
INTERSECT
(SELECT id FROM R2)
  • R1 테이블

    idgrade
    2020111115
    2020222220
  • R2 테이블

    idsubject
    20202222CS200
    20203333CS300
  • 정답

    INTERSECT (교집합)

    id
    20202222

예시3) DBA가 사용자 PARK에게 테이블 [STUDENT]의 데이터를 갱신할 수 있는 시스템 권한을 부여하고자 하는 SQL문을 작성하고자 한다. 다음에 주어진 SQL문의 빈칸을 알맞게 채운 것은?

1
2
3
4
5
GRANT ( a ) ( b ) STUDENT TO PARK;

-- 정답
-- a UPDATE
-- b ON

예시4) 사용자 X1에게 department 테이블에 대한 검색 연산을 회수하는 명령은?

1
REVOKE SELECT ON department FROM X1;

릴레이션의 특징

  • 튜플의 유일성
    모든 튜플은 서로 다른값을 갖는다.
  • 튜플의 무순서성
    하나의 릴레이션에 튜플에 순서는 없다.
  • 속성의 원자성
    속성값은 원자값을 갖는다.
  • 속성의 무순서성
    각 속성은 릴레이션 내에서 유일한 이름을 가지며, 순서는 큰 의미가 없다.

관계형 데이터베이스

<학생> 릴레이션

학번이름학년신장학과
89001홍길동2170CD
89002이순신1169CD
87012임꺽정2180ID
86032장보고4174ED

릴레이션 구조

  • 릴레이션 (Relation) = Table
    • 데이터를 표 형태로 표현한 것
  • 도메인 (Domain)
    • 하나의 속성(Attribute) 이 가질 수 있는 같은 타입의 원자값들의 집합
  • 속성 (Attribute) 5개
    • 데이터베이스를 구성하는 가장 작은 논리적 단위
    • 속성의 수를 디그리(Degree) 또는 차수라고 한다.
  • 튜플 (Tuple) 4개
    • 릴레이션을 구성하는 각각의 ‘행’
    • 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.
  • 스키마 (Scheme)
    • 속성(Attribute) 의 집합
  • 인스턴스 (Instance)
    • 튜플의 집합 = 행, 레코드

관계 대수

순수 관계 연산자

  • σ Select
    • 릴레이션에 존재하는 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산
    • 릴레이션의 행에 해당하는 튜플을 구하는 것이기 때문에 수평 연산이라고도 한다.
  • π Project
    • 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
    • 단, 연산 결과에 중복이 발생하면 중복이 제거된다.
    • 릴레이션의 열에 해당하는 튜플을 구하는 것이므로 수직 연산이라고도 한다.
  • Join
    • 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산
  • ÷ Division
    • (R÷S) 릴레이션 S의 모든 튜플과 관련있는 릴레이션 R의 튜플 반환

일반 집합 연산자

  • Union (합집합)
    • 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 중복 튜플은 제거
  • Intersection (교집합)
    • 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 중복 튜플은 제거
  • - Difference (차집합)
    • 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
  • x Cartesian Product (교차곱)
    • 두 릴레이션에 존재하는 튜플들의 순서쌍을 구하는 연산

관계 해석

연산자

  • OR 연산
  • AND 연산
  • NOT 연산

정량자

  • Universal Quantifier (전칭 정량자)
    • 모든 가능한 튜플(for all)

    All 의 A 를 뒤집은 모양

  • Existential Quantifier (존재 정량자)
    • 어떤 튜플 하나라도 존재(there exists)

    Exist 의 E 를 뒤집은 모양


데이터 무결성 제약조건

데이터 무결성을 지키기 위한 모든 제약사항

  • 개체 무결성 제약
    기본키에 속해 있는 Attribute는 NULL값이나 중복값이면 안된다.
  • 도메인 무결성 제약
    주어진 속성 값이 정의된 도메인에 속한 값이어야 한다.
  • 참조 무결성 제약
    외래키의 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다.

스키마 (Scheme)

  • 외부스키마
    사용자 뷰, 사용자나 개발자 관점
  • 개념스키마
    전체적인 논리적 구조 (단 하나만 존재)
  • 내부스키마
    물리적 저장장치

뷰 (View)

  • 논리적으로만 존재한다.
  • 자체적으로 인덱스를 가지지 않아 삽입, 삭제, 수정이 제한적이다. (가상 테이블)
  • 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다.
  • 뷰가 정의된 기본테이블이 제거되면 뷰도 자동적으로 제거된다.
  • 기본 테이블을 만드는 것처럼 create view 를 사용하여 만들 수 있다.
  • 뷰의 정의를 변경하려면 뷰를 삭제하고 재생성 해야한다.

키 (Key)

  • 후보키(Candidate Key)
    기본키로 사용 가능한 속성
  • 기본키(Primary Key)
    후보키 중에서 선택된 메인키(Main Key), 중복된 값과 Null값을 가질 수 없고 반드시 필요한 키
  • 슈퍼키(Super Key)
    한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
  • 외래키(Foreign Key)
    관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1릴레이션의 속성을 말한다.

후보키: 유일성 O, 최소성 O
슈퍼키: 유일성 O, 최소성 X


데이터베이스 설계

고려사항

  • 무결성, 일관성, 회복, 보안, 효율성, 데이터베이스 확장

설계순서

  1. 요구조건 분석
    • 요구조건 분석
  2. 개념적 설계 (정보 모델링, 개념화)
    • 트랜잭션 모델링
    • 독립적인 개념스키마 모델링
    • 개념스키마 설계
    • E-R 다이어그램
  3. 논리적 설계 (데이터 모델링)
    • 논리적 데이터베이스 구조로 매핑(Mapping)
    • 트랜잭션의 인터페이스 설계
    • 개념스키마 평가 및 정제
    • DBMS에 종속적인 논리스키마 설계
  4. 물리적 설계 (데이터 구조화)
    • 레코드 집중의 분석, 설계
    • 저장레코드 양식 설계
    • 저장 구조 및 액세스 경로 설정
    • 고려사항
      1. 응답 시간
      2. 저장 공간의 효율화
      3. 트랜잭션 처리량
  5. 구현
    • 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성
    • 트랜잭션 작성

분산 데이터베이스

분산 데이터베이스 시스템

  • 물리적으로 분산된 데이터베이스 시스템을 논리적으로 하나의 데이터베이스 시스템처럼 사용할 수 있도록 한 것
  • 물리적으로 분산되어 지역별로 필요한 데이터를 처리할 수 있는 지역 컴퓨터(Local Computer)를 분산 처리기(Distributed Processor)라고 한다.
  • 분산 데이터베이스 시스템을 위한 통신 네트워크 구조가 데이터 통신에 영향을 주므로 효율적으로 설계해야 한다.

분산 데이터베이스의 목표

  • 위치 투명성 (Location Transparency)
    • DB의 실제 위치를 알 필요 없이 단지 DB의 논리적 명칭만으로 액세스 할 수 있다.
    • 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없다.
  • 중복 투명성 (Replication Transparency)
    • 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용 가능하다.
    • 사용자에게 통지할 필요없이 시스템 안에 파일들과 자원들의 부가적인 복사를 자유롭게 할 수 있다.
  • 병행 투명성 (Concurrency Transparency)
    • 다수의 트랜잭션이 동시에 실현되더라도 결과에 영향을 받지 않는다.
    • 다중 사용자들이 자원들을 자동으로 공유할 수 있다.
  • 장애 투명성 (Failure Transparency)
    • 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 트랜잭션을 정확히 처리한다.
    • 사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없다.

분산 데이터베이스 구성요소

  • 분산 처리기
  • 분산 데이터베이스
  • 통신 네트워크
  • 분산 트랜잭션

분산 데이터베이스의 구조

  • 전역
  • 분할(단편화)
  • 할당
  • 지역 스키마

데이터베이스 분할 (Partitioning)

  • 데이터베이스 분할은 데이터를 여러 개의 작은 조각으로 나누는 작업으로 이렇게 분할된 데이터들은 데이터 관리 용이성, 성능, 가용성 등의 향상을 위해 사용되며, 분할 된 각 부분을 ‘파티션’ 이라고 부른다.
  • 병렬 데이터베이스 환경

분할 기법의 종류

  • 수평 분할 (Horizontal Partitioning)
    • 테이블을 행(Row) 단위로 나누는 것을 의미한다.
    • 데이터를 더 작은 덩어리로 쪼개는 것이므로, 전체 데이터베이스에 걸쳐 쿼리가 분산되어 부하를 분산시키는 효과를 얻을 수 있다.
    • 장점: 성능 향상, 확장성, 보안, 유지보수 용이
    • 단점: 데이터 중복, 쿼리 복잡성, 부하 균형, 데이터 무결성
  • 수직 분할 (Vertical Partitioning)
    • 테이블을 열(Column) 단위로 나누는 것을 의미한다.
    • 한 테이블에 수많은 컬럼이 존재한다면 디스크의 여러 블록에 데이터가 저장되므로 I/O 성능 저하를 불러올 수 있다.
    • 이렇게 컬럼이 많아지면 로우 체이닝과 로우 마이그레이션이 많아져서 성능이 저하된다.

      로우 체이닝(Row Chaining)
      길이가 너무 커서 하나의 블록에 저장되지 못하고 다수의 블록에 나누어져 저장

      로우 마이그레이션(Row Migration)
      수정된 데이터를 해당 데이터 블록에 저장하지 못하고 다른 블록의 빈 공간에 저장

분할 키 기준 분할 기법

  • 범위 분할 (Range Partitioning)
    • 분할 키 값이 범위 내에 있는지 여부로 구분한다.

      우편 번호를 분할 키로 수평 분할하는 경우

  • 목록 분할 (List Partitioning)
    • 값 목록에 파티션을 할당, 분할 키 값을 그 목록에 비추어 파티션을 선택한다.

      Country 라는 컬럼의 값이 Iceland, Norway, Sweden, Finland, Denmark 중 하나에 있는 행을 가져올 때 북유럽 국가 파티션을 구축할 수 있다.

  • 해시 분할 (Hash Partitioning)
    • 해시 함수의 값에 따라 파티션에 포함할지 여부를 결정한다.
    • 데이터의 관리보다는 성능향상에 목적을 둔다.

      4개의 파티션으로 분할하는 경우 해시 함수는 0-3의 정수를 돌려준다.

  • 합성 분할 (Composite Partitioning)
    • 분할 기준으로 여러 기법을 결합해 사용한다.
  • 라운드 로빈 분할 (Round Robin Partitioning)
    • 라운드로빈은 파티션에 행의 고른 분포를 원할때 사용한다.
    • 해시분할과 달리 분할 컬럼을 명시할 필요가 없다.
    • 회전하면서 새로운 행이 파티션에 할당된다.
    • 하나의 중앙처리장치를 임의의 프로세스가 종료될 때까지 차지하는 것이 아니라, 여러 프로세스들이 중앙처리장치를 조금씩 돌아가며 할당받아 실행되는 방식으로, 리눅스를 포함한 대부분의 시스템에서 사용하는 방식이다.

      물을 세 명이 나눠먹을 때 A가 1/3을 먹고, 그 다음 B가 1/3을 먹고, 마지막으로 C가 나머지를 먹는 것보다는 세 명이 조금씩 돌아가며 먹는 편이 모든 사람의 갈증을 동시에 해소할 수 있을 것이다.


데이터 사전 (Data Dictionary)

  • 시스템 카탈로그(System Catalog) 또는 시스템 데이터베이스(System Database)라고도 한다.
  • 시스템 자신이 필요로 하는 여러가지 객체(기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근권한 등)에 관한 정보를 포함하고 있는 시스템 데이터베이스이다.
  • 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL 문을 이용하여 내용 검색이 가능하다.
  • 데이터베이스에 대한 데이터인 메타데이터(Metadata)를 저장하고 있다.
  • 데이터 사전에 있는 데이터에 실제로 접근하는데 필요한 위치 정보는 데이터 디렉토리(Data Directory)라는 곳에서 관리한다.
  • 일반 사용자가 생성, 유지 및 수정을 할 수 없다.

병행제어 기법

동시에 여러 개의 트랜잭션을 병행수행할 때, DB의 일관성을 파괴하지 않도록 제어

병행제어의 목적

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

병행제어 기법의 종류

  • 로킹 (Locking)
  • 타임 스탬프 순서 (Time Stamp Ordering)
  • 최적 병행 수행 기법 (검증 기법, 확인 기법, 낙관적 기법)
  • 다중 버전 기법

로킹 (Locking)

한번에 로킹할 수 있는 객체의 크기를 로킹 단위라고 한다.

  • 로킹의 단위가 작아지면
    • 데이터베이스 공유 증가
    • 로킹 오버헤드 증가
    • 로크의 수 증가
    • 병행성 수준 높아짐

로킹 단위가 작으면 모든게 증가
반대로 커지면 모든게 감소


데이터 모델

데이터 모델이란 현실에 있는 대상을 컴퓨터로 표현하기 위한 모형

데이터 모델의 종류

  • 개념적 데이터 모델

    현실 세계의 개체를 추상화하는 모델

    • 속성으로 이루어진 개체와 개체들 간의 관계로 현실 세계를 표현
    • 현실 세계를 인간이 이해할 수 있는 정보로 표현하는 것이므로 정보 모델이라고도 한다.
    • 대표적인 개념적 데이터 모델은 E-R 다이어그램이다.
  • 논리적 데이터 모델

    실제 데이터가 데이터베이스에 저장되는 물리적 구조를 기술

    • 개념적 데이터 모델을 컴퓨터가 이해할 수 있는 구조로 바꾸는 과정
    • 필드로 표현된 데이터 타입과 데이터 타입들 간 관계로 현실 세계를 표현한다.
    • 단순히 데이터 모델이라고 하면 일반적으로 논리적 데이터 모델이다.
    • 특정 DBMS는 특정 논리적 데이터 모델만을 사용한다.
    • 데이터 관계를 표현하는 방식에 따라 관계 모델, 계층 모델, 네트워크 모델로 나뉜다.
  • 계층형 데이터 모델
    • 데이터를 트리 구조로 표현하는 방식
    • 데이터를 계층적인 구조로 조직화하여 부모-자식 관계로 나타낸다.
    • 초기에는 주로 네트워크와 함께 사용되었다.
  • 네트워크형 데이터 모델
    • 계층형 데이터 모델의 한계를 극복하기 위해 개발된 모델
    • 데이터를 그래프 형태로 표현하는 방식
    • 레코드 간의 복잡한 관계를 처리할 수 있다.
    • 레코드 간의 관계가 “오너쉽(Ownership)”과 “멤버쉽(Membership)” 관계로 정의된다.

데이터 모델의 구성 요소

  • 구조 (Structure)
    • 논리적인 개체 타입들 간의 관계
    • 데이터 구조 및 정적 성질을 표현
  • 연산 (Operation)
    • 실제 데이터를 처리하는 작업에 대한 명세, 조작하는 기본 도구
  • 제약 조건 (Constraint)
    • DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

E-R 모델의 표현

  • 개체 타입 → 사각형
  • 관계 타입 → 마름모
  • 속성 타입 → 타원
  • 연결 →

데이터 웨어하우스 (Data Warehouse)

  • 급증하는 다량의 데이터를 효과적으로 분석하여 정보화하고 이를 여러 계층의 사용자들이 효율적으로 사용할 수 있도록 한 데이터베이스

OLAP (OnLine Analytical Processing)

  • 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사 결정에 활용하는 방식
  • 기본적인 연산
    • roll-up
    • slicing & dicing
    • drill-up & down
    • pivot
    • drill-through