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

E0u0n·2024년 7월 27일
0

정보처리기사

목록 보기
5/6
post-thumbnail

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

01. 데이터 모델

1) 데이터 모델(Data Model)

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

2) 데이터 모델링 절차

① 개념적 설계(개념적 데이터 모델)

  • 사용자의 요구에 대한 트랜잭션을 모델링
  • 현실 세계에 대한 인식을 추상적, 개념적으로 표현하여 개념적 구조를 도출
    • 트랜잭션 모델링, View 통합방법 및 Attribute 합성 고려
    • 개념적 데이터 모델은 DB 종류와 관계 없음
    • 주요 산출물은 개체관계 다이어그램(ERD)이 있음

[MangKyu's Diary:티스토리] [Database] 6. 데이터 모델링(Data Modeling)

② 논리적 설계(논리적 데이터 모델)

  • 트랜잭션의 인터페이스를 설계하는 단계
  • DBMS에 맞는 논리적 스키마를 설계하는 단계
  • 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현한 데이터 모델
    • 정규화 수행
    • 논리적 데이터베이스 구조로 매핑
    • 스키마의 평가 및 정제
    • 논리적 데이터 모델링 중 하나에 맞게 설계
    • 관계형 데이터베이스에서는 테이블을 설계하는 단계

[MangKyu's Diary:티스토리] [Database] 6. 데이터 모델링(Data Modeling)

③ 물리적 설계(물리적 데이터 모델)

  • 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계
  • 데이터베이스 저장 구조(물리 데이터 모델)로 변환
    • Table, Index, View, Partition 등 객체를 생성
    • 응답시간, 저장 공간의 효율화, 트랜잭션 처리를 고려하여 설계
    • 성능 측면에서 반 정규화를 수행
    • 레코드 집중의 분석 및 설계
    • 저장 레코드 양식 설계
    • 접근 경로(Access Path) 설계

[MangKyu's Diary:티스토리] [Database] 6. 데이터 모델링(Data Modeling)

02. 논리 데이터 모델 검증

1) 정규화(Normalization)

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

① 이상현상(Anomaly) ⭐

  • 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
이상현상설명
삽입 이상정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
삭제 이상정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우
갱신 이상중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

[이상 현상 설명 테이블]

학번이름교수번호지도교수
201901홍길동1김교수
201902김영희2이교수

[삽입 이상]

학번이름교수번호지도교수
201901홍길동1김교수
201902김영희2이교수
201903이철수??

→ 지도교수가 정해지지 않으면 삽입할 수 없음

[삭제 이상]

학번이름교수번호지도교수
201901홍길동1김교수
201902김영희2이교수

→ '이 교수'라는 교수가 퇴사할 경우 '김영희' 학생 정보도 같이 삭제

[갱신 이상]

학번이름교수번호지도교수
201901홍길동3박교수
201902김영희2이교수

→ '홍길동'의 지도교수가 '박교수'로 바뀌면 '김교수'의 정보가 사라짐

③ 함수 종속

  • 릴레이션에서 속성의 의미와 속성 간 상호 관계로부터 발생하는 제약조건
  1. 결정자/종속자

    • X → Y 관계일 때 X는 결정자(Determinant), Y는 종속자(Dependent)
  2. 함수 종속 종류

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

④ 정규화 단계

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

    [MangKyu's Diary:티스토리] [Database] 정규화(Normalization) 쉽게 이해하기

    → 취미가 속성에 2개 이상 가지고 있는 경우 원자값이 아니기 때문에 속성 1개만 가지도록 저장

  2. 2차 정규화(2NF)

    [MangKyu's Diary:티스토리] [Database] 정규화(Normalization) 쉽게 이해하기

    → <학생번호, 강좌이름>이 <성적>에 영향을 주고, <강좌이름>이 <강의실>에 영향을 주는 관계를 '부분함수 종속 관계'
    → 부분 관계인 <강좌이름, 강의실> 관계를 별도의 테이블로 둠

  3. 3차 정규화(3NF)

    [MangKyu's Diary:티스토리] [Database] 정규화(Normalization) 쉽게 이해하기

    → <학생번호>가 <강좌이름>에 영향을 주고, <강좌이름>이 <수강료>에 영향을 주는 관계를 '이행함수 종속 관계'
    → <학생번호>는 <수강료>에 직접 영향을 주는 관계가 아니기에 <학생번호, 강좌이름> <강좌이름, 수강료> 테이블로 분리

  4. 보이스-코드 정규화(BCNF)

    [MangKyu's Diary:티스토리] [Database] 정규화(Normalization) 쉽게 이해하기

    → <학생번호, 특강이름>이 <교수>에 영향을 주고, <교수>가 <특강이름>에 영향을 주는 관계로서, <교수>는 키가 아닌 상황이므로 결정자인 <교수>가 후보키가 아님
    → <교수, 특강이름> 테이블로 분리하여 교수가 후보키 역할을 하도록 함

2) 반 정규화(De-Normalization)

  • 정규화된 엔터티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행
  • 비정규화 역정규화라고도 불림
  • 장점
    • 반 정규화된 데이터 구조는 성능 향상과 관리의 효율성 증가
  • 단점
    • 데이터의 일관성 및 정합성 저하
    • 유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향

① 반 정규화 기법

  • 테이블
    • 테이블 병합
    • 데이블 분할
    • 중복 테이블 추가
  • 컬럼
    • 컬럼 중복화
  • 관계
    • 중복관계 추가
profile
이세계 개발자입니다.

0개의 댓글