- 스키마 : 데이터의 구조, 표현 방법, 데이터들 간의 관계를 형식 언어로 정리한 구조


- cardinality : 수학에선 집합의 원소 수를 뜻함. db에선 릴레이션(테이블)의 tuple(row, record, 행)의 수.


- 트리의 degree(차수) : max(각 노드들에 연결된 간선의 수)


- 개체 무결성 : relation엔 기본 키가 존재해야 하고, 기본 키를 구성하는 attribute는 고유해야 하며, null 일 수 없다.


- key : relation에서 튜플들을 찾거나 정렬할 때 기준이 되는 attribute 들의 집합


- super key : 키를 통해 tuple들을 고유하게 구분할 수 있다(유일성)


- candidate key : super key 중에 더 이상 보유 원소들을 줄일 수 없음(= irreducible = 최소성)


- primary key : (= 기본 키), 후보 키들 가운데 설계자가 설정한 tuple 식별자.


- 대체 키 : surrogate key, alternate key, 기본 키가 되지 못한 후보 키들.


- foreign key : (= 외래 키), 다른 릴레이션을 참조하기 위해 설정된 키


- 참조 무결성 : 참조 관계에 있는 릴레이션들의 데이터가 일관되게 유지되어야 한다.


- 뷰 : DB 사용자는 실제 데이터로 부터 내가 원하는 것만 골라서 보게 가상의 논리적 구조를 만들 수 있다. 


- SQL에선 이 뷰로 수정도 되고 검색도 되는데, 마치 참조자 마냥 원래 물리 데이터도 영향을 받는다.


- 다만 뷰의 정의를 수정하는 것만 안되게 막고 있다. 구현하기가 헬이라 그랬나보다.


- locking : 하나의 트랜젝션이 데이터를 접근하고 있는 동안, 다른 트렌젝션이 이 데이터에 접근할 수 없게 하는 병행 제어 기법. 로킹 단위가 커질 수록 제


어기법은 간단해지고(오버헤드가 감소하고), 대신 데이터베이스의 공유도는 감소한다.


- anomaly : 릴레이션의 속성들의 중복과 종속관계로 유발되는 문제들, 현상들


- 삭제 이상, 삽입 이상, 갱신 이상


- 정규화 : 이상현상들을 방지하기 위한 과정, ERD 내에서 중복요소들을 찾아 제거해나간다.


- 1차 정규화 = 1NF : tuple마다 attribute에 해당하는 데이터가 한 개만 있어야함 = atomic value를 가져야 함.


- 함수 종속 : 속성 집합 X, Y에 대해 X의 값에 Y의 값이 하나씩만 연관되어 있으면 Y는 X에 함수 종속이다.( X->Y) 예를 들어 속성이 (배기량, 차량) 일 때, (차량 -> 배기량) 이다. 하지만 (배기량 -> 차량)은 아니다. 같은 배기량을 가진 차량이 있을 수 있다.


- 완전 함수 종속 : X->Y일 때, Y가 X의 진부분집합에는 함수 종속이지 않을 때, Y는 X에 대해 완전 함수 종속이다.



- 부분 함수 종속 : X->Y일 때 Y가 X의 진부분집합에 함수 종속일 때


-2차 정규화 = 2NF : 부분 함수 종속성을 제거한다. 1NF 테이블의 후보 키 K와 K에 속하지 않는 속성 A에 대해, A가 K전체에 종속적이라면 2NF다.


-3차 정규화 = 3NF : 추이 종속성을 제거한다. X->Y 이고 Y->Z 에 의해 X->Z 인 경우가 없게 된다. 2NF 테이블의 모든 속성이 기본키에만 종속이다.


- 병행 제어 = concurrency control : 다중 프로그램에서 여러 트랜젝이 병행수행될 때, 데이터베이스의 일관성이 파괴되지 않게 상호작용을 제어하는 것



- 관계 대수 / 관계 해석 : 결과는 같지만, 전자는 절차적 / 후자는 비절차적, 전자 sql문(union, select, ...) 후자 { t | EMPLOYEE(t) and t.SALARY>5000 }


- 관계 해석은 Predicate Calculus(1차 논리)에 기반하고 있다.


- NOSQL = not only sql : SQL을 유연하게 만들자, 비관계형 DB


- 비정형 데이터도 테이블에 넣을 수 있게 유연한 데이터 모델을 제공한다.


- 성능상의 이점을 위해 단순 검색 등이 최적화되어있음. 불가피하게 일관성에선 타협하였다.


- 회복 : 트랜젝션 중에 장애 발생으로 db를 이전의 상태로 롤백하는 작업.


1. 연기 갱신 기법 = deffered update : 트랜젝션이 정상적으로 완료될 때 까지 db의 갱신을 미룬다. 대신 중간과정을 log에 기록


2. 즉각 갱신 기법 = immediate update : 트랜젝션중 db를 다 갱신해버리고 log에 기록한다. 회복을 log를 활용해 수행.


3. 검사점 기법 = check point : 중간중간 세이브를 해두었다가, 전체과정을 회복할 필요가 없이 세이브포인트를 활용


4. 그림자 페이지 대체 기법 = shadow paging



- 해싱 방법

1. 제산법 : MOD연산하고 주소로 사용

2. 폴딩법 : 키를 몇가지 부분으로 나눠 수학적 지랄한다음 주소로 사용

3. 기수변환법 : 진법을 변환시켜 새로운 주소로 변환해서 사용

4. 숫자 분석법 : 키들의 분포를 보고 영리하게 선택해서 새로운 주소로 변환해서 사용


- OLAP = on-line analytical processing : 온라인 분석 처리, 사용자가 동일 데이터를 여러 기준의 다양한 방식으로 접근하면서 다차원 분석을 하게 해준다.

- roll-up : 요약해준다

- drill-down : 세부적으로 분석해준다

- slicing = dicing : 잘라서 보여준다

- pivoting : 행과 열을 바꿔서 보여준다


+ Recent posts