건우의 개발 일기

DB 시험 대비 정리 본문

공부/CS

DB 시험 대비 정리

거누팍 2019. 12. 8. 20:07

PL/SQL 프로시저

개념

- 일반 프로그래밍 언어에서 사용하는 함수와 비슷한 개념, 작업 순서가 정해진 독립된 프로그램의 수행 단위

 

정의

- CREATE PROCEDURE 문을 사용하여 정의

- 선언부와 실행부(BEGIN-END) 로 구성

- 선언부에서는 변수와 매개변수를 선언, 실행부에서는 프로그램 로직 구현

 

JDBC

데이터베이스에 접속하는 API는 DBMS 제조사에서 자신의 제품에 맞게 구현해서 제공하는데 이를 JDBC 드라이버라고 한다.

 

데이터 모델링

개념

- 현실 세계의 복잡한 개념을 단순화하고 추상화시켜 데이터베이스화하는 과정

 

데이터 모델링의 개념

 

데이터베이스 생명주기

 

 

데이터 모델링 과정

 

 

1) 요구사항 수집 및 분석

- 실제 문서를 수집하고 분석

- 요구사항을 직접 수렴

- 비슷한 업무를 처리하는 기존의 데이터베이스를 분석

- 각 업무와 연관된 모든 부문을 살펴봄

 

2) 개념적 모델링

- 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정

- 개체를 추출하고 개체들간의 관계를 정의하여 ER 다이어그램 을 만드는 과정

 

3) 논리적 모델링

- 개념적 모델링에서 만든 ER 다이어그램을 DBMS에 맞게 사상하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정

- 상세 속성들을 모두 추출 -> 정규화 수행 -> 데이터 표준화

 

4) 물리적 모델링

- 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정

 

ER 모델

개체 - 정보를 가지고 있는 독립적인 실체

개체 타입 - 개체 집합의 동일한 특징을 나타내는 용어

속성 - 개체가 가진 성질

관계 - 개체 사이의 연관성을 나타내는 개념

관계 타입 - 개체 타입과 개체 타입 간의 연결 가능한 관계

 

개체 개체 타입, 개체 집합, 속성

 

속성의 유형

- 단순 속성 : 더 이상 분해가 불가능한 속성

- 복합 속성 : 독립적인 의미를 가진 속성

- 단일값 속성 : 하나의 값만을 가지는 속성

- 다중값 속성 : 여러 개의 값을 가지는 속성

 

관계 타입의 유형

 

차수에 따른 유형
관계 대응 수에 따른 유형

 

ISA 관계 - 상하관계

 

약한 개체 타입 - 개별 개체를 식별할 수 없는 종속된 개체 타입 (부양가족)

강한 개체 타입 - 독립적으로 식별할 수 있는 개체 타입 (직원)

 

ER 다이어그램 기호와 의미

 

ER 다이어그램의 예시

 

 

IE 표기법

 

 

관계와 관계 대응 수

 

IE 표기법 예

 

관계 데이터 모델 사상

 

ER 모델과 관계 데이터 모델의 사상 알고리즘

 

개체 타입의 사상

 

관계 타입의 사상

 

함수 종속성

AC → D , BD A, A B 는 성립하지 않는다.

- AC는 a1, c1에 대해 D의 d1과 d2가 대응한다.

- BD는 b2, d2에 대해 A의 a1과 a2가 대응한다.

- A는 a1에 대해 B의 b1과 b2가 대응한다,

 

정규화

개념

- 이상현상이 발생하는 릴레이션을 분해하여 이를 없애는 과정

 

제 1정규형

- 릴레이션의 속성 값이 원자값을 가지면 제 1정규형이라고 한다.

 

속성 값이 원자값을 갖도록 분해

 

제 2정규형

- 릴레이션의 기본키가 복합키일때, 복합키의 일부분이 다른 속성의 결정자인지 여부를 판단하는 것

 

 

제 3정규형

- 속성들이 이행적으로 종속되어 있는지 여부를 판단하는 것

 

주문 릴레이션을 주문, 고객 릴레이션으로 분해

 

BCNF

- 릴레이션에 존재하는 함수 종속성에서 모든 결정자가 후보키이며 BCNF 정규형이다.

 

 

무손실 분해

- 릴레이션 R을 분해하여 두 개의 릴레이션 R1과 R2를 만들었을 때, 다시 조인을 하면 원래의 릴레이션 R이 만들어진다는 의미이다.

 

트랜잭션

개념

- DBMS에서 데이터를 다루는 논리적인 작업의 단위

 

정의하는 이유

- 데이터베이스에서 데이터를 다룰 때 장애가 일어나는 경우가 있다. 트랜잭션은 장애 시 데이터를 복구하는 작업의 단위가 된다.

- 데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 때가 있다. 트랜잭션은 이 작업을 서로 분리하는 단위가 된다.

 

성질

- 원자성 : 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야 한다.

- 일관성 : 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야 한다.

- 고립성 : 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손하는 일이 없어야 한다.

- 지속성 : 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 한다.

 

- 다른 트랜잭션이 접근하지 못하도록 막아 대기 상태로 만드는 행위

 

트랜잭션 고립 수준

트랜잭션 동시 실행 문제

1) 오손 읽기

- 읽기 작업을 하는 트랜잭션 1이 쓰기 작업을 하는 트랜잭션 2가 작업한 중간 데이터를 읽기 때문에 생기는 문제

2) 반복불가능 읽기

- 트랜잭션 1이 데이터를 읽고 트랜잭션 2가 데이터를 쓰고 (UPDATE) 트랜잭션 1이 다시 한번 데이터를 읽을 때 이전 결과와 다르게 나오는 현상

3) 유령데이터 읽기

- 트랜잭션 1이 데이터를 읽고 트랜잭션 2가 데이터를 쓰고 (INSERT) 트랜잭션 1이 다시 한번 데이터를 읽을 때 이전 결과 값에는 없던 유령데이터가 나오는 현상

 

트랜잭션 고립 수준 명령어

 

 

1) READ UNCOMMITTED

- 자신의 데이터에 아무런 공유락을 걸지 않는다.

2) READ COMMITTED

- 오손 페이지의 참조를 피하기 위해 자신의 데이터를 읽는 동안 고유학을 걸지만 트랜잭션이 끝나기 전에라도 해지가능하다.

3) REPEATABLE READ

- 자신의 데이터에 설정된 공유락과 배타락을 트랜잭션이 종료할 때까지 유지하여 다른 트랜잭션이 자신의 데이터를 갱신할 수 없도록 한다.

4) SERIALIZABLE

고립 수준이 가장 높은 명령어로, 실행 중인 트랜잭션은 다른 트랜잭션으로부터 완벽하게 분리된다.