[정보처리기사 실기] 데이터 입출력 구현

2025. 4. 8. 21:10자격증/정보처리기사

반응형

 

1  데이터 모델

(1) 데이터 모델(Data Model) [2021년 1회]

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

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

 

■ 데이터 모델 표시요소

구조
(Structure)
- 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계
- 데이터 구조 및 정적 성질을 표현하는 요소
연산
(Operation)
- 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세
- 릴레이션을 조작하기 위한 관계 연산을 나타냄(SELECT, PROJECT, JOIN, DIVISION)
제약 조건
(Constraint)
- 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
- 데이터 무결성 유지를 위한 DB의 보편적 방법
- 릴레이션의 특정 컬럼에 설정하는 제약의 의미(개체 무결성, 참조 무결성 등)

 

 

■ 데이터 모델 절차

요구조건
분석
- - 도출된 요구사항 간 상충을 해결하고 범위를 파악하며 외부 환경과의 상호작용을 분류를 통해 데이터에 대한 요구 분석
개념적
설계
개념적
데이터
모델
- 개념적 설계는 사용자의 요구에 따라 트랜잭션을 모델링 하는 단계 
- 개념적 데이터 모델은 현실 세계에 대한 인식을 추상적, 개념적으로 표현하여 개념적 구조로 표현하는 데이터 모델 
논리적
설계
논리적
데이터
모델
- 논리적 설계는 트랜잭션의 인터페이스를 설계하는 단계 
- DBMS에 맞는 논리적 스키마를 설계하는 단계 
- 논리적 데이터 모델은 업무의 종류를 불문하고 컴퓨터 활용상황이나 사람이 이해하기 쉽게 표현한 데이터 모델 
물리적
설계
물리적
데이터
모델
- 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장 구조(물리 데이터 모델)로 변환하는 모델

 

 

2  논리 데이터 모델

■ 논리적 데이터 모델링 종류

관계 데이터 모델 - 논리적 구조가 2차원 테이블 형태로 구성된 모델 
- 기본 키(PK)와 이를 참조하는 외래 키(FK)로 관계 표현 
- 1:1, 1:N, N:M 관계를 자유롭게 표현
계층 데이터 모델 - 논리적 구조가 트리 형태로 구성된 모델  
- 상하관계 존재(부모 개체–자식 개체)  
- 1:N 관계만 허용
네트워크 데이터 모델
- 논리적 구조가 그래프 형태로 구성된 모델  
- CODASYL DBTG 모델이라고 불림  
- 상위와 하위 레코드 사이에 다대다(N:M) 관계를 만족하는 구조

 


관계 데이터 모델 [2017년 1회, 2회, 2018년 2회, 2019년 3회, 2023년 1회]

① 관계 데이터 모델(Relation Data Model) 개념

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

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

 

 

② 관계 데이터 모델의 구성

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

 


관계 대수

① 관계 대수(Relational Algebra) 개념 [2021년 2회]

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

 

② 관계 대수 연산자의 종류 [2018년 1회, 2020년 3회, 2021년 1회, 2022년 2회, 3회]

 

 

🔹 일반 집합 연산자
일반 집합 연산자는 수학의 집합 개념을 릴레이션에 적용한 연산자이다.

합집합
(Union)
R ∪ S 합병 가능한 두 릴레이션 R과 S의 합집합
교집합
(Intersection)
R ∩ S 릴레이션 R과 S에 속하는 모든 튜플로 구성
차집합
(Difference)
R − S R에 존재하고 S에 존재하지 않는 튜플로 구성
카티션 프로덕트
(Cartesian Product)
× R × S R과 S에 속한 모든 튜플을 연결해 만들어진 새로운 튜플로 릴레이션 구성

 

 

🔹 순수 관계 연산자 [2023년 3회]

순수 관계 연산자는 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자이다.

셀렉트 (Select) σ σ조건(R) 릴레이션 R에서 조건을 만족하는 튜플 반환
프로젝션 (Project) π π속성리스트(R) 릴레이션 R에서 주어진 속성의 값으로만 구성된 튜플 반환
조인 (Join) R ⋈ S 공통 속성을 이용해 R과 S의 튜플을 연결해 만들어진 튜플 반환
디비전 (Division) ÷ R ÷ S 릴레이션 S의 모든 튜플과 관련 있는 R의 튜플 반환

 


관계 해석 [2022년 2회]

① 관계 해석(Relational Calculus) 개념

관계 해석은 튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어이다.

 

② 관계 해석 특징

**프레디킷 해석(Predicate Calculus)**에 기반한 언어이며,

비절차적 언어(원하는 정보가 무엇이라는 것만 선언)이다.

 


관계 대수와 관계 해석 비교

특징 절차적 언어(순서 명시) 비절차적 언어(계산 수식의 유연함 사용)
목적 어떻게 유도하는가? (How) 무엇을 얻을 것인가? (What)
종류 순수관계 연산자, 일반집합 연산자 튜플 관계 해석, 도메인 관계 해석

 

 


논리 데이터 모델링 속성

 

1. 개체(Entity)

개체는 데이터베이스에 표현하려는 사람 또는 사물이다.

피터 챈 모델(Peter Chen Model)에서는 개체를 사각형(□)으로 표시한다.

까마귀발 모델(Crow’s Foot Model)에서는 개체를 표 형식으로 표시한다.

 

2. 속성(Attribute)

속성은 개체가 가지고 있는 요소 또는 성질이다.

피터 챈 모델(Peter Chen Model)에서는 속성을 타원형(◯)으로 표시한다.

까마귀발 모델(Crow’s Foot Model)에서는 속성을 표 내부에 표시한다.

 

2. 관계(Relationship)

 두 개체(Entity) 간의 관계를 정의한다.

 피터 챈 모델(Peter Chen Model)에서는 속성을 타원형(◇)으로 표시한다.

 까마귀발 모델(Crow’s Foot Model)에서는 속성을 표 내부에 표시한다.


개체–관계(E–R) 모델 [2022년 3회]

1. 개체–관계(E–R) 모델 개념

E–R 모델은 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해 가장 널리 사용되고 있는 모델이다.

논리 데이터 모델링에서는 모든 이해당사자와 의사소통의 보조 자료로 E–R 모델을 활용한다.

 

 

■ 개체–관계 다이어그램 기호표

개체 집합 사각형
관계 집합 마름모
속성 타원
다중 값 속성 이중타원
개체 집합–관계 집합 연결 실선
개체 집합–속성 연결 실선
관계 집합–속성 연결 ···· 점선

 

 


정규화

 

❶ 이상 현상(Anomaly) [2020년 4회, 2022년 1회]

이상 현상은 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상이다.

 

■ 데이터베이스 이상 현상

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

 

 

❷ 함수 종속

 

① 함수 종속(FD; Functional Dependency) 개념

함수 종속은 릴레이션에서 속성의 의미와 속성 간 상호 관계로부터 발생하는 제약조건이다.

 

② 결정자/종속자

X → Y 관계일 때, X는 결정자(Determinant), Y는 종속자(Dependent)이다.

 

함수 종속 종류

 

부분 함수 종속
(Partial Functional
Dependency)
릴레이션에서 기본 키가 복합 키일 경우, 기본 키를 구성하는 속성 중 일부에게 종속된 경우
완전 함수 종속
(Full Functional
Dependency)
릴레이션에서 X → Y 관계가 있을 때, Y는 X의 전체 속성에 대해 종속하고, 부분 집합 속성에 종속하지 않는 경우
이행 함수 종속
(Transitive Functional
Dependency)
릴레이션에서 X → Y, Y → Z 종속 관계가 있을 때, X → Z가 성립되는 경우

 

 


정규화(Normalization)의 개념

정규화는 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고,

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

 

 

  데이터베이스 정규화 단계

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

 

반 정규화 [2020년 1회]

❶ 반 정규화(De-Normalization) 개념

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

비정규화, 역정규화라고도 불린다.


 

3  물리 데이터 모델

 

❶ 데이터베이스 무결성(Database Integrity)

데이터 무결성은 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 성질이다.

 

 

❷ 데이터베이스 무결성 종류 [2023년 3회]

개체 무결성
(Entity
Integrity)
- 한 엔터티에서 같은 기본 키(PK)를 가질 수 없거나, 기본 키(PK)의 속성이 NULL을 허용할 수 없는 제약조건 - 기본 키(Primary Key)
- 유니크 인덱스(Unique Index)
참조 무결성
(Referential
Integrity)
- 외래 키가 참조하는 다른 개체의 기본 키에 해당하는 값이 기본 키값이나 NULL이어야 하는 제약 조건 - 외래 키(Foreign Key)
속성 무결성
(Attribute
Integrity)
- 속성의 값은 기본값, NULL 여부, 도메인(데이터 타입, 길이)이 지정된 규칙을 준수해야 하는 제약 조건 - 체크(CHECK)
- NULL / NOT NULL
- 기본값(DEFAULT)
사용자 정의 무결성
(User-Defined
Integrity)
- 사용자의 의미적 요구사항을 준수해야 하는 제약 조건 - 트리거(Trigger)
- 사용자 정의 데이터 타입(User Defined Data Type)
키 무결성
(Key Integrity)
- 한 릴레이션에서 같은 키 값을 가진 튜플들을 허용할 수 없는 제약 조건 - 유니크(Unique)

 

 


키 (Key)

 

❶ 키(Key) 개념

키는 데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성이다.

 

 

❷ 키 특성 [2022년 1회]

유일성 (Uniqueness) 식별자에 의해 엔터티 내의 모든 튜플들을 유일하게 구분하는 특성
최소성 (Minimality) 최소한의 속성으로 식별자를 구성하는 특성

 

 

❸ 키 종류

기본 키 (Primary Key) 테이블의 각 튜플들을 고유하게 식별하는 키
대체 키 (Alternate Key) 후보 키 중에서 기본 키로 선택되지 않은 키
후보 키 (Candidate Key) 테이블에서 각 튜플을 구별하는 데 기준이 되는 키
슈퍼 키 (Super Key) 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족하지만 최소성은 만족하지 못하는 키
외래 키 (Foreign Key) 한 릴레이션의 컬럼이 다른 릴레이션의 기본 키로 이용되는 키  → 테이블 간 참조 데이터 무결성을 위한 제약 조건

 

 


인덱스(Index)

인덱스는 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조이다.

인덱스를 통해 전체 데이터를 검색하지 않고도 필요한 정보에 대해 신속한 조회가 가능하다.

 


파티셔닝

 

❶ 파티셔닝(Partitioning) 개념

파티셔닝은 테이블 또는 인덱스 데이터를 파티션(Partition) 단위로 나누어 저장하는 기법이다.

 

 

❷ 파티션의 유형

 

① 레인지 파티셔닝 (Range Partitioning)

연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법.

손쉬운 관리 기법을 제공하여 관리 시간의 단축이 가능하다.

 

 

② 해시 파티셔닝 (Hash Partitioning)

파티션 키의 해시 함수 값에 의해 분할

균등한 데이터 분할이 가능하고 질의 성능이 향상됨

 

③ 리스트 파티셔닝 (List Partitioning)

특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능한 기법

분포도가 비슷하고 조건이 많이 들어오는 SQL에서 유용

 

 

④ 컴포지트 파티셔닝 (Composite Partitioning)

레인지 + 해시, 레인지 + 리스트두 개 이상의 파티셔닝을 결합

 

⑤ 라운드로빈 (Round-Robin)

라운드로빈 방식으로 회전하며 새로운 행을 파티션에 할당

고른 분포를 원할 때 사용

반응형