1. 분산 데이터베이스

- 논리적으로는 같은 시스템에 속하지만 물리적으로는 컴퓨터 네트워크를 통해 분산되어 있는 DB


1) 분산 데이터베이스 시스템의 구성 요소

- 분산 처리기 : 자체적으로 처리 능력을 가지며 지리적으로 분산되어 있는 컴퓨터 시스템

- 분산 데이터베이스 : 지리적으로 분산되어 있는 데이터 베이스. 해당 지역의 특성에 맞게 DB 구현됨

- 통신 네트워크 : 분산 처리기들을 통신망으로 연결, 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 네트워크


2) 분산 데이터베이스의 목표

- 위치 투명성 : 접근하려는 데이터베이스의 실제 위치 알 필요 없이 단지 데이터베이스의 논리적 명칭만으로 접근 가능

- 중복 투명성 : 동일한 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용

  시스템은 자동으로 여러 데이터에 대한 작업 수행

- 병행 투명성 : 다수의 트랜잭션들이 동시에 실행되더라도 그 트랜잭션의 수행 결과는 서로 영향 받지 않음

- 장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션은 정확하게 수행됨

장점

단점

높은 지역 자치성

데이터 공유성 향상

분산 제어 가능

시스템 성능이 향상됨

높은 효율성, 융통성

높은 신뢰성, 가용성

점증적 시스템 용량 확장 용이

DBMS가 수행할 기능이 복잡

어려운 DB 설계

잠재적 오류 증가

처리 비용 증가

소프트웨어 개발 비용 증가

 

2. 멀티미디어 데이터베이스

- 텍스트, 그래픽, 정지 화상, 동영상, 음성 등이 복합적으로 구성된 데이터베이스


1) 멀티미디어 데이터베이스의 특성

- 데이터가 일반적으로 대용량

- 검색 대상의 내용이 데이터의 중간에 있을 수 있으므로 미디어별로 별도의 검색 방법이 필요

- 비정형 데이터이므로 데이터 구조가 복잡하고 관계를 구성하기 어려움

 

2) 멀티미디어 데이터베이스 구축 방법

(1) 파일 기반 기법

- DMBS 사용 X. 단순한 검색 위주의 VOD(Video on Demand) 등에 이용

- 데이터의 동시 접근이 어렵고 회복 기능 등 지원 빈약

(2) 관계형 데이터베이스 기반 기법

- CLOB : 텍스트 데이터 저장 / BLOB : 이미지, 비디오, 오디오 등 이용

- 정형화된 데이터는 관계형 데이터베이스 데이터 타입 이용 / 비정형화된 데이터는 파일로 저장

(3) 객체 지향 데이터베이스 기반 기법

- 멀티미디어를 가장 잘 표현할 수 있는 기법

- 사용자 정의 클래스, 사용자 정의 메소드 이용 -> 미디어별로 별도의 클래스 정의 가능

(4) 객체 관계형 데이터베이스 기반 기법

- 관계형 데이터베이스의 CLOB, BLOB 데이터 타입 이용

  사용자 정의 클래스. 사용자 정의 메소드 이용해 미디어별 타입 정의해서 사용

 

3. 주기억장치 데이터베이스

- 데이터베이스 전체를 주기억장치에 상주시킨 후 데이터베이스 연산을 수행하는 시스템.

- 디스크 입출력이 발생하지 않음

1) 주기억장치 데이터베이스의 특성

- 디스크 입출력이 줄어들어 빠른 연산 가능

- 시스템에 문제 발생 시 복구하는 회복작업 구현이 어려움

- 주기억장치 구입비용이 많이 듬

 

4. 데이터 웨어하우스

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

한 데이터 베이스

- 전사적 데이터 통합을 통한 정보의 효율적 분석이 필요, 신속 정확한 의사결정으로 경쟁력 확보하기 위한 의사결정

용 데이터베이스

- 다양한 원본데이터베이스로부터 정제되어 추출된 데이터만을 저장하고 필요한 인덱스를 생성

이후 데이터의 다차원 분석 도구로 데이터 웨어하우스를 분석해 효율적 의사결정에 필요한 자료 얻음

장점

단점

높은 투자 수익률 얻을 수 있음

타사에 비해 경쟁우위 획득 가능

의사 결정자의 생산성 향상

기존 시스템과 명확한 역할 설정 못하면 업무 혼란 초래

추출 기준에 맞지 않는 데이터의 입력, 갱신, 삭제가 발생하면 불일치 문제 발생 가능

의사결정을 위한 충분한 데이터가 확보되지 않으면 정확한 결과 도출 불가능

과다한 자원을 사용하게 되고 유지 보수 어려움

 

5. 데이터마트

- 전사적으로 구축된 데이터 웨어하우스로부터 특정 주제나 부서 중심으로 구축된 소규모 단일 주제의 데이터 웨어하우스

- 부서별, 업무 기능별로 구축되는 데이터 웨어하우스로서 일반적으로 한 기업 내 복수개의 데이터 마트 존재

- 전사적 통합성을 염두에 두고 데이터마트가 데이터 웨어하우스보다 먼저 구축될 수 있음

1) 데이터 마트의 특징

- 전사적 데이터 웨어하우스의 데이터를 분석 요건에 적합한 구조로 재구성함

- 추세, 패턴 분석 및 데이터 접근이 용이한 요약 데이터로 구성, 필요시 일부 상세 데이터 포함

- 분석에 필요한 이력 데이터만을 포함하는 제한된 규모의 데이터

- 다양한 질의나 요구를 충족하는 유연성과 접근성이 뛰어난 다차원구조의 데이터

 

6. 데이터 마이닝

- 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법

- 데이터마이닝의 기법

연관

대용량의 트랜잭션 데이터로부터 “A이면 B이다형식의 연관 관계를 발견

연속

개인별 트랜잭션 이력 데이터를 시계열적으로 분석하여 트랜잭션의 향후 발생 가능성을 예측

분류

다른 그룹과의 차별적인 특성을 도출

클러스터링

(군집화) 상호 간 유사한 특성을 갖는 데이터들을 집단화

특성화

데이터 집합의 일반적인 특성을 분석하는 것, 데이터의 요약 과자ᅟᅥᆼ을 통해 특성 발견

패턴 분석

데이터베이스 내의 명시된 패턴을 찾는 방법

경향 분석

시계열 데이터들이 시간 축으로 변화하는 전개과정을 특성화 -> 동적으로 변하는 데이터 분석


7. OLAP

- 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식

- 데이터 웨어하우스 / 데이터 마트 같은 시스템과 상호 연관됨

- 데이터 웨어하우스 : 데이터를 저장하고 관리

   OLAP : 데이터 웨어하우스의 데이터를 전략적인 정보로 변환

- 중간 매개체가 없이 이용자들이 직접 컴퓨터를 이용하여 데이터에 접근하는 데 있어 필수적인 시스템

 

1) OLAP 연산

- Roll-up : 분석할 항목에 대해 한 차원 계층 구조를 따라 단계적으로 상세 데이터 -> 요약 데이터 로 접근

- Drill-down : 분석할 항목에 대해 한 차원 계층 구조를 따라 단계적으로 요약 데이터 -> 상세 데이터 로 접근

- Drill-through : 데이터 웨어하우스나 OLTP에 존재하는 상세 데이터에 접근하는 기능

- Drill-across : 다른 데이터 큐브의 데이터에 접근하는 기능

- Pivoting : 보고서의 행, , 페이지 차원을 바꾸어 볼 수 있는 기능

- Slicing : 다차원 데이터 항목들을 다양한 각도에서 조회하고 자유롭게 비교하는 기능

- Dicing : Slicing을 더 세분화하는 기능


2) OLAP 종류

- ROLAP : 관계형 데이터베이스와 관계형 질의어 사용 -> 다차원 데이터를 저장하고 분석

- MOLAP : 특수한 구조의 다차원 데이터베이스 사용, 큐브 캐시라고 하는 주기억장치 속에 데이터 큐브를 보관

* 데이터 큐브 : 특정 목적의 OLAP에서 사용하기 위한 큐브 형태의 다차원 논리적 구조

- HOLAP : ROLAP + MOLAP

   빠른 데이터 검색이 필요한 경우에는 요약을 메모리에 저장. 기본 데이터나 다른 요약들은 관계형 DB에 저장

 

8. OLTP

- 온라인 업무 처리 형태의 하나

- 네트워크상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 검색하는 등의 단위 작업을 처리하는 방식

- 단위 작업 : 트랜잭션 / 데이터 무결성!

- 빠른 응답 시간 요구, 개개의 레코드를 효율적으로 조회하고 수정할 수 있도록 정규화 되어 있음

구분

OLTP

OLAP

데이터 구조

복잡(운영시스템 계산에 적합)

단순(사업 분석에 적합)

데이터의 갱신

순간적 / 동적

주기적 / 정적

응답 시간

2, 3 ~ 몇 초 이내

수 초 ~ 몇 분 까지도 가능

데이터의 범위

과거 30 ~ 90

과거 5~ 10

데이터의 성격

정규/핵심 업무 데이터, 변경 어려움

비정규/일기 전용 데이터, 변경 용이

데이터의 크기

GIGA BYTE

TERA BYTE

데이터의 내용

상세 데이터

기록 보관된 요약/계산 데이터

데이터 특성

트랜잭션 중심, 중복 배제

주제 중심, 중복 수용

데이터 액세스 빈도

높음

보통 혹은 낮음

데이터의 사용법

고도로 구조화된 연속 처리

고도로 비구조화된 분석 처리

쿼리의 성격

예언 가능. 주기적

예측하기 어려움, 특수함


9. ODBC

- 프로그램과 데이터베이스의 종류에 상관없이 자유롭게 데이터베이스에 접근하여 사용할 수 있도록 Microsoft사가 만든 응용프로그램의 표준 

  인터페이스(API)

- 데이터베이스에 따른 차이는 ODBC 드라이버에 흡수

  -> 사용자는 DB종류 의식 않고 ODBC 기준에 맞게 응용프로그램을 작성하면 됨

- 데이터베이스를 교체하더라도 응용프로그램은 그대로 사용 가능 -> 비용 절감

 

1) ODBC의 구조


- Application : DB접속 시 ODBC API 사용

Driver Manager : ApplicationODBC Driver 간의 통신 관리하는 라이브러리. DSN에 정의된 형태로 필요한 드라이버 로딩 or 언로딩

DSN : 서버 연결 시 필요한 드라이버, DB 정보 저장함

ODBC Driver : ODBC AP 지원 함수 구현 라이브러리

데이터베이스 : ODBC Driver에서 요청한 SQL에 대한 결과를 반환


1. 병행제어의 개념

- 다중 프로그램의 이점으 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 

  트랜잭션 간의 상호 작용을 제어하는 기술

- 여러 개의 트랜잭션들이 동시에 인터리빙(번갈아가며 조금씩 자신의 일 처리)하게 실행되는 것

 

2. 병행제어의 목적

- 데이터베이스 공유 최대화

시스템의 활용도 최대화

단위시간당 트랜잭션 처리 건수 최대화

사용자에 대한 응답 시간 최소화

데이터베이스의 일관성 유지

 

3. 병행제어의 필요성

문제점

의미

갱신 분실

- 갱신 결과의 일부가 없어지는 현상

- 한 트랜잭션이 수행한 결과가 다른 결과에 덮여 DB에 아무런 영향 주지 못하고 분실됨

모순성 (불일치성)

데이터베이스 내의 데이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상

불일치 분석

각 트랜잭션들이 수행 결과로 기대한 결과가 아닌 다른 결과가 나오는 것

연쇄 복귀

병행 수행되던 트랜잭션들 중 하나에 문제가 생격 ROLLBACK되는 경우 다른 트랜잭션들도 함께 ROLLBACK되는 현상

한 트랜잭션이 비정상 종료로 ROOLBACK할 시 그 결과를 바탕으로 이루어진 다른 트랜잭션의 수행 결과도 ROLLBACK 되는 것

 

4. 잠금

- 주요 데이터의 엑세스를 상호 배타적으로 하는 것

하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것

- 트랜잭션들은 어떤 데이터를 접근하기 전에 잠금을 요청하여 잠금을 허락받아야 함

- 갱신 시 규칙 : 잠금 -> 실행 -> 해제

1) 잠금 단위

2) 접근성 허용 행렬

공유 잠금 트랜잭션 T1이 데이터 X에 대하여 공유 잠금을 걸면 T2는 X에 대해 읽기만 가능(기록 불가)

배타 잠금 트랜잭션 T1이 데이터 X에 대하여 배타 잠금을 걸면 T2는 X에 대해 읽기 기록 모두 불가

 

3) 교착 상태 (DEAD LOCK)

- 어떤 한 트랜잭션이 사용하기 위해 잠가 놓은 자원을 사용하기 위래 기다리므로 모든 트랜잭션들이 실행을 전혀 진전시키지 못하고 무한정 기다리고 

  있는 상태

- 교착 상태 해결을 위해선 작업 완료 후에는 UNLOCK을 해줘야 함


5. 병행제어 기법의 종류

1) 2-단계 잠금 규약 기법

- 트랜잭션 스케줄의 직렬성 보장하는 대표적인 잠금 기법

- 모든 트랜잭션들이 잠금과 잠금 해제를 확장 -> 축소 2단계로 수행

  - 확장 단계 : 잠금만 수행 가능 / 잠금 해제는 불가능한 단계

  - 축소 단계 : 잠금 해제만 수행 가능 / 잠금은 불가능한 단계

- 스케줄의 직렬성을 보장한다는 장점은 있지만, 교착 상태 예방은 불가능


* 트랜잭션 스케줄

- 트랜잭션의 연산들이 인터리빙하게 실행되는 것이 허용될 때 트랜잭션들의 개개 연산들이 실행되는 순서

- 직렬 스케줄 : 서로 다른 트랜잭션들의 연산 사이에 인터리빙이 없는 스케줄

- 병행 스케줄 : 서로 다른 트랜잭션들의 연산 사이에 인터리빙이 있는 스케줄

 

2) 타임 스탬프 순서 기법

- 타임 스탬프 : 시스템이 각 트랜잭션을 실행할 때 부여하는 값

   트랜잭션이 시스템안에 들어오면 그 때의 시스템 시간 값

- 트랜잭션들을 인터리빙 실행 결과 = 시간 스탬프 순서대로 트랜잭션 실행하는 직렬 스케줄 실행 결과 항상 동일하다는 것을 보장

- 직렬성 순서를 결정하기 위해 트랜잭션 간의 실행 순서를 미리 결정하는 가장 보편적인 기법

- 읽거나 변경할 데이터에 대해 트랜잭션 실행하기 전에 타임스탬프 부여

    -> 타임 스탬프 순서에 따라 트랜잭션 작업을 수행하도록 함

- 교착 상태 발생하지 않음

1] 트랜잭션

1. 트랜잭션의 정의

- 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 일련의 연산집합으로서의 작업 단위

- DBMS에서 회복 및 병행 수행 시 처리되는 작업의 논리적 단위


* COMMIT & ROLLBACK

- COMMIT : 트랜잭션이 정상적으로 종료될 경우 수행

- 내용을 변경한 트랜잭션이 완료되면 그 트랜잭션에 의해 데이터베이스는 새롭게 일관된 상태로 변경

   -> 이 상태는 시스템에 오류가 발생하더라도 취소되지 않음

- ROLLBACK : 트랜잭션이 비정상적으로 종료될 경우 수행

  해당 트랜잭션은 받았던 자원과 잠금을 모두 반환, 재시작되든지 폐기됨

 

2. 트랜잭션의 특성

- 데이터 무결성 보장!

1) 원자성 : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함

- 명령어는 반드시 완벽히 수행되며, 어느 하나라도 오류 발생하면 그 트랜잭션은 모두 취소

 

2) 일관성 : 트랜잭션 수행이 성공적으로 완료되면 언제나 일관성 있는 데이터베이스 상태로 변환

- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함

- 동시에 실행되는 트랜잭션이 없는 고립 상태에서의 트랜잭션 수행은 데이터베이스 일관성을 유지해야 함

 

3) 독립성 : 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야 함

- 여러 트랜잭션들이 동시에 수행되어도 그 결과는 순차적으로 실행된 결과와 같아야 함

- 여러 트랜잭션들이 동시에 실행되더라도 DBMS는 트랜잭션이 서로 실행과 완료가 순차적으로 되도록 보장해야 함

 

4) 영속성 : 트랜잭션 실행이 성공적으로 완료된 후에는 시스템에 오류가 발생하더라도 트랜잭션에 의해 변경된 내용은 계속 보존되어야 함

- 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함


2] 회복

1. 장애의 유형

- 실행 장애 : 사용자의 실수, 무결성 규정 위반 등으로 실의 실행이 실패하는 현상

- 트랜잭션 장애 : 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터. 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상

- 시스템 장애 : 하드웨어 오동작, 정전, 소프트웨어 오류. 교착상태 등에 의해 실행중인 모든 트랜잭션들이 실행 계속 할 수 없는 현상

- 미디어 장애 : 저장 장치인 디스크 블록의 손상이나 디스크 헤드 충돌 등에 의해 데이터베이스 일부 또는 전부가 물리적으로 손상되는 현상

 

2. 회복기법

1) 연기 갱신 기법

- 트랜잭션이 성공적으로 종료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기

- 트랜잭션이 실행되는 동안 변경된 내용은 로그에 보관됨

  회복작업 수행할 경우. redo 작업만 수행

 

2) 즉각 갱신 기법

- 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 기법

- 변경된 모든 내용들은 로그에 보관

- 회복 작업 수행할 경우 redo undo 모두 수행

 

3) 그림자페이지 기법

- 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해두고 실제 페이지를 대상으로 

  트랜잭션에 대한 변경작읍을 수행하는 것

- rollback 시 그림자 페이지를 변경된 이후의 실제 페이지 부분에 대체하여 회복

 

4) 검사점 기법

- redoundo 수행하기 위해 로그 전체를 조사해야 하는 경우를 피하기 위한 기법

- 주기적으로 검사점을 로그에 보관

- 로그 내에서 가장 최근의 검사점으로부터 회복 작업을 수행 -> 회복시간 단축

 

5) 미디어 회복 기법

- 데이터베이스 내용을 주기적으로 안전한 저장 장치에 덤프해 둠

 

3. 회복관리기

- 로그. 메모리덤프 등을 이용하여 회복기능 수행하는 DBMS의 핵심 구성요소.

- undo : 취소 / redo : 재작업

1] 함수적 종속

1. 함수적 종속

- 속성 X의 값 각각에 대해 시간에 관계없이 한상 속성 Y의 값이 오직 하나만 연관 되어 있을 때.

-> YX에 대해 함수 종속적이다.

-> XY를 함수적으로 결정한다.

X Y

X : 결정자

Y : 종속자

- 데이터의 의미를 표현, 현실 세계를 표현하는 제약 조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건

- 어느 속성에 대응하는 다른 속성의 값이 오직 하나만 존재할 때 그 속성이 기본키가 되는 것

학번 400 a과목 b과목 듣는건 학번 하나에 과목 속성이 두 개가 되는거니 이건 함수 종속적이지 않음

 

2. 함수적 종속 다이어그램

- 한 테이블에 존재하는 속성들 간의 복잡한 함수적 종속 관계를 그림으로 표현

- 완전 함수적 종속 : 속성 Y가 다른 속성집합 X 전체에 대해 함수적 종속이면서, X의 진부분집합 Z(X의 부분집합

X 자신이 아닌 부분집합)에 함수적 종속이 아닐 때 YX 에 완전 함수적 종속

- 부분 함수적 종속 : 속성 Y가 다른 속성집합 X 전체에 대해 함수적 종속이면서, X의 진부분집합 Z(X의 부분집합

X 자신이 아닌 부분집합)에 함수적 종속일 때 YX 에 부분 함수적 종속

- , 기본키 모두에 함수적 종속일 때 완전 함수적 종속이고, 기본키가 복합키일 때 복합 속성 중 하나만 함수적

종석이면 부분 함수적 종속이다 이거지.

 

2] 정규화

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

- 가능한 한 중복을 제거 -> 이상 발생 가능성을 줄이는 것


* 무손실 분해

- 테이블 R의 프로젝션(특정 테이블에서 일부 속성들만 추출하여 만든 테이블)R1, R2RK NATURAL JOIN을 통해 원래의 테이블 R로 정보 손실 없이 

  복귀가 되는 경우


* 이행적 함수 종속

- AB 이고 BC일 때 AC 만족하는 관계


* 다중 값 종속 (다치 종속)

- 복합 속성(A, C)에 대응하는 B 값의 집합이 A값에만 종속 / C 값에는 무관

   BA에 다중 값 종속 / A ->> B


* 조인 종속

- 테이블 R이 자신의 프로젝션을 모두 조인한 결과와 동일한 경우 테이블 R은 조인종속 JD(프로젝션)을 만족한다고 함

1] 내장 SQL

 1. 커서 (Cursor)

- 내장 SQL문의 실행 결과로 반환된 복수 개의 튜플들을 접근할 수 있도록 해주는 개념

- 질의 실행 결과로 반환된 테이블의 튜플들을 순서대로 가리키는 튜플에 대한 포인터.

- 한번에 하나씩 튜플들을 처리할 수 있음

* 커서 관련 명령어

DECLARE

커서를 정의하는 등 커서에 관련된 선언을 하는 명령어

OPEN

커서가 질의 결과를 첫 번째 튜플을 가리키도록 설정하는 명령어

FETCH

질의 결과에 대한 튜플들 중 현재의 다음 튜플로 커서를 이동시키는 명령어

CLOSE

질의 실행 결과에 대한 처리 종료 시 커서를 닫기 위해 사용하는 명령어

 

2] 스토어드 내장 프로시저

1. 스토어드 프로시저(Stored Procedure)

- 프로시저 : 특정한 작업을 수행하는 SQL문을 논리적으로 그룹화한 것. 그 자체만으로도 완전한 프로그램의 축소판.

- 스토어드 프로시저 : 연속된 SQL문을 하나로 모아 SQL서버에 미리 컴파일해서 저장해 놓은 것. 호출문을 통하여 일괄 작업 수행에 적합.

구성

장점

- 선언부 : 타입, 커서, 상수, 변수, 내포된 서브 프로그램 선언부

- 실행부 : 코드 실행 제어, 데이터 조작 문 작성

- 예외처리부 : 예외 처리

모듈별 프로그래밍 허용.

빠른 SQL 실행 시간

보안성 향상

네트워크 통신량 감소

 

2. 생성, 제거, 실행

CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)

[지역변수 선언]

프로시저 BODY;

- OR REPLACE : 선택적 예약어.

파라미터

IN : 프로시저에 값 전달하는 것 지정

OUT : 프로시저가 반환하는 값 지정

INOUT : 프로시저에 값 전달하고 프로시저 가 반환하는 값 지정

BODY : 본문 코드. BEGIN~ END. 적어도 하나의 SQL문 있어야 함.

SET : 변수에 값 치환 예약어

CREATE OR REPLACE PROCEDURE change_s(IN 사원번호 INTERGER)

BEGIN

UPDATE 급여

SET 지급방식 = ‘S’

WHERE 사원번호 = 사원번호;

END;

 

 

DROP PROCEDURE 프로시저명;

EXECUTE 프로시저명;

EXEC 프로시저명;


3] 이상

1. 이상의 개념

- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생

-> 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상

 

2. 이상의 종류

삽입 이상

테이블에 데이터를 삽입할 떄 의도와는 상관없이 원하지 않는 값들로 인해 삽입할 수 없게 되는 현상

삭제 이상

테이블에서 한 튜플을 삭제할 떄 의도와는 상관없는 값들도 함께 삭제(연쇄삭제)되는 현상

갱신 이상

튜플에 있는 속성 값 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상


13. DCL (data Control Language)

1) GRANT

- 데이터베이스 사용자에게 권한을 부여(권한이 있어야 연결, 입력, 수정, 삭제, 조회 가능)

GRANT privileges ON Object TO user; 

 - privileges : 권한 / Object : 테이블명


* privileges 권한

SELECT 

 지정된 테이블에 대해 SELECT 권한 부여 

INSERT

 지정된 테이블에 대해 INSERT 권한 부여 

UPDATE 

 지정된 테이블에 대해 UPDATE 권한 부여 

DELETE

 지정된 테이블에 대해 DELETE 권한 부여 

REFERENCES

 지정된 테이블을 참조하는 제약조건을 생성하는 권한 부여 

ALTER 

 지정된 테이블에 대해 수정할 수 있는 권한 부여 

INDEX

 지정된 테이블에 대해 인덱스를 생성할 수 있는 권한 부여 

ALL

 테이블에 대한 모든 권한 부여 


* WITH GRANT OPTION

WITH GRANT OPTION 

 - 특정 사용자에게 권한을 부여할 수 있는 권한 

   A->B->C 일 때 B권한 뻇으면 C도 권한 회수됨

WITH ADMIN OPTION

 - 테이블에 대한 모든 권한 부여 

   A->B->C 일 떄 B 권한 뻇어도 C 권한은 회수 안됨


2) REVOKE

- 사용자에게 부여된 권한 회수

REVOKE privileges ON Object FROM user;


14.  TCL

* 트랜잭션 : 데이터베이스의 작업을 처리하는 작업단위(연산단위)

* 트랜잭션의 특성

원자성 (Atomicity)

 - 트랜잭션은 DB연산의 전부 또는 일부 실행만이 있음 (All or Nothing)

 - 트랜잭션의 처리가 완전히 끝나지 않았을 경우는 전혀 이루어지지 않은 것과 같음

일관성 (Consistency)

 - 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함

 - 트랜잭션 실행 후에도 일관성이 유지되어야 함 

고립성 (Isolation)

 - 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없음

 - 즉 부분적 실행 결과를 다른 트랜잭션이 볼 수 없음(끼어들기 불가) 

연속성 (Durability)

 - 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 함 


1) COMMIT

- 변경할 데이터를 데이터베이스에 반영

- 변경 전 이전 데이터는 잃어버림

- COMMIT이 완료되면

 데이터베이스 변경으로 인한 LOCK이 해제(UNLOCK)됨

 다른 모든 데이터베이스 사용자는 변경된 데이터를 조작 가능

 하나의 트랜잭션 과정을 종료


* AUTO COMMIT 

- SQL*PLUS 프로그램을 정상적으로 종료하는 경우 자동 COMMIT 됨

- DDL 및 DCL을 사용하는 경우 자동 COMMIT 됨(DML은 안된다!)

- "set autocommit on;"을 SQL*PLUS에서 실행하면 자동 COMMIT 됨


* SQL SERVER사용시 commit 방법

① 기본 AUTO COMMIT 

② 암시적 트랜잭션

- 시작은 DBMS가 처리, 끝은 사용자가 COMMIT 처리 (ORACLE과 같음)

③ 명시적 트랜잭션

- 시작 끝 모두 사용자가 지정

- BEGIN TRANSATION ~ DML ~ COMMIT TRANSACTION (BEGIN TRAN ~ COMMIT 가능)

- BEGIN TRANSATION ~ DML ~ ROLLBACK TRANSACTION (BEGIN TRAN ~ ROLLBACK 가능)


2) ROLLBACK

- ROLLBACK 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션 종료

- 이전 COMMIT 한 곳 까지 복구

- ROLLBACK 실행하면 LOCK이 해제되고 다른 사용자돠 데이터베이스 행을 조작할 수 있음

- SQL SERVER 은 기본 AUTO COMMIT이므로 ROLLBACK 시 명시적 트랜잭션으로 전언해야 함


3) SAVEPOINT(저장점)

- 트랜잭션을 작게 분할하여 관리하는 것. 지정된 위치까지만 트랜잭션을 ROLLBACK 할 수 있음

- SAVEPOINT <SAVEPOINT명> 실행

지정된 SAVEPOINT까지만 데이터 변경 취소

변경된 모든 데이터 취소 

ROLLBACK TO <SAVEPOINT명>;

ROLLBACK; 

- 한 번 세이브 포인트로 롤백 시 그 미래에 있던 세이브 포인트는 사라짐 -> 그 곳으로 롤백 불가능

* SQL SERVER

- SAVE TRANSACTION SAP1; (SAVE TRAN SVP2) : 세이브 포인트 1 만듬

- ROLLBACK TRANSACTION SVP1; (ROLLBACK TRAN SVP2) :  세이브 포인트 1로 롤백


+ Recent posts