본문 바로가기

CS(Computer Science)/데이터 베이스

데이터 베이스 2(Database)

<관계 대수>

 

관계 대수 (Relational Algebra) -> 절차적   (Selection, Projection, Union, Intersection 등)             

 

기본 연산

Selection : row들을 골라냄

Projection : column들을 골라냄

Cartesian product : 두 집합 곱셈 (ex - SQL에서 -> FROM S1, S2 )

Rename : relation 이름이나 속성 이름을 변경 ( SQL에서는 빈칸이나 as)

 

 

복합 연산

Join : Cartesian product 한 후 Selection 한 결과

Division : A/B -> B를 모두 만족하는 A의 값 (ex - a에서 b튜플을 모두 가지고 있는 튜플들)

 

 

부가 연산

Assignment

Aggregate Functions ->  avg , min , max, sum ,count

 

 

변경 연산

Insertion

Deletion

Updating

 


 

 

시스템 카탈로그 : DDL로 구성되는 기본 테이블 , 뷰, 인덱스, 제약조건 등의 데이터베이스 구조 및 통계 정보를 저장함

                        (메타 데이타 ->데이터에 관련된 데이터)

                         (시스템 데이터베이스)

 

<권한>

   -사용자에게 read, insert ,update, delete 권한 부여 

   - 스키마 권한 : index, resources, alteration , drop 권한 부여

   (권한 부여는 처음에 DBA가 부여,   권한을 부여할 수 있는 권한을 받은 사람도 부여 가능)

   (권한 회수하면 cascade방식으로 다 회수됨)

   (SQL -> grant.. on .. to)

 

 

Embedded SQL(내장 SQL) :  응용 프로그램에 SQL을 삽입하여 DB이용 

 

-프로시저 : 절차형 SQL을 활용하여 특정 기능을 수행할 수 있는 트랜잭션 언어

-사용자 정의 함수 : 프로시저와 마찬가지지만 return 이나 명령문 등에서 차이를 보임

-Triggers : 특정 이벤트가 발생하면 조건을 확인하고 action을 취함.

 

<Query processing>

1. Query 를  parsing 하고 translation 해서 관계 대수로 변경

2. Optimizer 가 Optimization 진행해서 제일 빠른 길 찾아서 실행

 

 

 




 

 

속성 종류 : 단순 속성, 복합 속성, 유도(파생) 속성, 널 속성

 

 

데이터 베이스 생명 주기 : 요구조건 - 설계 - 구현 - 운영 - 감시 및 개선

 

 

데이터베이스 설계 : 1. 요구사항 분석

                           2. 개념적 설계  (E-R 다이어그램)  -> 개념적 스키마 생성

                           3. 논리적 설계  (Table)     -> 논리적 스키마 생성

                           4.  물리적 설계    -> 물리적 스키마 생성

DB설계의 기본은 중복의 최소화 (물론 특정한 상황에 따라 반정규화 -> 너무 쪼개면 join 손해) 

 

 

 

 

 

<개념적 설계 ->  E-R 다이어그램> 

 

 

 

카디날리티 비율 : 두 개의 엔티티타입 간 관계에서 참여자의 수를 의미

                          ( 1:1 , 1:m , m:n )

 

 

 

 

 

weak entity -> 종속되어 있는 entity , 부분키 사용 

 

Specialization : top-down 설계 과정 (세분화)

Generalization : Botton-up 설계 과정 (일반화)


 

<논리적 설계>

 

<1:1> ->카디널리티 비율

 

<1:n>

n쪽 relation에 외래키를 만듬

 

<n:m>

새로운 R테이블을 만듬

 

 

<정규화>

정규화 -> 분해하여 중복, 이상(anomaly)의 해결 (이상 -> 삽입이상, 삭제이상, 갱신이상 등)

              일반적으로 3NF 또는 BCNF까지 사용하는 경우가 많음. (상황에 따라서 역정규화)

 

<함수 종속>

 x -> y  :  x는 y를 결정함 ,   x 는 y의 결정자, y는 x의 종속자

          ex) x가 후보 키이면 해당 릴레이션의 모든 애트리뷰트 y 에 대해 x->y 성립

 

 

< 제1 정규형 (1NF)  >

- 모든 도메인이 원자 값만으로 된 릴레이션

            

< 제2 정규형 (2NF) > 

- 1NF이고

- 키에 속하지 않는 모든 애트리뷰트들이 기본 키에 완전 함수 종속 (기본키에 대해 부분 함수 종속된 애트리뷰트 분해)

  완전 함수 종속 ex ) y는 x에 완전 함수 종속임 -> y가 X전체에 대해서만 함수적으로 종속된 경우

 

< 제3 정규형 (3NF) >

- 2NF이고

- 후보 키에 속하지 않는 모든 애트리뷰트들이 후보 키에 이행적 함수 종속되지 않음

   (이행적 함수 종속 : x->y, y->z 일 때 x->z가 되는 경우),,

    ( 해결 ->  x->y , y->z 로 테이블 분리)

 

< 보이스/코드 정규형 (BCNF) >

- 모든 결정자가 후보 키이면 릴레이션 R은 BCNF에 속함

   (강한 3정규형)

 

< 제4 정규형(4NF) >

- BCNF이고

- 릴레이션에서 다치 종속 되지 않음

 

<제5 정규형 (5NF) >

 

- 4NF이고

- 릴레이션에 존재하는 조인 종속이 후보 키를 통해서만 성립되도록 만듬.

 

 


<트랜잭션>

 

트랜잭션 : 데이터 처리 단위 (ex - 계좌 이체 -> 출금하고 다른 계좌에 입금하는게 세트)

   -동시성 제어

   - 회복

 

트랜잭션의 특성(ACID)

   - 원자성 (Atomically)  : 한 트랜잭션 내의 모든 연산들이 완전히 수행되거나 전혀 수행되지 않음

   - 일관성 (Consistency)

   - 고립성 (Isolation) : 한 트랜잭션이 데이터 갱신 동안은 다른 트랜잭션 접근 금지

   - 지속성 (Durability) : 완료된 트랜잭션 효과는 시스템 고장나도 유지 

 

트랜잭션의 완료(commit) : DB에 완전하게 반영 (SQL ->COMMIT WORK) (메모리 버퍼에 있는 것을 디스크에 반영)

트랜잭션의 철회(rollback) : 일부만 반영된 경우 수행되기 전으로 되돌림 (SQL -> ROLLBACK WORK)

 

   

 

 

locking

2단계 로킹 프로토콜 : lock 확장 단계에서는 요청만 , 수축 단계에서는 해제만 

 

다중 로크 단위 : 데이터베이스, 릴레이션, 디스크 블록, 투플 등

 

 

Recovery

 

Redo : 가장 최근 복제본 + 로그 -> DB복원 (ex - commit 했는데 반영이 안된 거 재수행)

Undo : 로그 + 모든 변경들을 취소 -> 원래의 DB 상태로 복원

         (Undo는 단일 연산에 대해, Rollback은 한 트랜잭션에 대해 적용)

 

 

즉시 갱신 : 갱신한 사항이 트랜잭션 완료전이라도 디스크에 반영될 수 있음.

               복구 과정 -> 로그 파일이 기록된 마지막부터 반대방향으로 순차적으로 검색

                                 commit안된 트랜잭션들은 undo , 다시 처음부터 내려오면서 commit된 것들은 redo

 

지연 갱신 : commit되어야 반영

              -  그래서 undo가 필요 없음

              - 그냥 순차적으로 내려오면서 commit 된 트랜잭션들만 redo 수행

 

체크포인트 -> - redo 할 양이 너무 많을 걸 대비해서 체크포인트 설정,

                   -  오래전 commit된 것들은 이미 반영되었을 확률 높아서 redo필요 없음.

                   - 디스크에 전부 출력

 

 


< Data Mining >

 

- 고객관련 정보를 토대로 미래의 구매형태를 예측하거나 변수 간 인과관계를 분석하는 마케팅 기법 (패턴 파악)

 

지지도 : 전체 거래 중 X와 Y를 동시에 포함하는 거래가 어느 정도인지.

신뢰도 : X를 포함하는 거래 중에서 Y가 포함된 거래는 어느 정도인지.

 


 

<부가 자료>

Constraints 는 생성 이후에 나중에 추가할 수 있음.

 

로그 -> old value, new value로 표현

 

인덱스 -> DB가 data를 찾을 때 목차처럼 index를 지정해서 더욱 빠르게 찾을 수 있음 (ex -  특정 데이터는 250부터 )

반응형