일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 회사 탐방
- 포기하지 않기
- 내 철학
- ios
- performance of uikit
- performance of swiftui
- 대한민국 소프트웨어대전
- 열심히 살았다
- 서울 올림픽 파크텔
- 안드로이드
- performance analysis of swiftui and uikit
- Error
- swiftui uikit performance
- 목표 성취
- 좋은 하루
- xcframework
- 긴장긴장
- 코엑스
- swiftUI
- 도담도담
- Scoped Storage
- 노브랜드 버거
- CleanArchitecture
- 선산 휴게소
- 잘못된 칭찬
- 도담도담 V2
- Android 10
- 칭찬 하는 법
- ErrorHandlingRIBs
- B1ND
- Today
- Total
건우의 개발 일기
DB 시험 대비 정리 본문
PL/SQL 프로시저
개념
- 일반 프로그래밍 언어에서 사용하는 함수와 비슷한 개념, 작업 순서가 정해진 독립된 프로그램의 수행 단위
정의
- CREATE PROCEDURE 문을 사용하여 정의
- 선언부와 실행부(BEGIN-END) 로 구성
- 선언부에서는 변수와 매개변수를 선언, 실행부에서는 프로그램 로직 구현
JDBC
데이터베이스에 접속하는 API는 DBMS 제조사에서 자신의 제품에 맞게 구현해서 제공하는데 이를 JDBC 드라이버라고 한다.
데이터 모델링
개념
- 현실 세계의 복잡한 개념을 단순화하고 추상화시켜 데이터베이스화하는 과정
데이터 모델링 과정
1) 요구사항 수집 및 분석
- 실제 문서를 수집하고 분석
- 요구사항을 직접 수렴
- 비슷한 업무를 처리하는 기존의 데이터베이스를 분석
- 각 업무와 연관된 모든 부문을 살펴봄
2) 개념적 모델링
- 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정
- 개체를 추출하고 개체들간의 관계를 정의하여 ER 다이어그램 을 만드는 과정
3) 논리적 모델링
- 개념적 모델링에서 만든 ER 다이어그램을 DBMS에 맞게 사상하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정
- 상세 속성들을 모두 추출 -> 정규화 수행 -> 데이터 표준화
4) 물리적 모델링
- 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
ER 모델
개체 - 정보를 가지고 있는 독립적인 실체
개체 타입 - 개체 집합의 동일한 특징을 나타내는 용어
속성 - 개체가 가진 성질
관계 - 개체 사이의 연관성을 나타내는 개념
관계 타입 - 개체 타입과 개체 타입 간의 연결 가능한 관계
속성의 유형
- 단순 속성 : 더 이상 분해가 불가능한 속성
- 복합 속성 : 독립적인 의미를 가진 속성
- 단일값 속성 : 하나의 값만을 가지는 속성
- 다중값 속성 : 여러 개의 값을 가지는 속성
관계 타입의 유형
약한 개체 타입 - 개별 개체를 식별할 수 없는 종속된 개체 타입 (부양가족)
강한 개체 타입 - 독립적으로 식별할 수 있는 개체 타입 (직원)
IE 표기법
관계 데이터 모델 사상
개체 타입의 사상
관계 타입의 사상
함수 종속성
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
고립 수준이 가장 높은 명령어로, 실행 중인 트랜잭션은 다른 트랜잭션으로부터 완벽하게 분리된다.