데이터베이스
데이터베이스 개념
특정 조직의 여러 사용자가 공유해 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합
정보 시스템이란 조직 운영에 필요한 데이터를 수집해 저장했다가 의사 결정이 필요할 때 처리해 유용한 정보를 만들어주는 수단이다.
데이터베이스는 정보시스템 안에서 데이터를 저장하고 있다가 처리가 필요할 때 데이터를 제공하는 핵심 역할을 한다.
데이터베이스 정의
- 공유 데이터 : 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있는 데이터
- 통합 데이터 : 데이터의 중복을 최소화하고 통제가 가능한 중복만 허용하는 데이터
- 저장 데이터 : 컴퓨터가 접근할 수 있는 매체에 저장된 데이터
- 운영 데이터 : 조직을 운영하고 조직의 주요 기능을 수행하기 위해 지속적으로 유지해야 하는 데이터
데이터베이스 특징
- 실시간 접근 가능 : 사용자의 데이터 요청에 실시간으로 응답
- 계속 변화 : 데이터의 계속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터 유지
- 내용 기반 참조 : 데이터가 저장된 주소나 위치가 아닌 내용으로 참조
- 동시 공유 : 서로 다른 데이터의 동시 사용과 같은 데이터의 동시 사용 지원
형태에 따른 데이터 분류
- 정형 데이터 : 미리 정해진 구조가 있는 데이터 ex) 스프레드시트
- 반정형 데이터 : 내용 안에 구조에 대한 설명이 있는 데이터 ex) HTML, JSON 문서
- 비정형 데이터 : 정해진 구조가 없는 데이터 ex) 영상, 이미지, 음성
특성에 따른 데이터 분류
- 범주형 데이터 : 종류를 나타내는 값
- 명목형 데이터 : 서열이 없다. ex) 성별, 거주지, 학과명
- 순서형 데이터 : 서열이 있다. ex) 학년, 학점, 회원 등급
- 수치형 데이터 : 크기 비교와 연산이 가능한 값
- 이산형 데이터 : 개수를 세어야 한다. ex) 고객수, 판매량
- 연속형 데이터 : 측정을 해야 한다. ex) 키, 몸무게, 온도
데이터베이스 관리 시스템
파일 시스템 문제점
- 같은 내용의 데이터가 여러 파일에 중복 저장된다.
- 응용 프로그램이 데이터 파일에 종속적이다.
- 데이터 파일에 대한 동시 공유, 보안 회복 기능이 부족하다.
- 응용 프로그램을 개발하기 어렵다.
데이터베이스 관리 시스템
DataBase Management System을 줄여서 DBMS라고 한다.
데이터베이스에 접근하여 정의, 조작, 제어 등의 관리를 지원하는 소프트웨어이다.
데이터베이스에 적재된 데이터 작업을 수행하고, 데이터베이스를 보호하며, 보안을 제공한다.
기능
- 구성(정의) : 데이터베이스에 저장될 자료의 구조와 응용프로그램이 이 구조를 이용하는 방식을 정의
- 조작 : 사용자의 요구에 따라 데이터베이스에 접근해 저장된 자료를 검색, 갱신, 삽입, 삭제할 수 있도록 한다. 데이터 언어로 조작
- 제어 : 사용자가 조작하려는 작업이 데이터 무결성을 파괴하지 않도록 요청을 제어. 사용자의 권한을 검사하여 보안을 유지하고, 동시 접근하여 처리 시 처리 결과가 항상 정확성을 유지하도록 한다.
장단점
장점 | 단점 |
데이터 중복 통제 가능 | 비용이 많이 든다. |
데이터 독립성 확보 | 백업과 회복 방법이 복잡하다. |
데이터 동시 공유 가능 | 중앙 집중 관릴로 인한 취약점 존재 |
데이터 보안 향상 | |
데이터 무결성 유지 가능 | |
표준화 가능 | |
장애 발생 시 회복 가능 | |
응용 프로그램 개발 비용 감소 |
발전 과정
~ 1960년 : 파일 시스템
1960년~1세대 : 네트워크 dbms(노드와 간선으로 그래프 형태를 구성해 데이터베이스를 만들어낸다.), 계층 dbms(네트워크형보다 간단하게 트리 형태로만 표현)
1~2세대 : 관계 dbms(테이블 형태)
2~3세대 : 객체 dbms(객체 지향 프로그래밍에서 객체라는 개념을 데이터 베이스에 사용한 형태), 객체관계 dbms(관계형 데이터 모델에 객체 지향 개념을 도입)
3~4세대 : NoSQL dbms(데이터베이스가 주는 안정성과 일관성 유지의 장점을 포기하고, 비정형 데이터 처리에 초점), NewSQL dbms(NoSQL 이 관계형을 완전히 대체하지 못해 등장)
데이터베이스 시스템
데이터베이스 스키마, database schema
데이터베이스에서 데이터 구조와 표현법, 자료 간의 관계를 형식 언어로 정의한 것이다.
데이터베이스의 논리적인 구조를 표현하는 것으로, 데이터가 어떤 구조로 저장되는지 나타낸다.
- 외부 스키마 : 사용자 관점의 스키마. 사용자 또는 프로그램 입장에서의 논리적 구조로 여러 개가 존재
- 개념 스키마 : 사용자와 관리자 관점의 스키마. 실제로 어떤 데이터가 저장되었으며, 데이터 간의 관계는 어떻게 되는지를 정의하는 스키마로, 전체 관점으로 하나만 존재. 접근권한, 보안 및 무결성 등에 관한 정의를 포함
- 내부 스키마 : 저장 장치와 데이터베이스 설계자 및 개발자 관점의 스키마. 개념 스키마를 물리적 장치에 구현하는 방법을 정의, 물리적 구조나 내부 레코드의 물리적 순서 등을 표현
스키마는 데이터베이스의 논리적 구조나 물리적 구조가 변해도 응용 프로그램과 데이터가 서로 영향을 주지 않고 종속되지 ㅇ낳도록 데이터 독립성을 보장한다.
- 논리적 독립성 : 외부 스키마와 개념 스키마 사이의 독립성. 응용프로그램에 영향을 주지 않고 논리적 구조를 변경
- 물리적 독립성 : 개념 스키마와 내부 스키마 사이의 독립성. 논리적 구조에 영향을 주지 않고 물리적 구조를 변경하고 관리
데이터베이스 사용자
- 데이터베이스 관리자 : 데이터 언어인 DDL, DCL을 이용해 데이터베이스를 정의, 제어
데이터베이스를 설계, 관리, 운용 및 통제하며 효율성과 경제적인 효용성을 높이기 위해 시스템 감시 및 성능 분석 - 최종 사용자(일반 사용자) : 질의어(쿼리 언어)를 통해 데이터베이스 관리 시스템에 접근
데이터 삽입, 삭제, 갱신, 검색 등의 목적으로 데이터베이스 관리 시스템 이용 - 응용 프로그래머 : C, Visual Basic 같은 호스트 프로그래밍 언어에 DML을 삽입하여 데이터베이스에 접근
데이터 언어
- 데이터 정의어(DDL) : 데이터베이스 구조, 데이터 형식, 접근 방식 등 데이터베이스를 구축하거나 수정할 목적으로 사용
논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의하고 데이터베이스 관리자나 설계자가 사용
CREATE, DROP, ALTER 명령어 - 데이터 조작어(DML) : 사용자가 데이터를 처리할 수 있게 해주는 도구로써 응용 프로그램과 dbms 간의 인터페이스 제공
SELECT, INSERT, DELETE, UPDATE 명령어 - 데이터 제어어(DCL) : 데이터 무결성, 보안 및 권한 제어, 회복 등을 하기 위한 언어
데이터를 보호하고 관리하는 목적으로 사용
COMMIT, ROLLBACK, GRANT, REVOKE 명령어
데이터 모델링
데이터 모델링
주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업으로, 일반적으로 이를 물리적인 데이터베이스 모델로 환원하여 사용자의 요구에 따라 특정 정보 시스템의 데이터베이스에 반영하는 작업을 포함한다.
데이터 모델
현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형
데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위한 개념적 도구들로 구성
구성 요소 : 개체, 속성, 관계
종류 : 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
- 연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- 데이터 구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
- 제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
관계 데이터 모델
하나의 개체에 관한 데이터를 릴레이션 하나에 담아 데이터베이스에 저장
릴레이션의 열을 속성 또는 애트리뷰트(attribute)라고 부름
릴레이션의 행을 투플(tuple)이라 부름
속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인(domain)이라고 함
관계 데이터 모델에서는 속성 값으로 더는 분해할 수 없는 원자 값만 사용
하나의 릴레이션에서 투플의 전체 개수를 릴레이션의 카디널리티(cardinality)라고 함