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 |
R ⋈ S | 공통 속성을 이용해 R과 S의 튜플들을 연결해 만들어진 튜플 반환 | |
디비전 Division |
R ÷ S | S의 모든 튜플과 관련 있는 R의 튜플 반환 |
6) 개체-관계 모델 (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
'정처기' 카테고리의 다른 글
정보처리기사 실기 정리 SQL응용 (1) | 2023.04.22 |
---|---|
정보처리기사 실기 정리 3. 통합구현 (feat. 수제비) (0) | 2023.04.19 |
정보처리기사 실기 정리 6. 화면 설계 (feat수제비2022) (0) | 2023.04.18 |
정보처리기사 실기 2020년 2회 내가 보려고 정리한 오답노트 (0) | 2023.04.16 |
정보처리기사 실기 2020년 1회 나만 보는 오답정리 (0) | 2023.04.16 |
댓글