본문 바로가기
정처기

정보처리기사 실기 정리 2. 데이터 입출력 (feat.수제비)

by 롱2롱 2023. 4. 19.

3. 데이터 입출력

1. 논리 데이터 저장소 확인

1) 데이터 모델 개념 

요구사항 도출 -> 개념적 데이터 모델 -> 논리적 데이터 모델 -> 물리적 데이터 모델

데이터 모델이란? 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델 

데이터 모델에 표시해야 할 요소에는 논리적 데이터 구조, 연산, 제약조건이 있음

 

- 데이터 모델 구성 요소

연산 (Operation) 디비에 저장된 실제 데이터를 처리하는 작업에 대한 명세 
EX) select, project, join, division
구조 (Structure) 디비에 논리적으로 표현될 대상, 개체 타입과 개체 타입 간의 관계
제약 조건(Constrain) 디비에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
데이터 무결성 유지를 위한 db의 보편적 방법

2) 데이터 모델 절차

단계 모델 설명
요구조건 분석 - 말그대로 데이터에 대한 요구 분석/ 도출된 요구사항 간 상충을 해결하고 범위 파악
- > 상호작용을 분석을 통해 데이터에 대한 요구 분석
개념적 설계 개념적 데이터 모델 사용자의 요구에 대한 트랜잭션을 모델링 하는 단계
현실세계에 대한 인식을 추상적, 개념적으로 표현하는 모델 (스케치 단계 느낌)
논리적 설계 논리적 데이터 모델 트랜잭션의 인터페이스를 설계하는 단계
DBMS에 맞는 논리적 스키마를 설계하는 단계 
물리적 설계 물리적 데이터 모델 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려해 물리적인 스키마를 만드는 단계
논리 데이터 모델을 사용하고자 하는 DBMS의 특성을 고려해 진짜 어떻게 저장할지 변환하는 단계임

개념적
논리적
물리적

 

3) 논리 데이터 모델 검증

논리 데이터 모델링이란?

: 개념 모델로부터 업무 영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델

 

논리 데이터 모델링 유형

- 관계 데이터 모델

- 계층 데이터 모델

- 네트워크 데이터 모델

 

4) 관계 데이터 모델

관계 데이터 모델이란? 

: 관계 데이터 모델은 데이터를 행-열로 구성된 2차원 테이블 형태로 구성한 모델 

 

-관계 데이터 모델의 구성

릴레이션 - Relation 테이블
튜플 - Tuple 행 가로로 한줄
속성 - Attribute 열 세로로 한줄
카디널리티 - Cardinality 튜플의 수 = 행의 수 = 가로줄 수
차수 - Degree 애트리뷰트의 수 = 열의 수 = 세로줄 수
스키마 - Schema 디비 구조, 제약 조건 등의 정보를 담고 있는 기본적인 구조 
인스턴스 - instance 정의된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합 

 

관계 데이터 모델 vs 개체-관계(ER)모델 

차이점은 관계 데이터 모델은 데이터를 개체테이블 - 관계 테이블 해서 관계를 표현하는데

개체-관계 데이터 모델은 데이터를 개체-관계 속성으로 표시함 

 

5) 관계 대수

관계 대수란? : 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어

 

관계 대수 연산자의 종류

관계 대수 연산자 종류 연산자 기호, 표현 설명
일반 집합 연산자 합집합
Union
R S 합집합
교집합
Intersetction
R S 교집합
차집합
Difference
R S 차집합
카티션 프로덕트
CARTESIAN Product
R X S R, S에 속한 모든 튜플을 연결해 만들어진 새로운 튜플로 릴레이션 구성
순수 관계 연산자 셀렉트
Select
σ(조건)R R에서 조건을 만족하는 튜플 반환(가로조건)
프로젝트
Project
π(속성리스트)R R에서 주어진 속성들의 값으로만 구성된 튜플 반환 (속성 조건)
조인
Join
S 공통 속성을 이용해 R과 S의 튜플들을 연결해 만들어진 튜플 반환
디비전
Division
÷ S S의 모든 튜플과 관련 있는 R의 튜플 반환

 

6) 개체-관계 모델 (ER모델)

 

-다이어그램 기호

개체
관계  
속성  
다중 값 속성
관계-속성 연결

ER다이어그램

 

7) 정규화

정규화란(Normalization)?

: 정규화는 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정

 

이상현상(Anomaly)이란?

:정규화를 하지 않았을 경우에 대한 문제점,  데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상

 

-이상현상 종류

삽입 이상 데이터 저장시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
삭제 이상 데이터 삭제시 원치 않은 다른 정보가 같이 삭제되는 경우
갱신 이상 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

 

- 정규화의 단계

1정규형
1NF
원자값으로 구성
2정규형
2NF
부분 함수 종속 제거(완전 함수적 종속 관계)
3정규형
3NF
이행함수 종속 제거
보이스-코드 정규형
BCNF
결정자 후보 키가 아닌 함수 종속 제거
4정규형
4NF
다치(다중 값) 종속 제거
5정규형
5NF
조인 종속 제거

1정규형은 속성안에 단 하나의 값만 가지게 하는것 

5정규형은 조인 된 것을 다시 속성-속성 테이블로 바꾸는것 

4정규형은 한 속성에 연결된게 여러값 또 연결된 다른 여러값이 존재하면 둘둘 씩 나누는거

원부이 결다조

 

반정규화란(De-Normalization)?

:정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법

장점 : 성능 향상과 관리의 효율성 증가

단점 : 데이터의 일관성 및 정합성 저하, 유지를 위한 비용이 별도 발생->성능에 나쁜 영향이 미칠수도

 

반정규화 기법

구분 수행 방법 설명
테이블 테이블 병합 - 1:1관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능 향상
- 슈퍼타입/서브타입 테이블 통합 통해 성능 향상
테이블 분할 테이블을 수직 또는 수평으로 분할하는 것 == 파티셔닝 
중복 테이블 추가 대량의 데이터들에 대한 집계합수 사용 -> 실시간 통계 정보를 계산하는 경우 별도의 통계 테이블을 두거나 중복 테이블 추가 
종류
- 집계 테이블 추가 : 집계 데이터를 위한 테이블 생성
- 진행 테이블 추가 : 이력 관리 등의 목적으로 추가하는 테이블
- 특정 부분만을 포함하는 테이블 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 얘만 따로 뗌
컬럼 컬럼 중복화 조인 성능 향상을 위한 중복 허용
관계 중복관계 추가 데이터를 처리하기 위한 여러 경로를 거쳐 조인은 가능 but 발생할 수 있는 성능 저하 에방하기 위해 추가적 관계를 맺는 것 

 

2. 물리 데이터 저장소 설계

1) 물리데이터 모델 설계

물리데이터 모델링이란?

: 논리 모델을 적용하고자 하는 기술에 맞도록 상세화해가는 과정

논리모델로 설계한 것을 진짜 디비에 저장할 때 어케 할건지 설계하는거임

 

물리 데이터 모델링 변환 절차

개체를 테이블로 변환 -> 속성을 컬럼으로 변환 -> UID를 기본키로 변환 -> 관계를 외래키로 변환 -> 컬럼 유형과 길이 정의 -> 반 정규화 수행

 

2) 물리 데이터 저장소 구성

테이블 제약 조건 설계 할 때 참조무결성 제약조건 중요함~ 

 

참조무결성 제약조건이란?

: 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건

-> 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키여야함!! 

 

파티션 설계 할 때는 파티션의 종류 장점등을 확인해 설계해야함

 

파티셔닝의 장점

성능향상, 가용성 향상, 백업 가능, 경합 감소

성가백합

 

- 파티션의 종류

레인지 파티셔닝 연속적인 숫자나 날짜를 기준
관리 시간 단축 가능
해시 파티셔닝 파티션 키의 해시 함수 값에 의한 기법
균등한 데이터 분할 가능, 질의 성능 향상 가능
리스트 파티셔닝 특정 파티션에 저장 될 데이터에 대한 명시적 제어 가능
분포도가 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용
컴포지트 파티셔닝 위 3개중 2개 이상을 결합한 파티셔닝
큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있음
라운드로빈 파티셔닝 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당하는 방식
파티션에 행의 고른 분포를 원할 때 사용

 

 

3. 데이터베이스 기초 활용하기

1) 데이터베이스란?

: 디비는 다수의 인원, 시스템, 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합

 

2) 데이터베이스 정의

통합된 데이터 : 자료의 중복을 배제한 데이터의 모임

저장된 데이터 : 저장 매체에 저장된 데이터

운영 데이터 : 조직의 업무를 수행하는데 필요한 데이터

공용 데이터 : 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터

 

3) 데이터베이스 특성

실시간 접근성 : 쿼리에 대하여 실시간 응답이 가능해야함

계속적인 변화 : 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지함

동시 공용 : 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함 

내용 참조  :데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 데이터를 찾는다

 

4) 데이터 베이스 종류

관계형 데이터베이스 관리시스템(RDBMS) 관계형 모델을 기반으로 가장 보편화된 데이터베이스 관리시스템 
변화하는 업무 데이터 구조에 대한 유연성이 좋음 유지관리 용이
ex) Oracle, SQL server, MySQL, Maria DB
계층형 데이터베이스 관리시스템(HDBMS) 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스
접근속도는 빠르나 종속적인 구조로 인하여 변화하는 데이터 구조에 유연하게 대응 어렵
ex) IMS, System2000
네트워크 데이터베이스 관리시스템(NDBMS) 구조가 네트워크 망처럼 되어 있음 
트리나 계층형 구조 데이터베이스보다는 유연하지만 설계가 복잡
ex) IDS, IDMS

 

5) DBMS란?

: 데이터 관리의 복잡성을 해결하는 동시에 추가, 변경, 검색 삭제 머머 등등 다 지원하는 소프트웨어 

 

- DBMS 종류

키-값 DBMS 키 기반 get/put/delete제공
메모리 기반에서 성능 우선 시스템 및 빅데이터 처리가능
ex) redis, DynamoDB
컬럼 기반 데이터 저장 key안에 (column, value)조합으로 된 여러 개의 필드를 가짐
테이블 기반, 조인 미지원, 컬럼 기반으로 구글 bigtable기반 구현
ex)HBase, Cassandra
문서 저장 값(value)의 데이터 타입이 문서(document)라는 타입
문서타입은 XML, JSON과 같이 구조화된 데이터타입으로 복잡한 계층 구조 표현가능
ex) MongoDB, Couchbase
그래프 시멘틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터 표현
노드와 엣지로 특징되는 요소 특화
노드간 관계를 구조화하여 저장
ex) Neo4j, AllegroGraph

- DBMS 특징

무결성, 일관성, 회복성, 보안성, 효율성

 

6) NoSQL란?

: 전통적인 RDBMS와 다르게 고정된 테이블 스키마가 필요없음 좀더 자유로움, 조인 연산 사용할 수 없음

- NoSQL 유형

key-value store Unique한 key에 하나의 value를 가지고 있는 형태
ex) Redis, DynamoDB
Column Family Data Store 키안에 (column, value)조합으로 된 여러 개의 필드를 가짐
ex) HBase, Cassandra
Documnet Store value의 데이터 타입이 Document타입 
ex) MongoDB, Couchbase
Graph Store 시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터 표현
ex) Neo4j, AllegroGraph

키컬도그 

 

7) 데이터 마이닝이란?

: 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술

 

- 절차

목적설정 -> 데이터 준비 -> 가공 -> 마이닝 기법 적용 -> 정보 검증

 

- 데이터마이닝 주요기법

분류 규칙(classification)

연관 규칙(association)

연속 규칙(sequence)

데이터 군집화(clustering)

 

 

4. 자료구조

1. 자료 구조의 분류

선형 구조 배열
선형 리스트 - 연속리스트(메모리 장소가 일정), 연결 리스트(메모리 여기저기 참조 주소를 가져와서 씀)
스택
데크
비선형 구조 트리 : 정점(node)와 선분(branch)을 이용해 사이클이 없는 구조
그래프 : 정점 (vertex), 간선(edge)

- 방향 / 무방향 그래프의 최대 간선 수

방향 : n(n-1)

무방향 : n(n-1)/2

 

- 트리관련 용어

  • 디그리(Degree, 차수) 각 노드에서 뻗어나온 가지의 수
  • 레벨 (Level) : 루트 노드는 레벨 1 밑으로 갈때마다 +1
  • 깊이 (depth, height) : tree에서 노드가 가질 수 있는 최대의 레벨 
  • 트리의 디그리 : 노드들의 디그리중 가장 많은 수 

 

 

- 참고자료
https://hyeonukdev.github.io/2020/05/13/Engineer_Information_Processing/ch12_%EB%85%BC%EB%A6%AC%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EC%84%A4%EA%B3%84/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%AA%A8%EB%8D%B8%EB%A7%81%EB%B0%8F%EC%84%A4%EA%B3%84/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%AA%A8%EB%8D%B8%EA%B0%9C%EB%85%90/

https://mangkyu.tistory.com/27

댓글