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 | 작업 내용 취소 |
'자격증 > 정보처리기사(필기)' 카테고리의 다른 글
[정보처리기사] 5과목 - 정보시스템 구축관리 (0) | 2023.05.12 |
---|---|
[정보처리기사] 4과목 - 프로그래밍 언어 활용 (1) | 2023.05.12 |
[정보처리기사] 2과목 소프트웨어 개발 (0) | 2023.05.11 |
아키텍처 설계 (0) | 2023.05.11 |
미들웨어(Middleware) (0) | 2023.05.11 |
댓글