[CS] 정보처리기능사 실기_02.데이터베이스 기초 활용
본 문서는 정보처리기능사 실기 시험 대비용 필기입니다
- 데이터베이스 기초 활용
데이터베이스 기초 활용
데이터베이스의 개념
데이터베이스(Database)
- 특정 조직의 업무를 수행하는데 필요한 상호 관련된 데이터들의 모임
- 통합된 데이터(Intergrated Data) : 검색의 효율성을 위해 중복이 최소화된 데이터의 모임
- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 데이터
- 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 데이터
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 데이터
데이터베이스 설계
사용자의 요구를 분석하여 그것들을 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 특정 DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는 것
데이터베이스 설계 순서
- 요구 조건 분석 : 요구 조건 명세서 작성
- 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
- 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
- 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
- 구현 : 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 트랜잭션 작성
스키마(Schema)
데이터베이스를 구성하는 개체, 속성, 관계 등 구조에 대한 정의와 이에 대한 제약 조건 등을 기술하는 것
- 3계층 스키마
- 외부 스키마(External Schema = Sub Schema) : 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것
- 개념 스키마(Conceptual Schema) : 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재
- 내부 스키마(Internal Schema) : 물리적 저장장치의 입장에서 본 데이터베이스 구조, 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄
데이터베이스 사용자
- 데이터베이스 관리자(DBA; DataBase Administrator)
- 데이터베이스 시스템을 관리하고 운영에 관한 모든 것을 책임지는 사람이나 그룹
- 데이터베이스의 스키마를 정의, 생성, 삭제한다
- 데이터베이스 구성요소를 결정
- 데이터베이스의 저장 구조 및 접근 방법을 정의
- 보안 및 데이터베이스의 접근 권한 부여 정책을 수립
- 장애에 대비한 예비(Back Up) 조치와 회복(Recovery0)에 대한 전략을 수립
- 무결성을 위한 제약 조건을 지정
- 사용자의 변화 요구와 성능 향상을 위해 데이터베이스를 재구성
- 응용 프로그래머
- 일반 호스트 언어로 프로그램을 작성할 때 데이터 조작어를 삽입해서 일반 사용자가 응용 프로그램을 사용할 수 있게, 인터페이스를 제공할 목적으로 데이터베이스에 접근하는 사람들
- 일반 사용자(End User)
- 보통 터미널을 이용하여 데이터베이스에 있는 자원을 활용할 목적으로 질의어나 응용 프로그램을 사용하여 데이터베이스에 접근하는 사람들
DBMS(데이터베이스 관리 시스템)
DBMS(DataBase Management System)의 정의
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해 주는 소프트웨어
- 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템, 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해 줌
- DBMS는 데이터베이스의 구성, 접근 방법, 유지관리에 대한 모든 책임을 짐
- DBMS의 필수기능
- 정의 : 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터 타입과 구조에 대한 정의, 이용방식, 제약 조건 등을 명시하는 기능
- 조작 : 데이터 검색, 갱신, 삽입, 삭제 등을 체게적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능
- 제어 : 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 제어하는 기능
DBMS의 종류
- 계층형 DBMS
- 트리 구조를 이용해서 데이터의 상호관계를 계층적으로 정의한 DBMS
- 개체 타입 간에는 부모(Owner)와 자식(Member) 관계가 존재하며, 1:N 대응 관계만 존재
- 종류 : IMS, System2000 등
- 망형 DBMS
- 그래프를 이용해서 데이터 논리 구조를 표현한 DBMS
- 상위(Owner)와 하위(Member) 레코드 사이에서 1:1, 1:N, N:M 대응 관계를 모두 지원
- 종류 : IDS, TOTAL, IDMS 등
- 관계형 DBMS
- 가장 널리 사용되는 DBMS로, 계층형 DMBS와 망형 DBMS의 복잡한 구조를 단순화시킨 DBMS
- 파일 구조처럼 구성한 2차원적인 표(Table)를 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계(Relationship)를 설정하거나 테이블 간의 관계를 설정하여 이용
- 종류 : Oracle, SQL Server, MySQL 등
DBMS의 장단점
- 장점
- 데이터의 논리적, 물리적 독립성이 보장됨
- 데이터의 중복을 피할 수 있어 기억공간이 절약됨
- 저장된 자료를 공동으로 이용할 수 있다
- 데이터의 보안, 일관성, 무결성을 유지할 수 있다
- 데이터를 표준화할 수 있다
- 데이터를 통학하여 관리할 수 있다
- 항상 최신의 데이터를 유지한다
- 데이터의 실시간 처리가 가능
- 단점
- 데이터베이스의 전문가가 부족
- 전산화 비용이 증가
- 대용량 디스크로의 집중적인 접근으로 과부화(Overhead)가 발생
- 파일의 Backup과 Recovery가 어려움
- 시스템이 복잡함
데이터 모델
데이터 모델의 정의
현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약조건 등을 기술하기 위한 개념적 도구들의 모임
- 현실 세계를 데이터베이스에 표현하는 중간 과정, 즉 데이터베이스 설계 과정에서 데이터의 구조(Schema)를 논리적으로 표현하기 위해 사용되는 지능적 도구
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형 무형의 정보로서 서로 연관된 몇 개의 속성으로 구성됨
- 파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행
- 독립적으로 존재하거나 그 자체로서도 구별 가능
- 속성(Attribute)
- 데이터의 가장 작은 논리적 단위 파일 구조상의 데이터 항목 또는 데이터 필드
- 어떤 데이터 개체의 구성요소로서 그 개체의 성질이나 상태를 기술해 주는 역할을 하며, 그 자체로는 중요한 의미를 가지지 못한다
- 릴레이션에서는 열(Column)에, 파일 시스템에서는 필드(Field)에 해당
- 속성은 개체를 구성하는 항목
- 관계(Relationship)
- 두 개 이상의 개체 간의 연관성을 결정짓는 의미 있는 연결, 개체간의 관계 또는 속성 간의 관계
- 개체 집합 구성 원소 사이의 대응성을 명시하는 것, 현실 세계를 개념 세계로 표현할 때 집합들의 구성 원소사이에 1:1, 1:N, N:M 등의 사상을 의미
- 관계의 형태 : 1:1, 1:N, N:M
ER(Entity Relationship) 모델
ER 모델
개념적 데이터 모델의 가장 대표적인 것, 개체 속성, 관계 등에 대하여 용이하게 표현할 수 있는 ER 도형(ERD; Entity Relationship Diagram)을 정의하고 있다
ERD
관계형 데이터베이스의 구조
관계형 데이터베이스의 개요
- 관계형 데이터베이스를 구성하는 개체나 관계를 모두 릴레이션이라는 표로 표현
- 개체 릴레이션, 관계 릴레이션으로 분류
- 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이
관계형 데이터베이스의 Relation 구조
릴레이션 : 데이터들을 표의 형태로 표현한 것
구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨

- 튜플(Tuple)
- 릴레이션을 구성하는 각각의 행
- 튜플은 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
튜플의 수 = Cardinality = 기수 = 대응수
- 속성(Attribute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 개체의 특성을 기술
속성의 수 = Degree = 차수
- 도메인(Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용
릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없다
- 튜플 사이에는 순서가 없다
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 한다
- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정한다
- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장
키의 개념 및 종류
키(Key) : 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
슈퍼키(Super Key)
한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 못한다
후보키(Candidate Key)
튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 후보키는 유일성과 최소성을 모두 만족한다
기본키(Primary Key)
후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 없음
- 기본키는 후보키의 성질을 갖는다. 즉 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키
- 기본키는 NULL 값을 가질 수 없다. 즉 튜플에서 기본키로 설정된 속성에는 NULL 값이 있어서는 안됨
대체키(Alternate Key)
후보키 중에서 선정된 기본키를 제외한 나머지 후보키를 의미
외래키(Foreign Key)
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미
- 외래키는 릴레이션 간의 관계를 표현할 때 사용함
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인상에서 정의되었을 떄의 속성 A를 외래키라고 한다
- 외래키는 참조 릴레이션의 기본키와 동일한 키 속성을 가짐
무결성(Integrity)
무결성의 개념 및 종류
데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성
무결성 제약 조건은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건을 말함
무결성의 종류
- 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야한다. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다 - 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다는 규정
- NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
- 고유 무결성 : 릴레이션
- 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
- 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정
정규화(Normalization)
정규화의 개요
함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
- 데이터베이스의 개념적 설계 단계와 논리적 설계 단계 사이에서 수행
- 개체들에 존재하는 데이터 속성의 중복을 최소화하여 일치성을 보장하며 데이터 모델을 단순하게 구성
- 개체에 존재하는 함수적 종속 관계를 이용하여 데이터베이스 구조를 안정화시킴
정규화는 논리적 처리 및 품질에 큰 영향을 미침
- 정규화 과정
정규화의 목적
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함
- 효과적인 검색 알고리즘을 생성 가능
- 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임
- 자료 저장공간의 최소화 및 데이터 구조의 안정성을 최대화
- 데이터베이스 내부 자료의 뮤결성 유지를 극대화
이상(Anomaly)의 개념 및 종류
정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 곤란한 현상이 발생
- 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않는 값들도 함께 삽입되는 현상
- 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄가 일어나는 현상
- 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
고급 데이터베이스 기능
뷰(View)
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주 됨
- 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조로 되어 있으며, 조작도 기본 테이블과 거의 같음
- 실제 내용을 사용자 편의에 따라서 사용하는 외부 스키마에 해당하는 논리적 구조를 갖으며, 데이터의 논리적 독립성을 어느정도 제공
인덱스(Index)
데이터 레코드의 검색 시간을 단축시키기 위해 만든 보조적인 데이터 구조
- 레코드가 저장된 물리적 구조에 접근하는 방법을 제공
- 인덱스를 통해서 파일의 레코드에 대한 액세스를 빠르게 수행할 수 있다
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적
- 인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는 TABLE SCAN(테이블에 있는 모든 레코드를 순차적으로 읽는 것)이 발생
- CREATE문을 이용하여 생성
시스템 카탈로그(System Catalog)
시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블
- 카탈로그들이 생성되면 데이터 사전에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전이라고도 한다
- 시스템 카탈로그에 저장된 정보를
메타 데이터(데이터에 대한 속성정보등을 설명하기 위한 데이터)라고 한다
트랜잭션(Transaction)
데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업 단위, 데이터 베이스 관련 연산의 가장 기본적인 단위
- 트랜잭션은 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
- 하나의 트랜잭션은 데이터베이스에 접근하고 갱신하는 하나의 질의문 또는 여러 질의문으로 구성된다
- 트랜잭션은 일반적으로 회복의 단위로 Commit 되거나 Rollback 된다
- 트랜잭션은 원자성, 일관성, 독립성, 영속성의 특징을 가짐
- 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다는 성질
- 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다는 성질
- 독립성, 격리성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다는 성질
- 영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다는 성질