본문 바로가기

Project/Engineer Information Processing

데이터베이스 필기 요약정리

자료(Data) : 현실 세계에서 관찰이나 측정을 통해 수집한 단순한 사실이나 결괏값(가공 X)

정보(Information) : 의사 결정에 도움을 줄 수 있는 유용한 형태로, 자료를 가공해서 얻는 결과물

 

데이터베이스 정의

  • 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
  • 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
  • 운영 데이터(Operational Data) : 조직의 업무를 수행하는 데 있어서 반드시 필요한 자료
  • 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료

 

데이터베이스 특징

  • 실시간 접근성(Real Timer Accessibility)
  • 계속적인 변화(Continuous Evolution)
  • 동시 공유(동시 공용)(Concurrent Sharing)
  • 내용에 의한 참조(Content Reference)

 

DBMS(DataBase Management System) 정의

 → 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어

 

기존 파일 처리방식 문제점

  • 종속성 저장된 데이터를 변경하면 응용 프로그램도 같이 변경해야 된다.
  • 중복성 →  일관성, 보안성, 경제성, 무결성 문제

 

DBMS의 필수 기능

  • 정의(조직)(Definition) : 데이터와 데이터의 관계 명세 / 원하는 데이터 연산 무엇이든 가능해야 함
  • 조작(Manipulation) : 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 데이터 접근 수단 등을 정하는 기능
  • 제어(Control) : 무결성 유지, 보안, 권한 검사권한 검사, 병행 제어

 

스키마의 정의

  • 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술
  • 데이터 개체(Entitiy), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약조건 등에 관해 전반적으로 정의
  • 외부 스키마, 개념 스키마, 내부 스키마
  • 스키마는 데이터 사전에 저장되며 메타 데이터(Meta-Data)라고도 한다.

스키마의 3 계층

  • 외부 스키마 = 서브 스키마 = 사용자 뷰
  • 개념 스키마 = 전체적인 뷰(논리적 구조) → 디폴트 스키마
  • 내부 스키마(물리적 구조)

 

데이터베이스 언어

  • 데이터 정의 언어(DDL)
  • 데이터 조작 언어(DML) = 서브 언어
  • 데이터 제어 언어(DCL)

 

데이터 모델의 구성 요소

  • 개체(Entity)
  • 속성(Attribute)
  • 관계(Realtaionship)

 

데이터베이스 설계 순서

  1. 요구 분석 : 요구 조건 명세서 작성
  2. 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
  3. 논리적 설계 : 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계
  4. 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
  5. 구현 : 특정 DBMS의 DDL로 데이터베이스 생성, 트랜잭션 작성

 

릴레이션 구조

튜플(Tuple) : 속성의 모임으로 구성

속성(Attribute) : 속성의 수 = 차수

도메인(Domain) : 속성이 취할 수 있는 원자 값들의 집합

릴레이션 인스턴스 : 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것

  • 튜플 사이에 순서는 없다.
  • 속성들 간의 순서는 중요하지 않다.
  • 속성은 더 이상 쪼갤 수 없는 원자 값만을 저장한다.

 

키(Key)의 개념 및 종류

  • 후보키 : 기본키로 사용할 수 있는 속성들
  • 기본키 : 후보키 중에서 선택한 주키(Main key)
  • 대체키 : 후보키가 2개 이상일 때 기본키를 제외한 나머지 후보키
  • 슈퍼키 : 속성들의 집합으로 구성된 키
    • 모든 튜플에 대해 유일성은 만족시키지만 최소성은 만족시키지 못함
  • 외래키 : 참조하고 있는 릴레이션의 기본키와 같은 속성(참조 관계 표현)

 

무결성

  • 개체 무결성 : 기본키를 구성하는 속성은 널값이나 중복 값을 가질 수 없다.
  • 도메인 무결성 : 외래키 값은 널이거나 참조 릴레이션의 기본키 값과 동일해야 한다.

 

순수 관계 연산자

연산자 특징
Select(σ) 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만듦
Project(π) 주어진 속성만 추출하는 연산
Join(⋈) 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만듦
Division R(X) ⊃ S(Y) 일 때 R의 속성이 S의 속성값을 모두 가진 튜플에서
S가 가진 속성을 제외한 속성만을 구하는 연산

 

정규화(Normalization)

정규화는 데이터베이스의 논리적 설계 단계에서 수행한다.

이름 조건
제1 정규형 반복 속성 제거, 모든 속성이 원자값을 가짐
제2 정규형 부분 함수적 종속 제거
제3 정규형 이행적 함수적 종속 제거
BCNF 후보키가 아닌 결정자 제거
제4 정규형 다치종속 제거
제5 정규형 조인 종속성 이용

부분 함수적 종속 : 2개 이상의 결정자 중에서 하나의 결정자에만 종속되는 경우

이행적 함수적 종속 : 한 릴레이션의 속성 X, Y, Z가 주어졌을 때 함수적 종속성 X  Y와 Y  Z가 성립되면 논리적 결과로 X  Z가 성립한다. 이때 속성 Z는 X에 이행적 함수적 종속성이라고 한다.

* 정규화 단계 암기 요령

정규화라는 출소자가 말했다.
두부 이겨다 줘 = 도부이결다조

메인이 원자값
분적 함수 종속 제거
행적 함수 종속 제거
정자이면서 후보키가 아닌 것 제거
치 종속 제거
인 종속성 이용

 

이상(Anomaly)의 개념 및 종류

정규화를 거치지 않은 데이터베이스 내에서 데이터들이 불필요하게 중복되어 나타나는 현상

  • 삽입 이상 : 의도와는 관계없이 원하지 않는 값들도 함께 삽입되는 현상
  • 삭제 이상 : 의도와는 관계없이 원하지 않는 값도 함께 연쇄 삭제되는 현상
  • 갱신 이상 : 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상 

 

SQL 분류

DDL(데이터 정의어)

명령어 기능
CREATE 스키마, 도메인, 테이블, 뷰, 인덱스를 정의함
ALTER 테이블에 대한 정의를 변경하는 데 사용함
DROP 스키마, 도메인, 테이블, 뷰, 인덱스를 삭제함

DML(데이터 조작어) : 인터페이스 제공

명령어 기능
SELECT 테이블에서 조건에 맞는 튜플을 검색함
INSERT 테이블에 새로운 튜플을 삽입함
DELETE 테이블에서 조건에 맞는 튜플을 삭제함
UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경함

DCL(데이터 제어어) : 데이터 관리 목적

명령어 기능
COMMIT 명령 수행 결과를 실제 물리적 디스크로 저장하고 관리자에게 알림
ROLLBACK 비정상적 종료시 원래의 상태로 복구
GRANT 데이터베이스 사용자에게 사용 권한 부여함
REVOKE 데이터베이스 사용자의 사용 권한을 취소함

 

Select문

 

Select문 형식

  • Predicate
    • ALL : 모든 튜플 검색(디폴트)
    • DISTINCT : 중복된 튜플은 1개만 검색
    • DISTINCTROW : 중복된 튜플은 1개만 검색되는데 선택된 속성의 값이 아니라 튜플 전체를 대상으로 고려
  • GROUP BY절
    • 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성을 지정
    • 그룹 함수와 함께 사용
      • COUNT(속성명)
      • MAX(속성명)
      • MIN(속성명)
      • SUM(속성명)
      • AVG(속성명)
  • HAVING절
    • GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정
  • ORDER BY절
    • 특정 속성을 기준으로 정렬하여 검색할 때 사용
      • ASC : 오름차순(디폴트) / DESC : 내림차순

 

삽입, 삭제, 갱신 문

삽입문
삭제문
갱신문

 

뷰(View)

→사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 기본 테이블로부터 유도된 가상 테이블

하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

  • 뷰의 장점
    • 논리적 데이터 독립성 제공
    • 동일 데이터에 대해 동시에 여러 사용자의 요구 지원
    • 사용자의 데이터 관리를 간단하게 해 줌
    • 자동 보안 제공
  • 뷰의 단점
    • 독립적인 인덱스가 없음
    • 뷰의 정의를 변경할 수 없음
    • 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

뷰 정의문

 

뷰 삭제문

RESIRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제 취소
CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제됨

 

트랜잭션
→ 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
    또는 한꺼번에 모두 수행되어야 할 일련의 연산들

트랜잭션의 특성

  • 원자성(Atomicity) : 하나라도 에러 발생하면 트랜잭션 전부 취소
  • 일관성(Consistency) : 일관성 있는 데이터베이스 반환
  • 독립성(Isolation) : 수행 중인 트랜잭션이 완료되기 전에 다른 트랜잭션에서 수행 결과 참조 불가능
  • 지속성(Durability) : 완료된 트랜잭션의 결과는 영구적으로 반영

 

병행 제어(Concurrency Control)

동시에 여러 개의 트랜잭션을 병행 수행시킬 때, 데이터베이스의 일관성을 파괴하지 않도록
트랜잭션 간의 상호작용을 제어하는 것

병행 수행의 문제점

  • 갱신 분실 : 같은 자료를 공유하여 갱신할 때 갱신 결과 일부가 없어짐
  • 비 완료 의존성 : 실패 후 회복하기 전에 다른 곳에서 참조
  • 모순성 : 원치 않는 자료를 이용함으로써 발생하는 문제
  • 연쇄 복귀 : 트랜잭션 하나가 Rollback 하면 다른 트랜잭션도 Rollback 되는 현상

따라서 로킹(Locking)을 통해
주요 데이터의 엑세스를 상호 배타적으로 한다.

 

이진트리의 운행법

 

  • Preorder(전위) 운행 : Root → Left → Right 순으로 운행 (A→B→C)
    • +AB
  • Inorder(중위) 운행 : Left → Root → Right 순으로 운행 (B→A→C)
    • A+B
  • Posorder(후위) 운행 : Left → Right → Root 순으로 운행 (B→C→A)
    • AB+

 

수식의 표기법

Infix로 표기된 수식을 바꿔보기

  1. Postfix
    1. 연산 우선순위에 따라 괄호로 묶는다.
      (X = ( ( ( A / B) * (C + D) ) + E ) )
    2. 연산자를 해당 괄호의 뒤로 옮긴다.
      (X ( ( (AB) / (CD) + ) * E ) + ) =
    3. 괄호를 제거한다.
      XAB/CD+*E+=
  2. Prefix
    1. 연산 우선순위에 따라 괄호로 묶는다.
      (X = ( ( ( A / B) * (C + D) ) + E ) )
    2. 연산자를 해당 괄호의 앞으로 옮긴다.
      =(X + ( * ( / (AB) + (CD) ) E ) )
    3. 괄호를 제거한다.
      =X+*/AB+CDE
  3. Postfix→Infix
    1. 먼저 인접한 피연산자 2개와 오른쪽의 연산자를 괄호로 묶는다.
    2. 연사자를 해당 피연산자의 가운데로 이동시킨다.
    3. 필요 없는 괄호를 제거한다.