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

2026. 7. 17. 01:04·정보처리기사

데이터 입출력 구현(논리, 물리데이터베이스 설계, 조작 프로시저 등)

데이터 모델링 절차

비스니스 요구상 -> ==개념적== 데이터 모델링 -> ==논리적== 데이터 모델링 -> ==물리적== 데이터 모델링 -> 데이터베이스 구축

  • 개념적 데이터 모델링: 현실 세계의 인식을 추상적인 개념으로 모델링
  • 논리적 데이터 모델링: 개념적 구조를 컴퓨터가 이해할 수 있는 형태로 변환
데이터 모델링
  • 기업의 정보 구조를 실체(Entity)와 관계(Relation)를 중심으로 명확하고 체계적으로 표현하여 문서화 하는 기법을 말한다.
    데이터 모델링 특성
  • 업무 흐름 파악 용이
  • 데이터 무결성 보장 (데이터 값의 정확성 보장)
  • 데이터 중복 제거 및 정보의 일관성 유지
    데이터 모델의 3요소
  • 연산 (Operation): 실제 데이터를 처리하는 작업
  • 구조 (Structure): 개체 간의 관계를 논리적으로 어떻게 표현할 것인가
  • 제약조건 (Constraint): 데이터의 논리적인 제약 및 규칙

개념적 데이터 모델링

  • E-R(객체-관계)다이어그램 - Peter Chen이 제안한 모델로, 현실 세계를 개체, 속성, 관계로 표현하며, 이를 시각화한 것
    • 개체 (Entity)
      • 현실 세계의 대상 (사람, 사물 등)
      • 표기법: 사각형
    • 속성 (Attribute)
      • 개체나 관계가 갖는 고유한 특성
      • 표기법: 타원
      • 속성의 분류:
        • 단일값/다중값 속성: 값이 하나인지(이름), 여러 개인지(취미 - 이중 타원)
        • 단순/복합 속성: 의미를 분해할 수 없는지(이름), 있는지(입사일: 년/월/일)
        • 유도 속성: 다른 속성값으로부터 계산되어 도출되는 속성 (예: 주민번호를 통한 나이)
        • 널(Null) 속성: 값이 없거나 아직 모르는 상태를 허용하는 속성
        • 키(Key) 속성: 각 개체를 유일하게 식별할 수 있는 속성 (밑줄로 표시)
    • 관계 (Relationship)
      • 개체 간의 의미 있는 연관성
      • 표기법: 마름모
      • 관계의 유형: 1:1, 1:N, N:M
      • 약한 개체: 다른 개체(강한 개체)의 존재 여부에 의존적인 개체 (예: 사원과 부양가족, 이중 사각형 및 이중 마름모 표기)

논리적 데이터 모델링

개념적 구조를 데이터베이스에 저장할 논리적 구조(주로 관계 데이터 모델)로 변환하는 과정입니다.

  • ==Entitiy, 속성, 관계==를 구조적으로 정의하는 단계

  • 특징: 정규화, 완전성, 독립성, 포용성성

  • 구성 3요소: ==Entitiy, 속성, 관계==

  • 모델 종류: 계층 데이터 모델(트리 형태), 네트워크 데이터 모델(그래프 형태), 관계 데이터 모델(2차원 테이블 형태)

    관계 데이터 모델 기본 용어
  • 릴레이션 (Relation): 2차원 테이블 (테이블)

  • 튜플 (Tuple): 릴레이션의 행(Row)

  • 애트리뷰트 (Attribute): 릴레이션의 열(Column)

  • 도메인 (Domain): 하나의 속성이 가질 수 있는 모든 값의 집합 (예: 성별 - 남/여)

  • 차수 (Degree): 속성(열)의 총 개수

  • 카디널리티 (Cardinality): 튜플(행)의 총 개수

    관계 데이터 연산 (관계 대수)

    원하는 데이터를 얻기 위해 어떻게(How) 연산할지 절차적으로 명시하는 언어입니다. (※ 관계 해석은 무엇(What)을 원하는지 명시하는 비절차적 언어)

  • 일반 집합 연산자: 합집합(∪), 교집합(∩), 차집합(-), 카티션 프로덕트(×)(두 릴레이션의 모든 튜플 조합)

  • 순수 관계 연산자:

    • Select (σ): 조건에 맞는 튜플(행) 반환
    • Project (π): 지정된 속성(열) 반환
    • Join (⋈): 공통 속성을 이용해 두 릴레이션을 연결
    • Division (÷): 릴레이션 A에서 릴레이션 B의 조건에 맞는 튜플을 꺼낸 뒤 조건 속성을 제외하고 반환
키(Key)의 종류
  • 슈퍼키: 유일성은 만족하나 최소성은 만족하지 않는 키의 집합
  • 후보키: 유일성과 최소성을 모두 만족하는 키
  • 기본키 (Primary Key): 후보키 중 선택된 메인 키
  • 대체키 (Alternate Key): 기본키로 선택되지 못한 나머지 후보키
  • 외래키 (Foreign Key): 다른 릴레이션의 기본키를 참조하는 속성
  • 슈퍼키 > 후보티 > 기본키, 대체키 (포함관계로 생각)
무결성 제약 조건
  • 개체 무결성: 기본키는 Null 값을 가질 수 없음
  • 참조 무결성: 외래키는 참조할 수 없는 값을 가질 수 없음
이상 현상 (Anomaly) 및 정규화 (Normalization)

잘못된 설계로 인해 불필요한 ==데이터가 중복되어 발생하는 문제==입니다.

  • 삽입 이상: 원치 않는 데이터까지 강제로 삽입해야 하는 현상
  • 갱신 이상: 일부만 변경되어 데이터가 불일치하는 현상
  • 삭제 이상: 삭제 시 유용한 정보까지 연쇄 삭제되는 현상

정규화: 관계형 데이터베이스 설계 시 중복을 최소하하여 데이터를 구조화하는 과정
-> ==데이터 중복 최소화 + 데이터 구조화==

정규화 단계:

  1. 제1정규화 (1NF): 모든 속성의 값이 원자값(단일값)을 갖도록 분해
  2. 제2정규화 (2NF): 부분 함수 종속성 제거 (완전 함수 종속)
  3. 제3정규화 (3NF): 이행 함수 종속성 제거 (X->Y, Y->Z 관계 분해)
  4. BCNF: 모든 결정자가 후보키가 되도록 분해
  5. 제4정규화 (4NF): 다치 종속(다중값 속성) 제거
  6. 제5정규화 (5NF): 조인 종속성 제거

물리적 데이터 모델링

논리적 구조를 특정 DBMS에 맞는 실제 저장소 구조(물리적 스키마)로 변환합니다.

  • 특정 DBMS를 전제로 실행
물리 데이터 모델 설계 순서
  1. 엔티티(Entity) → 테이블(Table)로 변환 (영문명 지정)
  2. 속성(Attribute) → 컬럼(Column)으로 변환 (데이터 타입 지정)
  3. 주식별자/외래식별자 → 기본키(PK)/외래키(FK)로 지정
  4. 칼럼의 유형, 길이 정의
  5. 반정규화 수행
반정규화 (De-normalization)

정규화로 인해 릴레이션이 너무 많이 분해되어 수행 속도(성능)가 저하될 때, 시스템의 성능 향상을 위해 의도적으로 정규화 원칙을 위배하여 테이블을 통합/분할/추가하는 과정입니다.

물리 데이터 저장소 구성
  • 제약조건 설계: 참조 무결성 등을 위해 제약조건 정의
  • 인덱스(Index) 설계: 데이터 검색 속도 향상을 위한 색인 생성 (단, 잦은 수정/삭제 시 부하 발생 고려)
  • 뷰(View) 설계: 기본 테이블을 기반으로 보안 및 편의를 위해 만드는 가상 테이블
  • 클러스터(Cluster) 설계: 검색 효율을 높이기 위해 같이 ==자주 쓰이는 데이터를 물리적으로 같은 블록에 모아 저장==
  • 파티션(Partition) 설계: 대용량 DB를 범위, 해시, 조합 등의 방식으로 분할하여 관리 용이성 및 성능 향상 도모
    • 파티셔닝: 대용량의 테이블을 작은 논리적인 단위인 파티션으로 나누는 것
      • 레인지 파티셔닝: 연속되는 숫자나 날짜 기준으로 파티셔닝
      • 해시 파니셔닝: 파티션 키의 해시 함수 값으로 파티셔닝
      • 리스트 파티셔닝: 범위 분할 이후 해시 함수를 적용하는 파티셔닝
      • 장점: 성능 향상, 가용성 향상, 백업 가능
데이터 조작 프로시저

프로시저: SQL을 이용해 생성된 데이터를 조작하는 프로그램

CREATE OR REPLACE
(name IN VARCHAR)
IS BEGIN

옵티마이저: SQL을 가장 빠르고 효율적으로 수행할 수 있는 최적의 경로 생성

  • 실행 계획: 최적의 처리 경로
  • RBO: 규칙 기반
  • CBO: 비용 기반

'정보처리기사' 카테고리의 다른 글

[정보처리기사 실기] 서버 프로그램 구현  (0) 2026.07.17
[정보처리기사] 정보처리기사 필기 후기 및 실기 시험 준비  (0) 2026.07.06
'정보처리기사' 카테고리의 다른 글
  • [정보처리기사 실기] 서버 프로그램 구현
  • [정보처리기사] 정보처리기사 필기 후기 및 실기 시험 준비
chanhuy
chanhuy
  • chanhuy
    차늬
    chanhuy
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • algorithm (9)
      • Python (2)
      • database (8)
      • csts (3)
      • Operating System (0)
      • 오픈소스SW (1)
      • Git & Github (4)
      • 프로젝트 회고 (3)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    index
    알고리즘
    오픈소스SW
    dynamic programming
    graph algorithms
    Reduction
    D&C
    COMMIT
    recursion
    프로젝트후기
    시간복잡도
    pl/sql
    Git
    Python
    backtracking
    algorithm
    greedy
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
chanhuy
[정보처리기사 실기] 데이터 입출력 구현
상단으로

티스토리툴바