01 데이터베이스와 데이터베이스 시스템
1. 데이터, 정보, 지식
데이터: 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값
정보: 데이터에 의미를 부여한 것
지식: 사물이나 현상에 대한 이해
2. 데이터베이스의 활용
데이터베이스는 일상생활의 거의 모든 곳에서 생성됨
- 학생 데이터 → 학사 데이터베이스
- 신용카드 데이터 → 은행 데이터베이스
- 병원 데이터 → 각각병원 데이터베이스
- 쇼핑몰 데이터 → 쇼핑몰 데이터베이스
- 문헌 정보 데이터 → 도서관 데이터베이스
검색·변경 빈도에 따른 데이터베이스 유형
| 유형 | 검색 빈도 | 변경 빈도 | 특징 |
|---|
| 유형 1 | 적다 | 적다 | 검색이 많지 않아 데이터베이스를 구축할 필요 없음 |
| 유형 2 | 많다 | 적다 | 사용자 수 보통, 검색은 많지만, 데이터에 대한 변경은 적음 |
| 유형 3 | 적다 | 많다 | 예약 변경/취소 등 데이터 변경은 많지만, 검색은 적음 |
| 유형 4 | 많다 | 많다 | 사용자 수 많음, 검색도 많고, 거래로 인한 변경도 많음 |
3. 데이터베이스의 개념 및 특징
데이터베이스 개념
여러 사람이 공용으로 사용하기 위해 통합하고 저장한 운영 데이터의 집합
- 통합된 데이터(integrated data)
- 저장된 데이터(stored data)
- 운영 데이터(operational data)
- 공용 데이터(shared data)
데이터베이스 특징
- 실시간 접근성(real time accessibility): 데이터베이스는 실시간으로 서비스된다.
- 계속적인 변화(continuous change): 데이터 값은 시간에 따라 항상 바뀐다.
- 동시 공유(concurrent sharing): 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유된다.
- 내용에 따른 참조(reference by content): 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조된다.
4. 데이터베이스 시스템의 구성
각 조직에서 사용하던 데이터를 통합하고 공유할 때 생기는 장점을 이용하는 시스템
구성: 데이터베이스 관리 시스템(DBMS), 데이터베이스, 데이터 모델
02 데이터베이스 시스템의 발전
1. 정보기술과 데이터베이스 시스템의 발전
마당서점의 성장 과정과 정보통신기술의 발전
| 단계 | 시기 | 정보통신기술 | 주요 특징 |
|---|
| 1단계 마당서점 | 1970년대 | 없음 | 사장이 모든 도서의 제목과 가격을 기억함, 매출과 판매가 컴퓨터 없이 관리됨 |
| 2단계 초기 전산화 | 1980년대 | 컴퓨터 | 컴퓨터를 이용한 초기 응용 프로그램으로 업무를 처리함, 파일 시스템을 사용함 |
| 3단계 데이터베이스 구축 | 1990년대 | 컴퓨터+원격통신 | 지점 간 클라이언트/서버 시스템을 도입하여 업무를 처리함, 데이터베이스 관리 시스템(DBMS)을 도입함 |
| 4단계 홈페이지 구축 | 2000년대 | 컴퓨터+인터넷 | 인터넷을 이용하여 도서 검색 및 주문함, 웹 DB 시스템으로 불특정 다수 고객을 유치함 |
| 5단계 인터넷 쇼핑몰 | 2010년대 이후 | 컴퓨터+인터넷+스마트폰 | 도서뿐 아니라 음반, 액세서리, 문구, 공연 티켓까지 판매하는 인터넷 쇼핑몰로 확대함 |
2. 정보 시스템의 발전
데이터 처리 관점에서 살펴본 기업 정보 시스템의 발전 과정
- 파일 시스템 → 2. 데이터베이스 시스템 → 3. 웹 데이터베이스 시스템 → 4. 분산 데이터베이스 시스템
정보 시스템의 발전 과정을 기업의 업무 환경과 연계하여 정리
- 소매상(상세 시스템) (1970년대): 정보 시스템 없음, 수작업으로 회계 업무 수행
- 소기업(파일 시스템) (1980년대): 파일 시스템 사용, 파일을 이용한 응용 프로그램으로 업무 처리
- 중견기업(데이터베이스) (1990년대): 정보 시스템, 데이터베이스 시스템 사용, DBMS를 이용하여 업무 처리, 정보 공유, 실시간 서비스, LAN 기술
- 대기업(인터넷 통신) (2000년대): 정보 시스템, 웹 데이터베이스 시스템, 인터넷 사용, 인터넷 쇼핑몰을 개설하여 온라인 상거래 실시, 실시간 서비스, 웹 브라우저 기술
- 종합그룹(인터넷 통신) (2010년대 이후): 정보 시스템, 분산 데이터베이스 시스템, 인터넷 사용, 고객 서비스 및 내부 업무를 인터넷으로 처리, 대규모 응용 시스템에 사용
03 파일 시스템과 DBMS
1. 마당서점 데이터를 저장하는 방법
프로그램 1: 데이터를 프로그램 내부에 저장하기
- C 언어의 구조체 BOOK을 먼저 선언하고 main() 프로그램에서 구조체 배열 변수 BOOKS[]에 데이터를 저장
- 도서 데이터는 프로그램 내 구조체 변수에 저장됨
문제점: 새로운 데이터가 생길 때마다 프로그램을 수정한 후 다시 컴파일하고, 새로 컴파일된 프로그램을 실행시켜야 함
프로그램 2: 데이터를 파일에 저장하기
- BOOK 데이터 구조를 먼저 선언하고 main() 프로그램에서 파일로부터 데이터를 불러와 구조체 배열 변수 BOOKS[]에 저장
- 새로운 도서가 입고되면 '도서등록하기' 화면에서 도서 정보를 입력 받아 파일에 저장
문제점: 저장하는 데이터의 구조가 변경되면 컴파일을 다시 해야 함, 같은 파일을 두 개의 프로그램이 공유함으로써 발생하는 문제가 있음
프로그램 3: 데이터를 DBMS에 저장하기
- 프로그램에서 데이터를 불러올 때는 EXEC SQL이라는 별도의 명령어를 이용하여 DBMS에 호출함
- DBMS는 데이터를 정의하고 데이터를 관리하는 사용자 인터페이스를 따로 제공함
2. 마당서점 데이터의 저장 방법 비교
프로그램 1 구조
- 프로그램에 데이터 정의와 데이터 값을 모두 포함하는 방식
- 프로그램에 BOOK 데이터 구조를 정의하고 데이터 값도 직접 변수에 저장함
- 데이터 구조 혹은 데이터 값이 바뀌면 프로그램을 다시 컴파일해야 함
프로그램 2 구조
- 파일에 데이터 값, 프로그램에 데이터 정의를 포함하는 방식
- 프로그램에 BOOK 데이터 구조만 정의하고, 데이터 값은 book.dat라는 파일에 저장함
- 데이터 값이 바뀌면 프로그램에 변경이 없지만, 데이터 구조가 바뀌면 프로그램을 다시 컴파일해야 함
프로그램 3 구조
- DBMS가 데이터 정의와 데이터 값을 관리하는 방식
- BOOK 데이터 구조는 DBMS가 관리하고, 데이터 값은 데이터베이스에 저장함
- 데이터 구조가 바뀌거나 데이터 값이 바뀌어도 프로그램을 다시 컴파일할 필요가 없음
3. 파일 시스템과 DBMS의 비교
파일 시스템과 DBMS 비교표
| 구분 | 파일 시스템 | DBMS |
|---|
| 데이터 정의 | 응용 프로그램 | DBMS |
| 데이터 저장 | 파일 시스템 | 데이터베이스 |
| 데이터 접근 방법 | 응용 프로그램이 파일에 직접 접근함 | 응용 프로그램이 DBMS에게 파일 접근을 요청함 |
| 사용 언어 | 자바, C++, C 등 | 자바, C++, C 등과 SQL |
| CPU/주기억장치 사용 | 적음 | 많음 |
DBMS의 장점
| 장점 | 설명 |
|---|
| 데이터 중복 최소화 | DBMS를 이용하여 데이터를 공유하므로 중복 가능성이 낮음 |
| 데이터 일관성 유지 | 중복 제거로 데이터의 일관성이 유지됨 |
| 데이터 독립성 유지 | 데이터 정의와 프로그램 간의 독립성을 유지할 수 있음 |
| 관리 기능 제공 | 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 등을 수행함 |
| 프로그램 개발 생산성 향상 | 짧은 시간에 큰 프로그램을 개발할 수 있음 |
| 기타 | 데이터 무결성 유지, 데이터 표준 준수가 용이함 |
04 데이터베이스 시스템의 구성
1. 데이터베이스 언어
SQL(Structured Query Language)의 구성
- 데이터 정의어(DDL: Data Definition Language): DBMS에 저장된 테이블 구조를 정의하는 데 사용
- 데이터 조작어(DML: Data Manipulation Language): 데이터를 검색·삽입·삭제·수정하는 데 사용
- 데이터 제어어(DCL: Data Control Language): 데이터의 사용 권한을 관리하는 데 사용
SQL의 핵심
- 데이터 조작어 중 데이터를 검색하는 질의문
- 질의문은 SELECT-FROM-WHERE 구조로 되어 있음
2. 데이터베이스 사용자
-
일반 사용자: 은행의 창구 혹은 관공서의 민원 접수처 등에서 데이터 관련 업무를 하는 사람, 응용 프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근
-
응용 프로그래머: 일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람
-
SQL 사용자: SQL을 사용해 업무를 처리하는 IT 부서의 담당자, 응용 프로그램으로 구현되지 않은 업무를 SQL을 사용해 처리
-
데이터베이스 관리자(DBA: Database Administrator): 데이터베이스 운영 조직의 데이터베이스 시스템을 총괄하는 사람
3. DBMS(Database Management System)
DBMS의 기능
| 기능 | 설명 |
|---|
| 데이터 정의 | 데이터 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행함 |
| 데이터 조작 | 데이터를 조작하는 소프트웨어(응용 프로그램)가 요청하는 데이터의 검색, 삽입, 수정, 삭제 작업을 지원함 |
| 데이터 추출 | 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출함 |
| 데이터 제어 | 데이터베이스 사용자를 생성하고 모니터링하여 접근을 제어함, 백업과 회복, 동시성 제어 등의 기능을 지원함 |
4. 데이터 모델
데이터 모델의 개념
- 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것
- 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지를 결정함
- 현재 가장 많이 사용되는 데이터 모델은 관계 데이터 모델
- 데이터 모델을 구분하는 가장 큰 기준은 데이터 간 관계를 표현하는 방법임
데이터 모델에서 관계 표현 방법
| 데이터 모델 | 관계의 표현 |
|---|
| 계층 데이터 모델 (포인터 사용) | 학생 |
| 네트워크 데이터 모델 (포인터 사용) | 학생 |
| 관계 데이터 모델 (속성값 사용) | 학생 |
| 객체 데이터 모델 (객체 식별자 사용) | 학생 |
5. 데이터베이스의 개념적 구조
3단계 데이터베이스 구조
3단계 데이터베이스 구조는 외부 단계, 개념 단계, 내부 단계로 나뉨
'스키마(schema)'는 그리스어에서 유래된 단어로 조직이나 구조를 의미
외부 단계
- 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미
- 여러 개의 외부 스키마가 있을 수 있음
개념 단계
- 전체 데이터베이스의 정의를 의미
- 통합 조직별로 하나만 존재하며 DBA(데이터베이스 관리자: Database Administrator)가 관리함
내부 단계
- 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법을 표현한 것
- 내부 스키마는 하나만 존재
- 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨
데이터 독립성
하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 하는 것
2가지 데이터 독립성
-
논리적 데이터 독립성(logical data independence): 외부 단계와 개념 단계 사이의 독립성, 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원함, 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념
-
물리적 데이터 독립성(physical data independence): 개념 단계와 내부 단계 사이의 독립성, 저장 장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원함