정보처리기능사 실기 Part 3 - Chapter 3. 데이터베이스

HongInSung·2022년 8월 6일
post-thumbnail

이 글은 이기적 정보처리기능사 실기 기본서를 기반으로 제작되었습니다.

소개

오늘은 정보처리기능사 Part 3의 마지막 챕터인 데이터베이스에 대해 알아보도록 합시다!
이것을 모른다면 다음 part인 SQL 활용 부분에서 이해하지 못하실 부분들이 많습니다!
꼭! 절대!!!! 필독하여 주시기 바랍니다!

1. 데이터베이스 종류 및 선정

1. 데이터베이스

1) 데이터베이스 개념

  • 데이터베이스(DB)란?
    • 다수의 인원, 시스템, 프로그램이 사용할 목적으로 통합하여 관리하는 데이터의 집합이다.
    • IT 시스템의 발달로 인해 급증하는 데이터에 대한 효과적인 관리가 중요해졌다.
    • 자료의 중복성 제거, 무결성 확보, 일관성 유지, 유용성 보장은 데이터베이스 관리의 핵심이다.

1) 데이터베이스 특징

  • 실시간 접근성(Real-time Accessibility)
  • 계속적인 변화(Continuous Evolution)
  • 동시 공유(Concurrent Sharing)
  • 내용에 의한 참조(Content Reference)

2) 데이터베이스 설계 순서

  • 요구조건 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현

2) 데이터베이스 용어

  • 속성(Attribute)
    • 릴레이션 내의 하나의 을 의미하며, 어떤 개체(Entity)를 표현하고 저장한 것이다.
    • 흔히 컬럼(Column) 또는 필드(Filed)로 표현하기도 한다.
  • 튜플(Tuple)
    • 릴레이션 내의 하나의 을 의미한다.
    • 레코드(Record) 또는 로우(Row)로 표현하기도 한다.
      속성1속성2속성3속성4
      튜플1
      튜플2
      튜플3
  • 차수(Degree)
    • 하나의 릴레이션 내에 들어 있는 속성의 수를 의미한다.
    • 위 예시를 예로 들어보자. 차수는 4개가 되는것이다.
  • 기수(Cardinality)
    • 하나의 릴레이션 내에 들어 있는 튜플의 수를 의미한다.
    • 위 예시를 예로 들어보자. 기수는 3개가 되는것이다.
  • 도메인(Domain)
    • 릴레이션 내 각각의 속성들이 가질 수 있는 값들의 집합을 의미한다.
  • 뷰(View)
    • 하나 이상의 기본 테이블로부터 유도된 가상의 테이블
    • 구조와 조작도 기본 테이블과 매우 유사하다.
  • 트랜잭션(Transaction)
    • 데이터베이스 내에서 하나의 작업 수행을 위한 연산들의 집합을 의미한다.

      ACID(트렌젝션의 안정성)

      • 원자성(Atomicity)
      • 일관성(Consistency)
      • 독립성(Isolation)
      • 지속성(Durability)
  • 스키마(Schema)
    • 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 의미한다.

      스키마의 종류
      내부 스키마(물리) - 시스템 프로그래머, 설계자의 관점에서 정의하는 DB
      논리 스키마(논리) - 사용자들이 필요로 하는 데이터를 기관, 조직의 관점에서 정의한 DB
      외부 스키마(서브) - 사용자 등의 개인적 입장에서 필요로 하는 DB

  • 키(Key)
    • 무언가를 식별하는 고유한 식별자(Identifier) 기능을 하는 것이다.
      • 후보키(Candidate Kay)
        • 유일성최소성을 만족하는 속성들의 집합
      • 기본키(Primary Key)
        • 후보키 중 선정된 키로 중복값 입력이 불가능하고, Null 값을 가질 수 없음.
      • 슈퍼키(Super Key)
        • 유일성을 만족하지만, 최소성을 불만족하는 속성들의 집합
      • 대체키(Alternate Key)
        • 후보키 중 기본키로 선택되지 못한 후보키들
      • 외래키(Foreign Key)
        • 다른 테이블의 행을 식별하는 키
      • 유일성?
        • 하나의 키로 특정 행을 바로 찾아낼 수 있는 고유한 데이터의 속성
        • 유일성만 만족해도 슈퍼키가 될 수 있다.

3) 데이터베이스 관리 시스템(DBMS)

  • Database Management System
  • 위와 같은 데이터 관리의 복잡성을 해결하는 동시에 다음과 같은 기능을 지원하는 소프트웨어이다.
    • 데이터 추가, 변경, 검색, 삭제, 백업, 복구, 보안
  • 저장되는 정보는 텍스트, 이미지, 음악 파일, 지도 데이터 등으로 매우 다양하다.
  • 최근에는 SNS의 발달과 빅데이터의 폭넓은 활용으로 인해 데이터의 종류이 급증하는 추세이다.
  • DBMS의 장단점은 다음과 같다.

4) 데이터베이스 관리자(DBA, Database Administrator)

  • DB를 설계 및 구축하고, 제대로 서비스 할 수 있도록 DB를 관리하고 제어하는 역할이다.
  • DBA에 주요 업무는 다음과 같다.
    • DB 구성요소 선정
    • DB 스키마 정의
    • 물리적 저장 구조접근 방법 결정
    • 무결성 유지를 위한 제약조건 정의
    • 보안접근 권한 정책 결정
    • 백업회복 기법 정의
    • 시스템 DB 관리
    • 시스템 성능 감시 및 성능 분석
    • DB 재구성

2. 데이터베이스 종류

1) 파일 시스템

  • 파일에 이름을 부여하고, 저장이나 검색을 위하여 논리적으로 그것들을 어디에 위치시켜야 하는지 등을 정의한 뒤 관리하는 DB 전 단계의 데이터 관리 방식이다.
    • ISAM(Indexed Sequential Access Method)
      • 자료 내용은 주 저장부, 자료의 색인은 자료가 기록된 위치와 함께 색인부에 기록되는 시스템이다.
    • VSAM(Visual Storage Access Method)
      • 대형 운영 체계에서 사용되는 파일 시스템

2) 계층형 데이터베이스 관리 시스템(HDBMS)

  • Hierarchical Database Management System
  • 데이터를 상하 종속적인 관계로 계층화하여 관리하는 DB이다.
  • 데이터에 대한 접근 속도가 빠르지만, 종속적인 구조로 인하여 변화하는 구조에 유연하게 대응하기가 쉽지 않다.
  • IMS, System 2000과 같은 제품이 있다.

3) 망형 데이터베이스 관리 시스템(NDBMS)

  • Network Database Management System
  • 데이터의 구조를 네트워크 상의 망상 형태로 논리적으로 표현한 데이터 모델이다.
  • 트리 구조나 계층형 DB보다는 유연하지만 설계가 복잡하다는 단점이 있다.
  • IDS, TOTAL, IDMS와 같은 제품이 있다.

4) 관계형 데이터베이스 관리 시스템(RDBMS)

  • Relational Database Management System
  • 가장 보편화 된 DB 관리 시스템이다.
  • 데이터를 저장하는 테이블의 일부를 다른 테이블과 상하 관계로 표시하며 상관 관계를 정리한다.
  • 변화하는 업무데이터 구조에 대한 유연성이 좋아 유지 관리가 용이하다.
종류특징로고
Oracle미국 오라클사에서 개발한 데이터베이스 관리 시스템으로 유료이다.
리눅스, 유닉스, 윈도우 모두를 지원하며 대형 시스템에서 많이 사용한다.
SQL Server마이크로소프트사에서 개발한 관계형 데이터베이스 시스템이다.
마이크로소프트사 제품이기 때문에 윈도즈 서버에서만 구동이 된다.
마이크로소프트사의 개발 언어인 C# 등과 가장 잘 호환된다.
MySQL썬 마이크로시스템에서 소유했던 관계형 데이터베이스 시스템
지금은 오라클이 인수하였다.
리눅스, 유닉스, 윈도우 모두 사용이 가능하다.
오픈소스 기반으로 개발되었다.
Maria DBMySQL 출신 개발자가 만든 데이터베이스이다.
MySQL과 완벽히 호환된다.

5) NoSQL

  • (SQL을 사용하지 않겠다는 뜻이 아님.) Not Only SQL
  • 전통적인 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 사용한다.
  • 빅데이터실시간 웹 애플리케이션의 상업적 이용에 쓰인다.

3. 데이터베이스 관리 시스템(DBMS) 특징

  • 데이터 무결성
    • 부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질
  • 데이터 일관성
    • 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함없이 일정해야 하는 성질
  • 데이터 회복성
    • 장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질
  • 데이터 보안성
    • 불법적인 노출, 변경, 손실로부터 보호되어야 하는 성질
  • 데이터 효율성
    • 응답 시간, 저장 공간 활용 등이 최적화 되어 사용자, 소프트웨어, 시스템 등의 요구 조건을 만족시켜야 하는 성질

4. 데이터베이스 관리 시스템 구조

5. 데이터베이스 관리 시스템 분류

1) 시스템 특징별 분류

  • 관리하는 데이터의 형태 및 관리 방식에 따라 구분할 수 있다.
  • 관계형 DB, 문서 저장 시스템, 그래프 DB, Key-Value 스토어 등으로 구분된다.

1) 관계형 DBMS(Relational DBMS)

  • 테이블의 구조(스키마)를 정의하고, 테이블 간의 관계를 정의하여 데이터 관리
  • 가장 광범위하게 쓰이는 DBMS
  • 비관계형 부분까지 확장하여 관리 범위를 넓힌 형태의 관계형 DBMS 출시
  • ex) Oracle, MySQL, MS SQL server, PostgreSQL, DB2, Maria DB

2) 문서 저장 DBMS

  • 관계형 DBMS와 달리 스키마 구조가 필요 없음
  • 일관된 구조가 필요 없음
  • 컬럼은 하나 이상의 값을 가질 수 있음
  • Client에서 후처리 필요
  • ex) Mongo DB, Amazon Dynamo DB, Couchbase, MS Azure cosmos DB

3) 그래프 DBMS

  • 노드에지로 특징되는 요소 특화
  • 노드 간 관계를 구조화하여 저장
  • ex) Neo4j, MS Azure cosmos DB, Orient DB, Arango DB

4) 키값 DBMS

  • 가장 간단한 형태의 DBMS
  • 임베디드 시스템과 같은 간단한 시스템에 적합
  • ex) Redis, Amazon Dynamo DB, Memcached

2) 상용화 및 오픈소스 기반 분류

1) 상용화 DBMS

  • 상업적 목적으로나, 판매를 목적으로 생성되는 소프트웨어
  • ex) Oracle, MS SQL Server, DB2, Microsoft Access, Teradata

2) 오픈소스 기반 DBMS

  • 누구에게나 공개해 누구나 제한 없이 사용할 수 있는 소프트웨어
  • ex) MySQL, PostgreSQL, Mongo DB, Redis, Elasticsearch

2. 관계형 데이터베이스 활용

1. 개체-관계 다이어그램

  • E-R Diagram, 통칭 ERD라고 불린다.

1) ERD 개요

  • ERD는 업무 분석 결과로 도출된 엔티티(실체)엔티티 간의 관계를 도식화 한 것이다.
  • ERD는 요소들 간 연관성을 도식화 하기 때문에 DBA, 개발자, 사용자 모두 데이터의 흐름연관성을 공통적으로 쉽게 확인할 수 있다.

2) E-R 모델(E-R Model)

  • ERD의 구성요소인 개체, 관계, 속성를 추출하기 위해서는 업무나 시스템에 대한 명확한 정의가 있어야 한다.
  • ERD로 도식화하기 전 각 개체사각형, 화살표, 마름모로 표기한 형태를 E-R 모델이라고 한다.
  • ex) 아래에 업무와 관련된 내용을 개체, 관계, 속성으로 추출해보았다.
    • 업무 사항
      • 각각의 종업원은 한 매장에 소속된다.
      • 종업원에 관해서는 사번, 이름, 주소, 휴대전화번호의 정보를 관리한다.
      • 매장에 대해서는 매장 코드, 매장명, 매장 전화번호, 매장 주소 정보가 유지된다.
    • 개체, 관계, 속성
      • 개체 : 종업원, 매장
      • 관계 : 소속
      • 속성 : 사번, 이름, 종업원 | 매장 주소, 종업원 | 매장 전화번호, 매장명, 매장 코드

1) 엔티티(Entity)

  • 사물 또는 사건을 의미하며, 개체라고도 한다.
  • ERD에서 엔티티는 사각형(ㅁ)으로 나타내고, 사각형 안에는 엔티티의 이름을 넣는다.
    • 엔티티 이름은 가능한 한 대문자로 쓰며, 단수형으로 명명한다.
    • 유일한 단어로 정한다.

2) 속성(Attribute)

  • 엔티티가 가지고 있는 요소 또는 성질을 의미한다.
  • 속성은 선으로 연결된 동그라미로 표기하거나 표 형식으로 표기한다.

    선으로 연결된 동그라미로 표기하는 방식은 Chen Model 이라고 한다.
    표 형식으로 표기하는 방식은 Crow's Foot Model 이라고 한다.

  • 관계형 데이터베이스 활용을 위해서는 Crow's Foot Model이 편리하다.
    • 속성명은 단수형으로 명명한다.
    • 엔티티명을 사용하지 않는다.
    • 속성이 필수 사항(Not Null)인지, 필수 사항이 아닌지(Null)를 고려하여 작성한다.

3) 관계(Relationship)

  • 두 엔티티 간의 관계를 표현한다.
  • 위에서 설명한 것처럼 개체는 사각형을, 속성은 동그라미로 그린다.
  • ERD 관계 표식 및 의미
표식의미
1:1 관계를 의미한다.
1:n 관계를 표시한다.
m:n 관계를 표시한다.
필수 관계를 표시한다.
- 1:1은 1:1을 포함한다.
- 1:n은 1:1과 1:n을 포함한다.
- m:n은 1:1, 1:n, m:1, m:n을 포함한다.
필수가 아닌 관계를 표시한다.
- 1:1은 0:1, 1:0, 1:1을 포함한다.
- 1:n은 0:1, 1:0, 1:1, 1:n을 포함한다.
- m:n은 0:1, 1:0, 0:n, m:0, 1:1, m:1, m:n을 포함한다.

3) E-R 모델 표기법

2. ERD 작성 절차

1) ERD 작성을 위한 요소 추출

  • 보험사에서 사용하는 DB를 설계해보자.
    • 고객이 있고, 고객이 사용하는 계좌가 있다.
    • 고객에 대한 정보로는 이름, 주소, 전화번호, 주민등록번호가 있다.
    • 계좌에 대한 정보로는 계좌번호, 계좌종류, 잔고, 개설일자, 인출한도가 있다.
    • 주소 정보에 대한 정보로는 서군구, , 상세 주소, 우편번호가 있다.
    • 고객은 다수의 집다수의 계좌를 보유할 수 있다.
  • 위 설계대로 개체, 속성, 관계를 추출해보자.
    • 개체
      • 고객, 계좌, 주소
    • 속성
      • 이름, 전화번호, 주민등록번호, 계좌번호, 계좌종류, 잔고, 개설일자, 인출한도, 시군구, 동, 상세주소, 우편번호
    • 관계
      • 고객이 계좌번호를 소유한다.
      • 고객이 주소를 소유한다.

2) E-R Model 작성

  • 추출된 요소를 가지고 ERD를 작성한다.
  • 일부 작성된 ERD에 추출 요소들을 입력한다.

3) ERD 관계형 스키마 작성

1) 관계형 스키마 작성을 위한 테이블 형태를 표시한다.

  • 테이블의 가장 윗칸은 유일하게 필드를 구분할 수 있는 구분자(유일키)가 되어야한다.
  • 유일키를 만드는 방법은 여러 가지가 있으며 일련번호를 부여하기도 한다.
  • 유일키 아래 칸에는 속성들을 기입한다.

2) 테이블 간 관계를 설정한다.

  • 테이블 간 관계를 표시한다.
  • 표기 시에는 1:1, 1:N, N:1, N:M의 관계를 고려해야 한다.
  • 테이블 간 연결할 수 있는 속성을 부여하여 다른 테이블의 값을 찾아갈 수 있어야 한다.

4) 관계형 데이터베이스 테이블 생성

1) 관계형 테이블 생성을 위한 물리 스키마를 작성한다.

  • SQL 표준 언어를 한글 입력이 허용되지 않는다.
  • 위 논리 스키마와 매칭되는 물리 스키마를 작성한다.

2) 테이블 생성을 위한 SQL 명령어를 작성한다.

  • 작성 시 필요한 데이터 타입은 정수, 실수, 날짜 등등 다양하다.
  • SQL 표준을 참조하여 필요로 하는 데이터 형을 입력한다.

    이 부분은 SQL 활용부분에서 좀더 알아봅시다!
    위 물리 스키마를 활용한 SQL문도 그쪽에서 나오니까! 기다려주세요!!

3. 데이터베이스 관리

이부분은 SQL 활용 부분에서 나오는 부분이 많아서, 그쪽에서 자세하게 알려드릴게요!

마치며

네! 오늘은 데이터베이스에 개념을 배워보았습니다!
이것으로 Part 3가 끝이 났습니다!
하지만 DB는..! Part 4로 이어집니다!!
다음시간엔 실제로 테이블도 만들어보면서 SQL이라는 것에 대해 배워보도록 하죠!!
그럼 다음 시간에 다시 뵙도록 하죠!

profile
안녕하세요! 풀스택 노려보고 있는 홍인성입니다!

0개의 댓글