본문 바로가기
자격증/정보처리기사(필기)

[정보처리기사] 3과목 데이터베이스 개발

by 훈영 2023. 5. 11.

1. 데이터 베이스

 

1-1. 데이터 베이스 설계

-  사용자의 요구를 분석하여 그것을 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변경한 후 특정 DBMS로 데이터 베이스를 구현하여 일반 사용자들이 사용하게 하는 것

 

1-2. 데이터베이스 설계 시 고려사항

- 무결성: 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야 함

- 일관성: 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 함

- 회복: 시스템에 장애가 발생했을 때 장애 발생 직전의 상태로 복구할 수 있어야 함

- 효율성: 응답시간의 단축, 시스템의 생산성, 저장 공간의 초적화 등이 가능해야 함

- 데이터베이스 확장: 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 함

 

1-3. 데이터 베이스 설계 순서(중요! 순서와 특징)

(1) 구 조건 분석: 요구 조건 명세서 작성

(2) 념적 설계: 개념 스키마, 트랜잭션 모델링, E-R 모델

(3) 리적 설계: 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계

(4) 리적 설계: 목표 DBMS에 맞는 물리적 구조의 데이터로 변환

(5) 현: 목표 DBMS의 DDL(데이터 정의어)로 데이터 베이스 생성, 트랜잭선 작성

# 요개논물구

 

1-4. 개념적 설계(정보 모델링, 개념화)

- 개념적 설계란 정보의 구조를 얻기 위하여 현실 세계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위하여 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정

 

 

1-5. 논리적 설계(데이터 모델링)

- 논리적 설계란 현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 구조로 변환시키는 과정

 

- 목표 DBMS에 종속적인 논리적 스키마 설계 및 스키마의 평가 및 정제

- 논리적 데이터 모델로 변환 및 트랜잭션 인터페이스 설계

 

1-6. 물리적 설계(데이터 구조화)

- 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정

 

- 목표 DBMS에 종속적인 물리적 구조 설계

- 저장 레코드 양식 설계와 레코드 집중의 분석/설계, 엑세스 경로 인덱싱, 클러스터링, 해싱 등의 설계

 

========================================

2. 논리 데이터 설계

1. 관계 데이터 모델(Relation Data Model)

- 테이블 형태(행과 열) 구성된 데이터 모델이다.

- 수학자 E.F.Codd 박사가 제안한 모델이다.

 

2. 관계 데이터 모델의 구성요소(중요!)

구성요소 설명
릴레이션(Relation) 행(Row)과 열(Column)로 구성된 테이블
튜플(Tuple) 릴레이션의 행(Row)에 해당하는 요소
속성(Attribute) 릴레이션의 열(Column)에 해당하는 요소
카디널리티(Cardinality) 튜플(Row)의 수
차수(Degree) 속성(Column)의 수
스키마(Schema) 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
인스턴스(Instance) 정의된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합

3. 관계 대수와 관계 해석

구분 관계 관계
특징 차적 언어(순서 명시) 절차적 언어, 프레디킷 해석(Predicate Calculus) 기반
목적 어떻게 유도하는가?(How) 무엇을 얻을 것인가?(What)
종류 일반 집합 연산자, 순수 관계 연산자 튜플 관계 해석, 도메인 관계 해석

# 대절해비

 

3-1. 관계 대수

1) 일반 집합 연산자

집합(Union) / ∩ 집합(Intersetion) / - 집합(Difference) / X 티션 프로덕트(CARTESIAN Product)

# 합교차카

 

2) 순수 관계 연산자 

σ 렉트(Select) / π 로젝트(Project) / ⋈ 인(Join) / ÷ 비전(Division)

# 셀프조디

 

3-2. 관계 해석

# 관계 해석 논리 기호

구분 구성요소 기호 설명
연산자 OR 연산 원자식 간 "또는"이라는 관계로 연결
AND 연산 자식 간 "그리고"라는 관계로 연결
NOT 연 원자식에 대해 부정
정량자 전칭 정량자
(Universal Quantifier)
모든 가능한 튜플
("for all"로 읽음, All의 'A'를 뒤집어 놓은 형태)
존재 정량자
(Existential Quantifier)
어떤 튜플 하나라도 존재
("there exists"로 읽음, exist의 'E'를 뒤집어 놓은 형태

 

1. 정규화

1-1. 정규화의 개념

- 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지한다.

- 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정이다.

- 정규화는 데이터베이스 논리적 설계 단계에서 수행한다.

 

1-2. 정규화의 목적

- 중복 데이터를 최소화하여 테이블 불일치 위험을 최소화한다.

- 수정, 삭제 시 이상 현상을 최소화함으로써 데이터 구조의 안정성을 최대화한다.

- 어떠한 릴레이션이라도 데이터베이스내에서 표현이 가능하게 만든다.

- 데이터 삽입 시 릴레이션의 재구성에 대한 필요성을 줄인다

- 효과적인 검색 알고리즘을 생성할 수 있다.

 

1-3. 이상(Abnormaly)의 개념 및 종류

- 정규화를 거치지 않으면 데이터베이스 내의 데이터들이 불필요하게 중복되어 릴레이션 조작 시 이상 현상이 발생하게 된다. 이러한 이상의 종류에는 삽입이상, 삭제이상, 갱신이상이 있다.

 

1) 삽입이상(Insertion Anomaly)

- 데이터 삽입 시 원하지 않은 값들도 함께 삽입됨

ex) 새로운 교수의 경우 아직 맡은 강의가 없어서 새 교수를 테이블에 추가할 수 없음

 

2) 삭제이상(Deletion Anomaly)

- 한 튜플을 삭제할 때 다른 값들도 함께 삭제되는 연쇄 현상

ex) 한 교수가 강의를 중단하고자할 때, 강의를 지우면 교수 자체가 사라지게 됨

 

3) 갱신이상(Update Anomaly)

- 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보의 모순이 생기는 현상

# 삽삭갱

 

1-4. 데이터 베이스 정규화 과정

1) 1NF(제1정규형)

- 릴레이션에 속한 모든 도메인이 원자 값으로만(1개) 되어 있는 정규형

 

- 아래 테이블의 경우, Adam의 Subject가 두 개 이기 때문에 제1정규형을 만족하지 못한다. 따라서 1차 정규형에 만족하기 위해선 아래와 같이 1개의 행을 더 추가해야 한다. 혹은 Subject1, Subject2로 속성을 추가할 수도 있다

 

# 1차 정규화 전

Student Age Subject
Adam 15 Biology, maths
Alex 14 Maths
Stuart 17 Maths

# 1차 정규화 후

Student Age Subject
Adam 15 Biology
Adam 15 maths
Alex 14 Maths
Stuart 17 Maths

 

2) 2NF(제2정규형)

- 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형

- 완전 함수적 종속이란, 특정 속성에 완전히 종속된 속성이 없어져야 한다는 것을 말함

- 기본키가 복합키일 때, 특정 속성이 복합키 전체가 아닌 일부 속성에 의존적인 경우 따로 분리해 새로운 테이블을 만들어야 함

 

- (Student + Student)가 기본키가 될 수 있는데 Age의 경우 Student에 종속되어 있다. 그 이유는 Student 값을 알면, Age 값을 알 수 있기 때문이다. 따라서 2차 정규화를 위해선 아래와 같이 테이블을 분리해야 한다.

 

# 2차 정규화 전

Student Age Subject
Adam 15 Biology
Adam 15 maths
Alex 14 Maths
Stuart 17 Maths

 

# 2차 정규화 후

Student Age
Adam 15
Adam 15
Alex 14
Stuart 17
Student Subject
Adam Biology
Adam maths
Alex Maths
Stuart Maths

 

3) 3NF(제3정규형)

- 기본키가 아닌 모든 속성이 키본키에 대해 이행적 종속을 만족하지 않는 정규형

- 주 식별자가 아닌 속성 중 종속관계가 있는 속성을 제거하는 과정(기본키 외의 속성이 그 외의 속성을 결정할 수 없어야 함)

 

- 아래 테이블의 경우 Student ID가 기본키인데 기본키 외의 속성을 보면 Street, City, State, Zip이 있다. 이 중 Zip을 알면 Street, City, State가 결정되기 때문에 종속관계가 있다고 볼 수 있다.

 

# 3차 정규화 전

Student ID Student Name Street City State Zip
15 Adam        
15 Adam        
14 Alex        
17 Stuart        

- 따라서 아래와 같이 테이블을 분리함으로써 제3차정규형을 만족시킬수 있다. 즉, 기본키를 제외한 속성들 간에 이행적 함수 종속이 없게 되는 것이고 이 뜻은 기본키 외의 다른 속성이 그 외 다른 속성을 결정할 수 없다는 것이다.

 

# 3차 정규화 후

Student ID Student Name Zip
15 Adam  
15 Adam  
14 Alex  
17 Stuart  
Street City State Zip
       
       
       
       

 

4) BCNF(Boyce-Codd 정규형)

- 릴레이션에서 결정자가 모두 후보키인 정규형

- 강한 제3정규형이라고도 함

 

5) 4NF(제4정규형)

- 릴레이션 R에 다치 종속 A -> B가 성립하는 경우 R의 모든 속성이 A의 함수적 종속 관계를 만족하는 정규형이다.

 

6) 5NF(제5정규형)

- 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형이다.

 

7) 정리

비정규 릴레이션  
메인이 원자값으로 구성
1NF(제1정규형)  
분적 함수 종속 제거
2NF(제2정규형)  
행적 함수 종속 제거
3NF(제3정규형)  
정자이면서 후보키가 아닌 함수 종속 제거
BCNF(Boyce-Codd 정규형)  
치(다중 값) 종속 제거
4NF(제4정규형)  
인 종속성 제거
5NF(제5정규형)  

# 도부이결다조

 

4. E-R 모델

- 논리 데이터 모델링의 목적은 어떤 개체가 어떤 관계를 가지고 접근하는지 인식하는 것이다. 시스템 설계의 전체 과정을 지원할 수 있는 도구라고 볼 수 있다. 이 논리 모델링 기법 중 가장 대중적인 것은 E-R 다이어 그램이다.

 

1. E-R 다이어그램의 특징

- 개체와 속성, 관계를 그림을 설명

- 1:1, 1:N, N:M 등의 관계 유형을 제한없이 나타낼 수 있다.

- 여러 형태의 관계들 확인 가능

 

2. E-R 다이어그램 표기법(기호)

기호 기호 이름 의미
사각형 개체(Entity)
마름모 관계(Relationship)
O 타원 속성(Attribute)
선, 링크 개체-속성, 개체-개체의 연결
2중 타원 다중 값 속성

 

5. 키(Key)

5-1. 키(Key)의 개념

- 데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

종류 내용
후보키
(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합,
즉 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함
기본키
(Primary Key)
- 후보키 중에서 특별히 선정된 주 키(Main Key)
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 규별할 수 있는 속성
- 기본키는 NULL 값을 가질 수 없음
대체키
(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미함
- 보조키라고도 함
슈퍼키
(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함
외래키
(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미함
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고 함

 

6. 뷰(View)

6-1. 뷰(View)의 특징

- 뷰의 생성 시 CREATE문, 검색 시 SELECT문을 사용한다.
- 뷰의 정의 변경시 ALTER문을 사용할 수 없고 DROP문을 이용한다.
- 뷰를 이용한 또 다른 뷰의 생성이 가능하다.
- 하나의 뷰 제거시 그 뷰를 기초로 정의된 다른 뷰도 함께 삭제된다.
- 뷰에 대한 조작에서 삽입, 갱신, 삭제 연산은 제약이 따른다.
- 뷰가 정의된 기본 테이블이 제거되면 뷰도 자동적으로 제거된다.

 

* 뷰의 삽입, 삭제, 갱신 연산 시 ALTER문을 사용할 수 없는 제약이 있다.

 

 

========================================

3. 물리 데이터 설계

 

 

========================================

4. 데이터 전환

1. 분산 데이터베이스

1-1. 분산 데이터베이스 정의

- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산되어 있는 데이터베이스를 말한다.

 

1-2. 분산 데이터베이스 목표

목표 내용
위치 투명성
(Location Trasparency)
데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스할 수 있음
중복 투명성
(Replication Trasparency)
데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용가능, 시스템은 자동으로 여러 자료에 대한 작업 수행
병행 투명성
(Concurrency Transparency)
다수의 트랜잭션이 동시에 실현되더라도 그 결과는 영향을 받지 않음
장애 투명성
(Failure Transparency)
트랜잭션, DBMS, 네트워크 컴퓨터 장애에도 트랜잭션을 정확히 처리함

 

1-3. 분산 데이터베이스의 장, 단점

장점 단점
지역 자치성이 높음 DBMS가 수행할 기능이 복잡
자료의 공유성이 향상됨 설계가 어려움
분산 제어 가능 개발, 처리 비용 증가
시스템 성능 향상 잠재적 오류 증가
중앙 컴퓨터의 장애가 전체 시스템에 영향 X  
효용성, 융통성, 신뢰성, 가용성  
용량 확장이 용이함  

 

1-4. 분산 데이터 시스템의 구성 요소

- 분산 처리기, 분산 데이터베이스, 통신 네트워크, 분산 트랜잭션

 

1-5. 분산 데이터베이스의 구조

- 전역, 분할(단편화), 할당, 지역 스키마

 

2. 병행제어

2-1. 병행제어란?

- 다중 프로그램의 이점을 활용하여 동시에 여러 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것을 말한다.

 

2-2. 병행제어의 목적

- 데이터베이스 공유 최대화

- 데이터베이스 일관성 최대화(유지)

- 시스템 활용도 최대화

- 사용자에 대한 응답시간 최소화

 

2-3. 로킹(Locking) 특징
- 로킹 단위가 커지면 로크의 수가 적어 관리가 쉬워지지만 병행성 수준은 낮아진다.
- 로킹 단위가 작으면 로크의 수가 많아 관리가 어려워지지만 병행성 수준은 높아진다.
- 로킹의 대상이 되는 객체(파일, 테이블, 필드, 레코드)의 크기를 로킹 단위라고 한다.

 

========================================

5. SQL

 

5-1. SQL의 종류

- SQL은 구조화된 질의 언어이다.

- 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL), 트랜잭션 제어어(TCL)로 구분된다.

구분 내용 명령어 내용
DDL(데이터 정의어) 데이터를 저장할 공간(테이블)과형식(스키마)을 정의 CREATE 테이블 생성
DROP 테이블 삭제
ALTER 테이블 재정의
DML(데이터 조작어) 데이터를 저장, 수정, 삭제, 조회 INSERT 데이터 삽입/입력
DELETE 데이터 삭제
UPDATE 데이터 수정
SELECT 데이터 검색
DCL(데이터 제어어) 사용자의 권한 제어 GRANT 사용자 권한 부여
REVOKE 사용자 권한 취소/회수
TCL(트랜잭션 제어어) 트랜잭션 제어 COMMIT 작업 내용 저장
ROLLBACK 작업 내용 취소

댓글