3과목 데이터베이스 구축
1. 데이터베이스 기초 개념
- 릴레이션(테이블) : 데이터를 표 형태로 표현한 것(릴레이션 : 테이블 수)
- 속성 : 릴레이션의 열
- 차수 : 속성의 수
- 튜플 : 릴레이션의 행(튜플 사이에는 순서 없음)
- 카디널리티 : 튜플의 수
- 도메인 : 속성에 들어가는 원자값 집합
2. DDL, DML, DCL
DDL 데이터 정의어 : 데이터 구조를 정의하는 명령어
- CREATE : 테이블 생성
- ALTER : 테이블 속성 변경(속성 추가하고 싶을 때 등) 테이블의 컬럼 추가, 삭제, 수정 등
- DROP : 테이블 드랍
DML 데이터 조작어 : 데이터에 변형을 가하는 명령어
- SELECT : 조회
- INSERT : 삽입
- UPDATE : 수정
- DELETE : 삭제
DCL 데이터 제어어 : 데이터베이스에 접근하고 객체들을 사용할 수 있게 권한을 주거나 회수하는 명령어
(데이터 보안, 무결성 유지, 병행 제어, 회복하기 위해 DBA가 사용하는 제어형 언어)
- GRANT : 권한 부여
- REVOKE : 권한 회수
- COMMIT : 결과 반영. 데이터의 보안과 무결성 정의
- ROLLBACK : 결과 되돌리기. 원래 상태로 복구
* REVOKE, ROLLBACK : 트랜잭션의 '원자성' 보장 받을 수 있음.
스키마
by. 사용자 관점
외부 : 데이터베이스의 개인 입장에서 논리적 구조
내부 : 물리적 저장장치(물리적 입장에서 본 데이터베이스 구조)
개념 : 데이터베이스의 전체적인 논리적 구조
+
SELECT (σ)
PROJECT (π)
JOIN (▷◁)
DIVISION (÷)
3. 후보키 vs 슈퍼키
- 후보키 : 유일성과 최소성 모두 만족하는 키
- 슈퍼키 : 유일성 O, 최소성 X
- 기본키 : null이나 중복값을 가지지 못하는 키
- 외래키 : 기본키를 참조하는 키
- 대체키 : 기본키가 없을 때 그 자리를 대신해줄 수 있는 키
4. 로킹
로킹(Locking) : 트랜잭션이 접근하는 동안 데이터를 잠궈 다른 트랜잭션이 접근하지 못하도록 보호.
로킹 단위가 커지면 그 외 모든 게 작아지고(로크 수, 병행성, 오버헤드, 공유도 등 작아짐) 관리가 훨씬 수월해짐.
반대로, 로킹 단위가 작아지면 모든 게 커지고 관리 복잡해짐
※ 로킹 문제 나오면 단위가 커지는데 다른 게 똑같이 커지거나 하는 게 없는지부터 보자.
5. 정규화
비정규 릴레이션 → 제 1정규형 → 제 2정규형 → 제 3정규형 → BCNF(보이스/코드 정규형) → 제 4정규형 → 제 5정규형
(도부이결다조)
비정규 → 제 1 정규 : 도메인이 원자값이 되어야 함.
제 1정규 → 제 2정규 : 부분적 함수 종속 제거가 필요
제 2정규 → 제 3정규 : 이행적 함수 종속 제거가 필요
제 3정규 → BCNF : 결정자이면서 후보키가 아닌 것 제거 필요
BCNF → 제 4정규 : 다치 종속 제거 필요
제 4정규 → 제 5정규 : 조인 종속성 이용
5-1. 이행적 함수 종속 관계
A → B이고 B → C일 때, A → C를 만족하는 관계를 이행적 함수 종속 관계라 함.
이러한 관계를 지우는 게 제 2정규형 → 제 3정규형 조건
6. 트랜잭션 특징(영어도 기억) ACID
원자성(Atomicity) : 트랜잭션 연산은 데이터베이스에 모두 반영(commit) 되거나, 전혀 반영되지 않아야 함. (rollback)
일관성(Consistency) : 트랜잭션이 그 시행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이터 상태로 변환함.
격리성(Isolation) : 트랜잭션 실행 중 다른 트랜잭션의 접근이 불가해야 함.영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함.※ '모두 반영' 이라는 키워드 나오면 일단 Atomicity(원자성) 떠올리기
7. 무결성
개체 무결성 : 테이블의 기본 키를 구성하는 어떤 속성도 null값이나 중복값 가지지 않음.참조 무결성 : 외래키 값은 null 이거나 참조릴레이션이 기본 키 값과 동일해야 함.도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 함.
8. 관계 대수 연산
관계 대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적 언어
순수관계 연산자
SELECT (σ) : 조건에 맞는 튜플 검색
PROJECT (π) : 특정 속성만 보여주기
JOIN (▷◁) : 합치기
DIVISION (÷) : 해당 튜플의 검색 대상 속성 제거하고 보여주기
(vs 관계 해석 : 비절차적 언어)
비트 연산자 : ^, |, &, ~
시프트 연산자 : >>, <<
조건 연산자 : ?
9. 뷰
뷰(View) : 테이블을 기반으로 만들어진 가상의 테이블
- 논리적으로만 존재
- 기본 테이블 삭제 시 뷰도 같이 삭제
- 뷰 위에 또 다른 뷰 정의 가능
- 삽입, 삭제, 갱신에 제약 존재
- CREATE, DROP 가능. ALTER 불가능. UPDATE에는 제약 따름
- 뷰 자체로 인덱스 가지지 않음.
10. 데이터베이스 목표
위치 투명성(Location Transparency) : 데이터베이스의 실제 위치를 알 필요 없이 논리적 명칭만으로 액세스 가능
중복 투명성(Replication) : 데이터가 여러 곳에 있더라도 마치 하나인 것처럼 사용 가능
병행 투명성(Concurrency) : 다수 트랜잭션이 동시에 실행되더라도 결과는 영향 X
장애 투명성(Failure) :장애에도 트랜잭션 정확히 수행
분할 투명성(Division) : 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요 X
11. 물리적 설계, 논리적 설계
물리적 설계
- 레코드 집중 분석 및 설계
- 저장 레코드 양식 설계
- 저장 경로 지정, 트랜잭션 처리량
- 접근 경로 설계, 응답시간
논리적 설계
- 논리적 구조 매핑
- 트랜잭션 인터페이스 설계
- 스키마 평가 및 정제
※ 저장경로, 레코드 키워드 들어가면 → 물리적 설계
12. 병행제어 ( 로킹 기법, 타임스탬프 기법, 다중 버전 기법, 최적 병행 수행 기법)
검증, 확인, 낙관적
목적 : 사용자의 데이터베이스 공동 사용을 최대화 / 사용자 응답시간 최소화
데이터베이스 시스템 활용도 최대화, 데이터베이스의 일관성 유지