3과목 데이터베이스 암기해야하는것
A
- 개념적설계
- 논리적설계
- 트랜잭션 인터페이스를 설계한다 , 관계형 데이터베이스라면 테이블을 만드는 과정이다.
- 목표 DBMS에 종속적이어야한다.(독립적이면 안된다.)
- 개체
- 파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을한다.
- 개체 인스턴스
- 개체 선정방법
- DFD 자료흐름도를 사용했을 경우에는 자료 저장소를 참조한다
- BPS 업무 프로세스 재정의를 사용했을 경우에는 관련 개체를 찼는다
- E-R 다이어그램
- E-R다이어그램의 종류
- 튜플
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위이다.
- 도메인
- 하나의 속성이 취할수있는 같은 타입의 원자값이다. 예를 들어 성별의 도메인은 남,녀이다.
- 후보키
- 기본키
- 대체키
- 후보키가 둘이상일때 기본키를 제외한 나머지 후보키들
- 슈퍼키
- 유일성을 만족하지만 최소성은 만족하지 못한다.
- division
- 관계해석
- 관계데이터의 연산을 표현하는 것으로 계산수식을 사용한다. 정보가 무엇인지만 정의 하는 비절차적 특성을 지닌다.
- 튜플관계해석과 도메인 관계해석이 있다.
- 질의어로 표현하다.
- 제1정규형
- 릴레이션의 모든 속성값들이 원자값으로 이루어져있다.
- 제2정규형
- 1NF이면서 기본키가 아닌 모든 속성들이 기본키에 대하여 완전 함수적 종속을 만족한다.
- 제3 정규형
- 2NF이면서 기본키가 아닌 모든 속성들이 기본키에 이행적 종속을 만족하지 않는 정규형
- 이행적 종속이란 A->B , B->C 일때 A->C를 만족하지 않는다.
- BCNF
- 릴레이션 R에서 결정자가 모두 후보키인 정규형이다.
- 강한 3정규형이라고도 한다.
- 모든 BCNF가 종속성을 보존하는 것은 아니다.
- 키가아닌 모든 속성은 각 키에 대하여 완전종속해야한다.
- 키가아닌 모든 속성은 부분적으로 들어가지 않은 모든 키에 대하여 완전종속해야한다.
- 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할수 없다.
- 완전함수적 종속
- ex) 학번과 과목명이 같다면 항상 같은 성적이온다. 따라서 성적은 학번과 과목명에 의해서만 결정되므로 기본키에 완전함수종속이 되는것이다.
- 부분함수적 종속
- ex) 학년은 과목명에 관계없이 학번이 같으면 항상 같은 학년이 온다. 기본키의 일부에의해서 결정되므로 부분함수종속이된다.
- 정규형외우는 방법
- 다치종속
- A,B,C가 있을때 복합속성(A,C)에 대응하는 B값의 집합이 A에만 종속되고 C의 값에는 무관하면 다치종속이라고한다.
- 조인종속
- 릴레이션R에대한 부분집합 A.B,,,,C가있다고 했을때 R의 자신 프로젝션의 결과가 자신과 동일한경우(5정규형이 되기 위한 과정)
- 어노말리는 데이터의 중복에 의한 관계이다. 데이터의 종속이라는 말과 햇갈리지 말자!
- 시스템카탈로그★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
- 시스템 카탈로그란 시스템 그자체에 관련되어있는 다양한 객체에 관한 정보를 포함하는 시스템데이터베이스이다.
- 카탈로그들이 생성되면 데이터사전(data dictionary)에 저장되므로 좁은 의미로는 카탈로그를 데이터사전이라고도 한다.
- 시스템카탈로그 저장 정보
- 시스템 카탈로그에 저장되는 정보를 메타데이터라고 한다.
- 메타데이터
- 데이터베이스 객체정보 (테이블 , 인덱스 , 뷰등의 구조 및 통계정보)
- 사용자 정보 ( 아이디, 패스워드, 접근권한)
- 테블의 무결성 제약 조건 정보 ( 기본키, 외래키 ,NULL값의 허용여부)
- 카탈로그의 특징
- 카탈로그도 시스템 테이블로 구성되어있어서 일반 이용자도 SQL문을 이용하여 내용을 검색할수있다.
- INSERT,DELETE,UPDATAE 문으로 카탈라고 갱신하는거슨 허용되지 않는다.
- 카탈로그는 DBMS가 알아서 생성하고 유지한다.
- 분산시스템에서의 카탈로그는 위치투명성 및 중복 투명성을 제공하기위해 모든 제어정보를 가져야한다.
- 시스템 카탈로그 내에서의 모듈 시스템
- DDL(데이터 정의어 번역기)
- DDL을 메타데이터를 갖는 테이블로 변환하여 데이터 사전에 저장한다.
- DML(데이터 조작어 번역기)
- 응용프로그램에 삽입된 DML문을 주 언어로 표현한 프로시저 호출로 변환하여 질의 처리기와 상호통신한다.
- DATA directory
- 데이터 사전에 수록된 데이터를 실제 접근하는 데 필요한 정보를 관리 유지하는 시스템이다.
- 질의 최적화기
- 질의 최적화기
- 사용자의 요구를 효율적인 형태로 변환하고 질의를 처리하는 좋은 전략
- 트랜잭션처리기
- 평행으로 일어나는 문제를 해결하여 각각의 사용자가 데이터베이스 자원을 베타적으로 이용할수록한다.
- 데이터 dictionary 와 데이터 directory를 잘구분해야한다.
- 시스템카탈로그를 데이터 dictionary라고 하는것이고 데이터 directory는 그안에 존재하는 것이다.
- dictionary는 mapping만 하는 것이고 directory가 직접 접근하는 것이다.
- 데이터베이스의 속성명은 약어를 사용하고 서술형은 사용하지마라
- 무결성의 규정에는 규정이름 , 검사시기, 제약조건등을 명시해야한다.
- 인덱스 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
- 데이터 레코드를 빠르게 접근하기위하여 <키 값 포인터>쌍으로 구성되는 데이터 구조이다.
- 인덱스는 데이터가 저장된 물리적 구조와 밀접하게 관련이 있다.
- 인덱스는 물리적 구조에 접근하는 방법을 제공한다.
- 인덱스는 레코드의 삽입과 삭제가 빈번이 일어나는경우에는 최소화 시키는것이 좋다.
- 인덱스가 없다면 데이터를 찾기위해 테이블 전체를 확인하는 TABLE SCAN이 일어난다.
- 기본키를 위한 인덱스를 기본 인덱스라고 하고 기본 인덱스가 아닌것들을 보조 인덱스라고 한다.
- 레코드의 물리적 순서가 엔트리 순서와 일치하는 경우를 클러스터드 인덱스라고 한다.
- 클러스터드 인덱스
- 인덱스의 키의 순서에 따라 데이터가 정렬되어있는 방식이다.
- 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을수 있다
- 데이터 삽입 , 삭제 발생시 순서를 유지하기 위해 재정렬해야한다.
- 한개의 릴레이션에 하나의 인덱스만 생성할 수 있다.
- 넌클러스터드 인덱스
- 인덱스의 키값만 정렬되어 있을 뿐인지 실제 데이터는 정렬되지 않는 방식이다.
- 인덱스를 먼저 검사한뒤에 데이터의 위치를 확인해야 하므로 클러스터드 인덱스보다 검색속도가 떨어진다.
- 한개의 릴레이션에 여러개의 인덱스를 만들 수 있다.
- 트리기반 인덱스
- 인덱를 저장하는 블록들이 트리형태를 이루고 있는것으로 주로 B+트리를 이용한다.
- B트리 인덱스
- 루트노드에서 하위 노드로 키값의 크기를 비교해 나가면서 단말 노드에서 찾고자하는 데이터를 검색한다.
- 키 값과 레코드를 가리키는 포인터들이 트리 노드에 오름차순으로 저장된다.
- 모든 리프노드는 같은 레벨에 있다.
- B+트리 인덱스
- B트리 인덱스의 변형으로 단말 노드가 아닌 노드로 구성된 인덱스 세트 , 단말노드로만 구성된 순차세트로 구분된다.
- 인덱스 세트 - 이곳에 있는 노드들은 단말노드에 있는 키값을 찾아갈수있는 경로로만 제공된다.
- 순차세트 - 이곳에 잇는 단말노드가 해당 데이터 레코드의 주소를 가리킨다.
- 인덱스 세트에 있는 모든 키값이 단말노드에 다시 나타나기 때문에 단말노드만을 이용한 순차처리가 가능하다.
- 비트맵 인덱스
- 인덱스 컬럼의 데이터를 비트값 0,1로 변환하여 인덱스 키로 사용하는 방법이다.
- 이 인덱스의 모적은 키값을 포함하는 ROW의 주소를 제공하는 것이다.
- 비트맵 인덱스는 분포도가 좋은 컬럼에 적합하다
- 분포도란?
- 전체 레코드 중 조건에 맞는 레코드의 숫자가 적은 경우가 분포도가 적다고한다.
- 데이터가 Bit로 구성되어 있기 때문에 효율적인 논리연산이 가능
- 다중조건을 만족하는 튜플개수 연산에 적합하다.
- 동일한 값이 반복되기때문에 압축효과가 좋다.
- 함수 기반 인덱스
- 컬럼의 값 대신에 컬럼에 특정 함수나 수식을 적용하여 산출하는 것으로 B+트리 인덱스 또는 비트맵 인덱스를 생성하여 사용한다.
- 데이터를 입력하거나 수정할때 함수나 수식을 이용해야하기 때문에 부하가 일어날수있다.
- 사용된 함수가 시스템함수가 아닌 사용자 정의 함수일 경우에 부하가 크다.
- 대소문자 , 띄어쓰기 등에 상관없이 조회할때 유용하다.
- 비트맵 조인 인덱스
- 다수의 조인된 객체로 구성된 인덱스로 단일 객체로 구성된 인덱스와 접근 방법이 다르
- 비트맵 조인 인덱스는 비트맵 인덱스와 물리적 구조가 동일하다.
- 도메인 인덱스
- 도메인 인덱스는 개발자가 필요한 인덱스를 직접 만들어 사용하는 것으로 확장형 인덱스라고도 한다.
- 개발자가 필요에 의해 만들었지만 프로그램이 제공하는 인덱스처럼 사용할수 있다.
- 인덱스의 설계방법
- 분명하게 드러난 칼럼에 대해 기본적으로 인덱스를 먼저 지정한 후 개발단계에서 필요한 인덱스의 설계를 반복
- 대상테이블이나 컬럼선정 -> 인덱스 최적화를 수행 ->인덱스 정의서 작성
- 인덱스 테이블 선정 기준
- MUTI BLOCK READ수에 따라 판단
- MUTI BLOCK READ가 16일때 테이블 크기가 16이상이면 인덱스가 필요하다.
- 랜덤 엑세스가 빈번한 테이블
- 특정 범위나 특정 순서로 데이터 조회가 필요한 테이블
- 다른 테이블과 순차적 조인이 발생되는 테이블
- 인덱스 컬럼 선정 기준
- 인덱스 컬럼의 분포도가 10% ~15%이내인 컬럼
- 입출력 장표에서 조회 및 출력 조건으로 사용되는 컬럼
- 인덱스가 자동 생성되는 기본키와 unique키 제약 조건을 사용한 컬럼
- 가능한 수정이 빈번하지 않은 컬럼
- ODERBY, GROUP BY , UNION이 빈번한 컬럼
- 분포도가 좁은 컬럼은 단독 인덱스로 생성
- 인덱스 설계시 고려사항
- 새로 추가되는 인덱스는 기존 엑세스 경로에 영향을 미칠수 있다.
- 인덱스를 지나치게 많이 만들면 오버헤드가 발생한다.
- 인덱스를 만들면 추가적인 저장공간이 필요하다.
- 인덱스 테이블 데이터의 저장공간이 분리되도록 설계한다.
- 뷰
- 뷰 정의가 시스템 내부에 저장 되었다가 질의어가 실행될때 뷰에 정의된 기본 테이블로 대체되어 실행된다.
- 논리적 독립성
- 관리용의 명령문간단
- 안전하다
- ★★★★★★★★★★기본키를 포함한 속성의 집합으로 뷰를 구성해야만 삽입, 삭제 갱신이 가능하다.
- ★★★★★★★★★★뷰가 정의된 기본테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른뷰도 삭제됨
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신연산에 제약이 따른다.
- 뷰 설계시 고려사항
- 테이블 구조가 단순화 될 수 있도록 반복적으로 조인을 설정하여 사용하거나 동일한 조건절을 사용하는 테이블을 뷰로 생성한다.
- 클러스터
- 데이터 저장시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 방법이다.
- 클러스터는 데이터의 분포도가 넓을수록 유리하다
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장공간을 절약할 수 있다.
- 클러스터링된 테이블은 클러스터링 키 열을 공유하므로 저장공간이 줄어든다.
- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링 하지 않는것이 좋다.
- 처리범위가 넓은 경우에는 단일테이블 클러스터링, 조인이 많이 발생하는 경우에는 다중클러스터링을 하는것이 좋다.
- 동일한 데이터가 많기때문에 디스크 I/O가 줄어든다.
- 클러스터 대상테이블
- 분포도가 넓은 테이블
- 대량의 범위를 자주 조회하는 테이블
- 입력 수정 삭제가 자주발생하지 않음
- 자주조인되어사용되는 테이블
- Oderby group by, union이 빈번한 테이블
- 파티셔닝된 테이블에는 클러스터링을 할수 없다.
- 인덱스와 클러스터링의 차이점을 잘 알고 있자
- 인덱스는 분포도가 좁은 테이블에서 사용되는것이 좋고 클러스터링은 분포도가 넓은 테이블에서 사용되는 것이 좋다.
- 인덱스와 클러스터링의 공통점
- Oderby group by, union이 빈번한 테이블에 사용되면 좋다.
- 파티션
- 대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것이다.
- 성능저하 방지 , 데이터관리 용이
- 파티션키 혹은 인덱스키에 다라 물리적으로 별도에 공간에 저장된다.
- ★★★★★★★★★★데이터 처리는 테이블 단위 데이터 저장은 파티션단위
- 파티션의 종류
- 범위 분할
- 해시 분할
- 해시함수 결과값에 따라 데이터를 분할
- 고르게 분산될때 유용하다
- 조합 분할
- 범위 분할로 분할 한 다음 해시함수를 적용하여 다시 분할하는 방식이다.
- 파티션키 선정시 고려사항
- 파티션키는 테이블 접근 유형에 따라 파티셔닝이 이루어지도록 선정한다.
- 이력성 제이터는 파티션 생성주기와 소멸주기를 일치시켜야한다.
- I/O병목을 줄일수 있으며 데이터분포가 양호한 컬럼을 파티션키로 선정해야한다.
- 인덱스 파티션
- 파티션된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것이다.
- Local partitioned index
- 테이블 파티션과 인덱스 파티션이 1대1대응이 되어야한다.
- Global partitioned index
- 테이블 파티션과 인텍스 파티션이 독립적으로 구성되도록 파티셔닝한다.
- 로컬파티션이 글로벌 파티션보다 데이터를 관리하기가 쉽다.
- prefixed partitioned index
- Non prefixed partitioned index
- 인덱스 파티션키와 인덱스 첫번째 컬럼이 다르다.
- 분산데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러개의 컴퓨터 사이트에 분산되어잇는 데이터베이스
- 분산 데이터베이스 구성요소
- 분산 처리기
- 자체적인 처리능력을 가지며 분산되어 있는 컴퓨터시스템을 말한다.
- 분산 데이터베이스
- 지리적으로 분산되어있는 데이터베이스로서 지역의 특성에 맞게 DB가 구성된다.
- 통신 네트워크
- 분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할수있도록한다.
- 분산 데이터베이스 고려사항
- 작업부하의 노드별 분산 정책
- 지역의 자치성 보장 정책
- 데이터 일관성 정책
- 고장으로부터 회복 가능
- 통신네트워크를 통한 원격 접근 가능
- 분산 데이터베이스의 목표
- 위치투명성
- 장애투명성
- 장애에도 불구하고 트랜잭션 정확하게 처리한다.
- 병행투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 그결과는 영향을 받지 않는다.
- 중복투명성
- 데이터가 중복되더라도 마치 하나의 데이터만 존재하는 것처럼 사용한다.
- 분산 데이터베이스의 단점
- DBMS기능이 복잡
- 데이터베이스 설계가 어렵다.
- 개발비용의 증가
- 처리비용증가
- 잠재적인 오류증가
- 분산데이터베이스의 설계
- 테이블위치 분산
- 테이블을 각기 다른 서버에 분산시켜 배치, 테이블의 구조를 변경하지 않고 중복되지 않게 배치
- 분할
- 데이터를 분할하여서 분산 시키는 것이다.
- 수평분할
- 수직분할
- 할당
- 비중복할당
- 최적의 노드를 선택, 단일노드에서만 분할이 존재
- 배타적으로 분리하기가 힘든경우가 있기때문에 성능이 저하 될수있다.
- 중복할당
- 동일한 테이블을 완전히 다른 서버에 복제하는 방식으로 부분복제와 완전복제가 있다.
- ★★★★★★★★★★데이터베이스 보안-접근통제
- 데이터가 저장된 객체와 주체 사이의 정보흐름을 제한하는 것이다.
- 데이터의 불법적인 접근
- 비인가된 사용자의 접근 감시
- 접근 요구자의 사용자 식별
- 접근 요구의 정당성 확인 및 기록
- 보안 정책에 근거한 접근의 승인 및 거부
- DAC(임의 접근 통제) directory access control
- 신원에 따라 접근권한을 부여하는 것이다.
- 통제권한 - 주체
- 일반적으로는 특정 개체에 대한 접근권한은 관리시스템에게 부여받지만 임의 접근통제는 객체를 생성한 사용자가 모든 권한을 부여받는다.
- SQL문으로는 GRANT REVOKE
- MAC(강제 접근 통제) mandatory access control
- 주체와 객체의 등급을 비교하여서 접근권한을 부여한다.
- 제 3자가 접근 통제 권한을 지정한다.
- 객체별로 보안등급을 부여 , 사용자별로 인가등급을 부여
- if 주체 <객체 : 읽기, 수정, 등록 전부다 불가
- if 보안등급 =보안등급 : 읽기 수정 등록 가능
- If 보안등급 < 보안등급 : 읽기만 가능
- 접근통제의 3요소
- 접근통제 정책
- 6하원칙에 의하여 허용여부를 정의하는 것이다.
- 신분기반 정책
- 주체나 그룹의 신분에 근거하여 접근을 제한하는 것이다.
- IBP
- 최소권한정책으로 단일 주체에게 하나의 객체에대한 허가를 부여한다.
- GBP
- 복수주체에 하나의 객체에 대한 허가를 부여한다.
- 규칙기반정책
- 주체가 갖는 권한에 근거하여 객체의 접근을 제한한다.
- MLP
- 사용자 및 객체별로 지정된 기밀분류에 따른 정책
- CBP
- 역할기반 정책
- GBP
- 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한
- 접근통제 매커니즘
- 접근통제를 구현하는 기술적인 방법
- 접근통제목록 : 특정개체에 대해 어떤 주체가 어떤 행위를 할 수 있는가
- 능력리스트 : 주체를 기준으로 주체에게 허가된 자원 및 권한을 기록
- 보안등급 : 주체나 객체에게 부여된 보안속성의 집합으로 등급을 기반으로 접근승인여부결정
- 패스워드 : 주체가 자신임을 인증하는 방법
- 암호화: 데이터를 보낼때 알수없도록 평문을 암호문으로 변환하는것
- 접근통제 보안모델
- 보안정책을 구현하기위한 정형화된 모델
- 기밀성 모델
- 기밀성보안이 최우선된 모델
- 단순보안규칙
- 스타-보안규칙
- 주체는 자신보다 낮은 객체에 정보를 쓸수없다.
- 강한 스타-보안규칙
- 주체는 자신과 등급이 다른 객체를 읽거나 쓸수없다.
- 무결성 모델
- 불법적인 정보변경을 방지하기위해 무결성을 기반으로 개발된 모델
- 데이터의 일관성 유지에 중점
- 단순 무결성 규칙
- 스타 무결성 규칙
- 주체는 자신보다 높은 등급의 객체에 정보를 쓸수 없다.
- 접근통제모델
- 접근통제 메커니즘을 보안모델로 발전시킨것이다.
- 접근통제행렬
- 행 : 주체로서 객체에 접근을 시도하는 사용자
- 열 : 객체로서 접근 통제가 이뤄지는 테이블 등과같은 개체이다.
- 규칙: 주체가 객체에 대하여 수행하는 입력 , 수정 삭제등의 데이터베이스에 대한 조작이다
- 접근통제 조건
- 갑 종속 통제
- 접근통제를 동일하게 허용해야하지만 객체에 저장된 값에 따라 다르게 접근통제를 해야한다.
- 다중 사용자 통제
- 지정된 객체에 다수의 사용자가 동시에 접근을 요구하는 경우
- 컨텍스트기반 통제
- 감사추적
- 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록하는 기능이다
- 논리데이터모델 - >물리데이터모델
- 로우
- 컬럼
- 테이블
- 엔티티를 테이블로 변환
- 타입에의한 테이블 변환
- 슈퍼타입기준 테이블변환
- 서브타입기준 테이블변환
- 개별타입기준 테이블 변환
- 속성을 컬럼으로 변환
- Primary UID를 기본키로 변환
- Primary UID(관계의 UID Bar)를 기본키로 변환
- Secondary UID를 유니크키로 변환
- 관계를 외래키로 변환
- 관리목적의 테이블/컬럼추가
- 데이터타입선택