정보처리기사 필기 2022년 04월 24일 기출(3과목 : 데이터베이스 구축)
#정규화 : 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정
- 제 1정규형, 제 2정규형, 제 3정규형, BCNF형, 제 4형 정규형, 제 5정규형이 있다.
제 1정규형 | 릴레이션에 속한 모든 도메인이 원자값(1개)만으로 되어있는 정규형 |
제 2정규형 | 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형 |
제 3정규현 | 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형 |
BCNF형 | 릴레이션에서 결정자가 모두 후보키인 정규형(Boyce-Codd) |
제 4정규형 | 릴레이션 R에 다치 종속 A->B 가 성립하는 경우 R의 모든 속성이 A의 함수적 종속관계를 만족하는 정수형 |
제 5정규형 | 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형 |
# 트랜잭션
: 데이터 베이스 관리 시스템 또는 유사한 시스템에서 하나의 논리적 기능을 수행하기 위한 기본단위.
- Atomicity(원자성) : 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야함
- Consistency(일관성) : 시스멭의 고정 요소는 트랜잭션 수행 전후 같아야함
- Isolation(고립성) : 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야함
- Durability(지속성) : 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억됨.
> 로킹기법 : 하나의 트랜잭션이 액세스 하는 동안, 다른 트랜잭션이 그 항목을 액세스 할수 없도록함
> 교착상태 : 여러개의 트랜잭션들이 실행을 하지 못하고 서로 무한정 기다리는 상태
# 분산 데이터베이스 : 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 여러개의 컴퓨터 사이트(site)에 분산되어 있는 데이터베이스, 처리나 이용이 많은 지역에 위치함으로써 해당 지역에서 해결될수 있도록 함.
- 분산 처리기 : 자체적으로 처리능력을 가짐. 지리적으로 분산
- 분산 데이터베이스 : 지리적으로 분산되어 있는 데이터베이스
- 통신 네트워크 : 분산 처리기를 통신망으로 연결. 논리적으로 하나의 시스템처럼 동작할수 있게함.
- 노드별 분산정책, 자치성 보장, 일관성, 회복 기능, 원격 접근 기능
> 위치 투명성 : 액세스 하려는 데이터베이스의 실제 위치를 알필요 없이 논리적인 명칭만으로 액세스
> 중복 투명성 : 동일데이터가 여러곳에 중복되어 있어도 사용자는 마치 하나의 데이터만 존재하는 것으로 사용
> 병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션 결과는 영향을받지 않음. 다중 사용자들이 자원들을 자동으로 공유할 수 있다.
> 장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리
# 분할 : 테이블의 데이터를 분할하여 분산
- Completeness(완전성) : 전체 데이터를 대상으로 분할해야함
- Reconstruction(재구성) : 분할된 데이터는 관계 연산을 통해 본래 데이터로 재구성 할수 있어야함.
- Dis-Jointness(상호 중첩 배제) : 분할된 데이터는 서로 다른 분할의 항목에 속하지 않아야 함.
> 수평분할 : 특정 속성의 값을 Row(행) 단위로 분할
> 수직분할 : 데이터 컬럼(속성) 단위로 분할
# 할당 :
- 동일한 분할을 여러개의서버에 생성하는 분할방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨
- 비중복 할당방식 : 최적의 노드를 선택, 단일노드에서만 분할이 존재. 분할된 테이블간의 의존성은 무시해 비용증가
- 중복 할당 방식 : 동일한 테이블을 다른 서버에 복제하는 방식, 일부만 복제하는 부분복제와 전체를 복제하는 완전복제
# DDL 대상
- Domain(도메인) : 하나의 속성이 가질 수 있는 원자들의 집합
- Schema(스키마) : 데이터베이스의 구조, 제약조건등의 정보를 담고 있는 기본적인 구조(개체,속성,관계)
> 외부스키마 : 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 DB의 논리적 구조
> 내부 스키마 : 실제 DB에 저장될 레코드의 물리적인 구조를 정의하고 저장 데이터 항목의 표현방법
> 개념스키마 : DB의 전체적인 논리적 구조로써 모든 응용프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 DB로 하나만 존재한다.
- Table(테이블) : 설계단계에서의 테이블을 주로 릴레이션이라고 부름. 데이터 저장공간
- View(뷰) : 하나이상의 물리 테이블에서 유도되는 가상의 테이블
- Index(인덱스) : 검색을 빠르게 하기 위한 데이터 구조
> 순서 인덱스 : 데이터가 정렬된 순서로 생성되는 인덱스
> 해시 인덱스 : 해시 함수에 의해 직접 데이터에 키값으로 접근하는 인덱스
> 비트맵 인덱스 : Bit값이 0 또는 1로 변환하여 인덱스키로 사용하는 인덱스
> 함수기반 인덱스 : 수식이나 함수를 적용해서 만든 인덱스
> 단일 인덱스 : 하나의 컬럼으로만 구성한 인덱스
> 결합 인덱스 : 두개이상의 컬럼으로 구성한 인덱스
> 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
> 넌클러스터드 인덱스 : 인덱스의 키값만 정렬되어있고 실제 데이터는 정렬되지 않는 방식.
* 정렬 여부 지정 :
- ASC : 오름차순 정렬 (Default값)
- DESC : 내림차순 정렬
# SQL 정의어(DDL:Data Definition Language) : DB를 구축하거나 수정할 목적으로 사용하는 언어
- CREATE : Schema, Domain, Table, View, Index를 정의함
- ALTAR : Table에 대한 정의를 변경하는데 사용
- DROP : Schema, Domain, Table, View, Index를 삭제함.
# SQL 조작어(DML) : 데이터 베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
- SELECT : 테이블에서 튜플을 검색함
- INSERT : 테이블에서 새로운 튜플을 삽입함
- UPDATE : 테이블에서 튜플의 내용을 업데이트함
- DELETE : 테이블에서 튜플을 삭제함.
> 배열 - 여러개의 데이터들을 모은 집합. 추가와 삭제가 가능
> 튜플 - 여러객체를 모아서 담는다. 튜플 내의 값은 수정이 불가(추가, 삭제 X), 불변특성. 행(LOW)
* 카디널리티(튜플의 갯수) : 값에 대한 수치이므로 계속 변화한다.
# SQL 제어어(DCL) : 데이터의 보안, 무결성, 회복, 병행제어등을 정의하는데 사용하는 언어
- COMMIT : 명령에 의해 수행된 결과를 물리적으로 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌.
- ROLLBACK : 데이터 베이스 조작 작업이 비정상적으로 종료되었을 때, 원상태로 복구
- GRANT : 데이터 베이스 사용자에게 사용권한을 부여함
- REVOKE : 데이터 베이스 사용자의 사용 권한을 취소함.
s# 인덱스 :
- 데이터베이스 성능의 영향을 주는 DBMS의 구성요소.
- 테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유.
- 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위해 별도로 구성한 순서 데이터
# 데이터베이스 설계
- 무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 저장된 데이터가 정해진 조건을 항상 만족해야함
- 일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야함.
- 회복 : 시스템에 장애가 발생했을 때 장애 발생직전의 상태로 복구할 수 있어야함.
- 보안 : 응답시간의 단축, 시스템의 생산성, 저장공간의 최적화 등이 가능해야함.
- 데이터베이스 확장 : 데이터베이스 운영에 영향을주지 않으면서 지속적으로 데이터를 추가할수 있어야함.
# 데이터베이스 설계 순서(★)
1. 요구조건 분석 : 요구조건 명세서 작성
2. 개념적 설계 : 개념스키마, 트랜잭션 모델링, E-R모델
3. 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
4. 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
5. 구현 : 목표 DMBS의 DDL로 스키마로 작성하여 데이터베이스 등록, 트랜잭션 작성.
- DDL (CREATE, ALTER, DROP)
- DML (SELECT, INSERT, DELETE, UPDATE)
- DCL (COMMIT, ROLLBACK, GRANT, REBOKE)
# DD(Data dictionary) 데이터 사전
- 시스템이 자신이 필요로 하는 여러가지 객체(테이블,뷰,인덱스,DB,패키지 등)의 정보를 포함한 시스템 데이터베이스
- 시스템 카탈로그, 메타 데이터 라고도 한다.
- 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL문을 이용하여 내용검색 가능
- 사용자가 시스템 카탈로그를 직접 갱신할수는 없다.
- SQL문으로 여러가지 객체에 변호랄 주면 시스템이 자동으로 갱신한다.
# 릴레이션의 특징
- 튜플 유일성 : 모든 튜플은 서로 다른 값을 찾는다
- 튜플 무순서성 : 하나의 릴레이션에 튜플의 순서는 없다.
- 속성 원자성 : 속성값은 원자값을 갖는다.
- 속성 무순서성 : 각 속성은 릴레이션 내 유일한 이름을 가지며, 순서는 없다.
- View(뷰) : 하나이상의 물리 테이블에서 유도되는 가상의 테이블
# 트랜잭션의 상태
- Active(활동) : 트랜잭션이 실행
- Faile(실패) : 트랜잭션이 실행중에 오류가 발생하여 중단된 상태
- Aborted(철회) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
- Partially Committed(부분 완료) : 트랜잭션의 마지막 연산까지 수행했지만 Commit 연산을 실행하기 전의 상태
- Committed(완료) : 트랜잭션이 성공적으로 완료되어 Commit연산을 수행한 후의 상태
- DDL = 정의 (CREATE, ALTER, DROP)
- DML = 조작 (SELECT, INSERT, DELETE, UPDATE)
- DCL = 제어 (COMMIT, ROLLBACK, GRANT, REVOKE)
# Key의 개념 : 튜플들을 서로 구분할 수 있는 속성(Attribute). 한 Relation에서 튜플들을 식별하기 위한 속성의 집합
- Primary Key(기본키) : 유일성과 최소성을 가지며, 후보키 중에서 특별히 선정된 주키(Main Key)로 중복된 값을 가질수 없다. Null값을 가질수 없다.
- Super Key(슈퍼키) : 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 않음.
- Foreign Key(외래키) : 다른 릴레이션의 기본키를 참조하는 속성
- Candidate Key(후보키) : 유일성과 최소성을 만족시켜야 한다.
- Alternate Key(대체키) : 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키를 의미함
- 개념적 설계 : 개념스키마, 트랜잭션 모델링, E-R모델
- 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
- 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
# Primary Key(기본키) :
- 유일성과 최소성을 가진다.
- 후보키 중에서 특별히 선정된 주키(Main Key), 유일하게 특정 튜플을 구별할수 있는 속성.
- 중복된 값을 가질수 없다.
- Null값을 가질수 없다.
# 데이터모델 : 현실 세계의 정보들을 체계적으로 표현한 개념적 모형
- 데이터 모델링의 구성요소 :
> Entity(개체) : 개념, 독립적으로 존재(유일 식별자), 다른 개체와 하나이상의 관계
> Attribute(속성) : DB를 구성하는 작은 논리적 단위(데이터), 개체의 특성을 기술
> Relationship(관계) : 개체와 개체 사이의 논리적인 연결(개체-속성 관계)
- 논리 데이터 모델의 구성 요소 :
> Structure(구조) : 논리적인 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
> Operation(연산) : 실제 데이터를 처리하는 작업에 대한 명세, 조작하는 기본도구
> Constraint(제약조건) : DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
# Primary Key(기본키) :
- 유일성과 최소성을 가진다.
- 후보키 중에서 특별히 선정된 주키(Main Key), 유일하게 특정 튜플을 구별할수 있는 속성.
- 중복된 값을 가질수 없다.
- Null값을 가질수 없다.
# 무결성 :
- 개체 무결성 : 각 릴레이션의 기본키를 구성하는 속성은 Null값이나 중복된 값을 가질 수 없다.
- 참조 무결성 : 외래키 값은 Null이거나 참조하는 릴레이션의 기본키 값과 동일
- 도메인 무결성 : 속성들의 값은 정의된 도메인에 속한 값
- 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 릴레이션의 속성 값들은 달라야한다.
- Null 무결성 : 릴레이션의 특정 속성 값은 Null이 될수 없다.
- Key 무결성 : 각 릴레이션은 최소한 한개 이상의 키가 존재해야한다.
#튜플 :
- 릴레이션을 구성하는 각 행
- 속성의 모임 = 튜플
- 튜플의 수를 카디널리티
# 속성 :
- 데이터베이스를 구성하는 가장 작은 논리단위
- 개체의 특성을 기술
- 속성의 수를 디그리(차수)라고 함.
# 도메인 :
- 하나의 속성(Attribute)가 취할 수 있는 같은 타입의 원자값들의 집합
# 릴레이션의 특징
- 튜플 유일성 : 모든 튜플은 서로 다른 값을 찾는다
- 튜플 무순서성 : 하나의 릴레이션에 튜플의 순서는 없다.
- 속성 원자성 : 속성값은 원자값을 갖는다.
- 속성 무순서성 : 각 속성은 릴레이션 내 유일한 이름을 가지며, 순서는 없다.