2014년 6월 13일 금요일

정보처리기사 필기 2006년 5월 A형 데이터 베이스

<관계 데이터베이스의 Relation 구조>

학번
이름
학년
학과
20141
전교생1
4
무엇할과
20142
전교생2
4
무엇할과

• 
릴레이션 (relation) 
같은 성격의 데이터들의 집합을 의미. 흔히 테이블이라고 말하는 용어와 같은 의미로 이론적인 용어. 
릴레이션은 튜플과 에트리뷰트로 데이터를 정렬하여 관리한다. 
• 튜플 (tuple) (노란색)
릴레이션의 각 행을 의미. 흔히 일반적인 용어로 레코드(record)와 로우(row)와 같은 의미로 사용된다. 
• 에트리뷰트(attribute) (빨간색)
릴레이션에서 이름을 가진 하나의 열을 말한다. 흔히 일반적인 용어로 칼럼(column)과 같은 의미로 사용된다. 
• 디그리(degree)
에트리뷰트의 수를 말한다. 
• 카디널러티(cardinality)
튜플들의 수를 말한다. 
• 릴레이션의 특징 
- 한 릴레이션에 정의된 튜플들은 모두 다르다.
- 한 릴레이션에 정의된 튜플들은 순서에 무관하다.
- 튜플들은 시간에 따라 변한다.
- 릴레이션 스키마를 구성하는 에트리뷰트의 값은 동일해도 된다.
- 에트리뷰트는 더 이상 쪼갤 수 없는 원자값으로 구성된다.
- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위한 속성들의 부분집합을 키(Key)로 설정한다. 

<수식의 표기법>

• 전위 표기법(Prefix) : 연산자 → Left → Right, +AB
• 중위 표기법(Infix) : Left → 연산자 → Right, A+B
• 후위 표기법(Postfix) : Left → Right → 연산자, AB+
예시:
(A*B) + (C*D) <- 애는 중위 표기법임

중위를 전위로 바꾸고 싶다면
1. 연산 우선순위에 따라 괄호로 묶고 본다.
( ( (A*B) ) + ( (C*D) ) )
2. 전위로 바꾸고 싶으니깐 연산자를 괄호의 왼쪽으로 이동한다.
( (* (AB) ) + (* (CD) ) )
2. 당황하지 말고 괄호와 연산자를 잘 보면서 이동한다.
 + ( (* (AB) ) (* (CD) ) )
3. 괄호를 없앤다.
 +*AB*CD

중위를 후위로 바꾸고 싶다면
1. 연산 우선순위에 따라 괄호로 묶고 본다.
( ( (A*B) ) + ( (C*D) ) )
2. 후위로 바꾸고 싶으니깐 연산자를 괄호의 오른쪽으로 이동한다.
( ( (AB) *) + ( (CD) *) )
2. 당황하지 말고 괄호와 연산자를 잘 보면서 이동한다.
( ( (AB) *) ( (CD) *) ) +
3. 괄호를 없앤다.
AB*CD*+

예시:
AB*CD*+ <- 애는 후위 표기법임
후위를 중위로 바꾸고 싶다면
1. 우선 계산을 하려면 변수가 2개가 있어야 한다.(A,B 같은)
    변수 2개 찾고 연산자를 찾는다.
    그리고 괄호로 묶고 본다.
( (AB *) (CD *) +)
2. 중위로 바꾸고 싶으니깐 오른쪽에 있는 연산자를 변수들 사이로 집어넣는다.
( (A*B) (C*D) +)
2. 당황하지 말고 괄호와 연산자를 잘 보면서 이동한다.
( (A*B) + (C*D) )
3. 괄호를 없앤다가 쉽지 않다.
    머리를 굴려서 우선 순위 연산자와 변수의 관계를 생각해서 괄호를 없앤다.
(A*B) + (C*D)

<정보 시스템>

• 자료(Data) 
현실 세계에서 관찰이나 측정을 통해 수집한 단순한 사실이나 결과값으로, 가공되지 않은 상태
• 정보(Information)
의사 결정에 도움을 줄 수 있는 유용한 형태로, 자료를 가공(처리)해서 얻는 결과물

<SQL의 분류>

• DDL(데이터 정의어)
1. SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어이다.
2. 데이터베이스 관리자나 데이터베이스 설계자가 사용한다.
3. 데이터 정의어(DDL)의 3가지 유형
- CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함
- ALTER TABLE에 대한 정의를 변경하는 데 사용함
- DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제함
• DML(데이터 조작어)
1. 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용하는 언어이다.
2. 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공한다.
3. 데이터 조작어(DML)의 4가지 유형
- SELECT 테이블에서 조건에 맞는 튜플을 검색함
- INSERT 테이블에 새로운 튜플을 삽입함
- DELETE 테이블에서 조건에 맞는 튜플을 삭제함
- UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경함
• DCL(데이터 제어어)
1. 데이터의 보안, 무결성, 데이터 회복, 병행수행 제어등을 정의하는 데 사용하는 언어이다.
2. 데이터베이스 관리자가 데이터 관리를 목적으로 사용한다.
3. 데이터 제어어(DCL)의 종류
- COMMIT
명령에 의해 수행된 결과를 실제 물리적 디스크로 저
장하고, 데이터베이스 조작 작업이 정상적으로 완료
되었음을 관리자에게 알려줌
- ROLLBACK
데이터베이스 조작 작업이 비정상적으로 종료되었을
때 원래의 상태로 복구함
- GRANT 
데이터베이스 사용자에게 사용 권한을 부여함
- REVOKE 
데이터베이스 사용자의 사용 권한을 취소함

<관계 해석>

• 코드(E. F. Codd)가 수학의 Predicate Calculus(술어 해
석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
• 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
• 원하는 정보를 정의할 때는 계산 수식을 사용한다.
• 튜플 관계해석과 도메인 관계해석이 있다.
• 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력 면에서 동등하다.
• 질의어로 표현한다.

<트랜잭션의 정의>

• 데이터베이스의 상태를 변화시키기 위하여 논리적인 기능을 수행하는 하나의 작업 단위이다.
• 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위이다.
• 하나의 트랜잭션은 Commit되거나 Rollback된다.
• 트랜잭션은 일반적으로 회복의 단위가 된다.

<트랜잭션의 특성>

- Atomicity (원자성)
• 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함
• 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 에러가 발생하면 트랜잭션 전부가 취소되어야 함
- Consistency (일관성)
• 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
• 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함
- Isolation (독립성, 격리성)
• 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음
• 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음
- Durability (영속성, 지속성)
성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함

<보안>

데이터베이스 보안의 개요
• 데이터베이스의 일부분 또는 전체에 대해서 권한이 없는 사용자가 액세스를 수행하는 것을 금지하기 위해 사용되는 기술이다.
• 데이터베이스 사용자들은 일반적으로 서로 다른 객체에 대하여 다른 접근권리 또는 권한을 갖게된다.

무결성(Integrity)과 보안(Security)
• 무결성은 권한이 있는 사용자로부터 데이터베이스를 보호하는 것이고, 보안은 권한이 없는 사용자로부터 데이터베이스를 보호하는 것을 말한다.
• 보안은 데이터베이스 사용자들이 데이터베이스를 사용하고자 할 때 언제든지 사용할 수 있도록 보장하는 것이고, 무결성은 정확하게 사용할 수 있도록 보장하는 것을 말한다.

암호화 기법
• 개인키 암호 방식(Private Key Encryption) = 비밀키 암호 방식
- 동일한 키로 데이터를 암호화하고 복호화한다.
- 비밀키는 제3자에게는 노출시키지 않고, 데이터베이스 사용 권한이 있는 사용자만 나누어 가진다.
- 대칭 암호 방식 또는 단일키 암호화 기법이라고도 한다.
- 대표적으로 DES(Data Encryption Standard)가 있다.
- 장점 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순하고 파일 크기가 작음
- 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아짐
- DES는 56Bit의 16개 키를 이용하여 64Bit의 평문 블록을 16회의 암호 계산 단계를 거쳐 64Bit의 암호문을 얻는다.
• 공개키 암호 방식(Public Key Encryption)
- 서로 다른 키로 데이터를 암호화하고 복호화한다.
- 데이터를 암호화할 때 사용하는 키(공개키, PublicKey)는 데이터베이스 사용자에게 공개하고, 복호화할 때의 키(비밀키, Secret Key)는 관리자가 비밀리에 관리하는 방법이다.
- 비대칭 암호 방식이라고도 하며, 대표적으로 RSA(Rivest Shamir Adleman)가 있다.
- 장점 : 키의 분배가 용이하고, 관리해야 할 키의 개수가 적음
- 단점 : 암호화/복호화 속도가 느리며, 알고리즘이 복잡하고 파일 크기가 큼

<자료 구조의 분류>

• 선형 구조 : 선형 리스트(배열), 연결 리스트, 스택, 큐, 데크
• 비선형 구조 : 트리, 그래프

<트리(Tree)>

• 데이터를 저장하는 노드(Node)들이 계층적으로 연결되어 있는 자료 구조(Data Structure)의 하나. 가장 위쪽에 있는 노드를 뿌리(Root) 또는 뿌리 노드(Root Node)라고 한다. 뿌리(Root)는 에지(Edge)로 연결된 자식 노드(Child Node)를 가질 수 있는데, 이때에 뿌리(Root)는 자식 노드의 부모 노드(Parent Node)가 된다. 자식 노드는 또 자신의 자식 노드를 가질 수 있다. 부모가 같은 노드를 형제 노드(Sibling Node, Brother Node)라고 한다. 트리(Tree) 안의 각 노드(부모 노드를 갖고 있지 않은 뿌리 노드는 제외)에는 꼭 하나의 부모 노드가 있다. 그래서 트리(Tree) 안의 모든 노드는 뿌리 노드의 자손이 된다. 이와 같은 노드 간의 관계 때문에 뿌리 노드에서 트리(Tree) 안의 다른 어떤 노드로 가는 경로는 단 하나밖에 없다. 트리(Tree)는 트리 구조와 같은 의미를 갖는다. 트리 구조는 디스크상의 파일 시스템 관리, 데이터베이스 관리 등 여러 분야에서 널리 사용되는 자료 구조이다.
• 노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것
 A, B, C, D, E, F, G, H, I, J, K, L, M
• 근 노드(Root Node) : 트리의 맨 위에 있는 노드  A
• 디그리(Degree, 차수) : 각 노드에서 뻗어나온 가지의 수
 A = 3, B = 2, C = 1, D = 3
• 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수
 노드 A나 D가 3개의 디그리를 가지므로 위 트리의 디그리는 3이다.
• 단말 노드(Terminal Node) = 잎 노드(Leaf Node) : 자식이 하나도 없는 노드, 즉 디그리가 0인 노드
 K, L, F, G, M, I, J
• 비단말 노드(Non-Terminal Node) : 자식이 하나라도 있는 노드, 즉 디그리가 0이 아닌 노드
 A, B, C, D, E, H
• 자식 노드(Son Node, Children Node) : 어떤 노드에 연결된 다음 레벨의 노드들
 D의 자식 노드 : H, I, J
• 부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드
 E, F의 부모 노드는 B
• 형제 노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들
 H의 형제 노드는 I, J
• Level : 근 노드의 Level을 1로 가정한 후 어떤 Level이 L이면 자식 노드는 L+1이다.
 H의 레벨은 3
• 깊이(Depth, Height) : 어떤 Tree에서 노드가 가질 수 있는 최대의 레벨

 위 트리의 깊이는 4

<데이터베이스 설계>

개념적 설계(정보 모델링, 개념화)
• 정보의 구조를 얻기 위하여 현실 세계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위하여 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다.
• 스키마 모델링과 트랜잭션 모델링을 병행하여 수행한다.
• 요구 분석 단계에서 나온 결과(요구 조건 명세)를 DBMS에 독립적인 E-R 다이어그램(개체 관계도)으로 작성한다.
• DBMS에 독립적인 개념 스키마를 설계한다.

논리적 설계(데이터 모델링)
• 현실 세계에서 발생하는 자료를 컴퓨터가 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정이다.
• 개념 세계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화한다.
• 개념적 설계가 개념 스키마를 설계하는 단계라면 논리적 설계에서는 개념 스키마를 평가 및 정제하고 특정 DBMS에 종속적인 논리적 스키마를 설계하는 단계이다.
• 트랜잭션의 인터페이스를 설계한다.
• 관계형 데이터베이스라면 테이블을 설계하는 단계이다.

물리적 설계(데이터 구조화)
• 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.
• 데이터베이스 파일의 저장 구조, 레코드의 형식, 접근경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사한다.
• 트랜잭션을 작성한다.
• 물리적 설계 단계에 꼭 포함되어야 할 것은 저장 레코드의 양식 설계, 레코드 집중의 분석 및 설계, 접근 경로 등이다.
• 물리적 설계 시 고려사항
- 인덱스의 구조
- 레코드의 크기 및 개수
- 파일에 대한 트랜잭션의 갱신과 참조 성향
- 성능 향상을 위한 개념 스키마의 변경 여부 검토
- 빈번한 질의와 트랜잭션들의 수행속도를 높이기 위한 고려
- 시스템 운용 시 파일 크기의 변화 가능성
• 물리적 설계 옵션 선택 시 고려 사항
- 반응시간(Response Time) : 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때까지의 경과시간
- 공간 활용도(Space Utilization) : 데이터베이스 파일과 액세스 경로 구조에 의해 사용되는 저장공간의 양
- 트랜잭션 처리량(Transaction Throughput) : 단위시간 동안 데이터베이스 시스템에 의해 처리될 수 있는 트랜잭션의 평균 개수

<데이터베이스의 특징>

• 실시간 접근성(Real Time Accessibility) : 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리(Real-TimeProcessing)에 의한 응답이 가능함
• 계속적인 변화(Continuous Evolution) : 새로운 데이터의삽입(Insertion), 삭제(Deletion), 갱신(Update)으로 항상 최신의 데이터를 유지함
• 동시 공유(동시 공용)(Concurrent Sharing) : 여러 사용자가 동시에 자기가 원하는 데이터를 이용할 수 있음
• 내용에 의한 참조(Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 데이터 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 데이터를 찾음

<릴레이션의 특징>

• 한 릴레이션에 포함된 튜플들은 모두 상이하다.
• 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.
• 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
• 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다.
• 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있다.
• 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정한다.
• 속성은 더 이상 쪼갤 수 없는 원자값만을 저장한다.

<정규화 과정>

• 정규화 단계 암기 요령
정규화라는 출소자가 말했다.
두부이겨다줘≒도부이결다조
메인이 원자값
분적 함수 종속 제거
행적 함수 종속 제거
정자이면서 후보키가 아닌 것 제거
치 종속 제거
인 종속성 이용

댓글 없음:

댓글 쓰기

대항해시대 조선 랭작

숙련도 획득 방법 선박 건조, 선박 강화, 전용함 추가시 숙련도 획득 모두 동일한 공식 적용 획득 숙련도 공식 기본 획득 숙련도 ≒ int{건조일수 × 현재랭크 × (0.525)} 이벤트 & 아이템 사용...