1.1 개요
데이터베이스는 서로 연관이 있는 데이터들의 모임.
- 데이터베이스 정의
- 작은 세계(mini-world) 또는 논의 세계(UoD)라고 부르는 실세계의 일부분을 표현.
- 어떤 특정한 의미를 가지는 데이터의 모임.
- 특정한 목적을 위해서 설계, 구축, 운용.
- 데이터베이스에 저장되는 데이터에 대한 데이터 타입, 구조, 제약조건들을 명세하는 과정
데이터
- 관찰, 수집, 측정, 실험등으로 통해 얻어진 객관적 사실이나 값.
- 알려진 사실로서 의미를 가지고 기록될 수 있다는 특성을 갖는다. (의미를 가지면서 기록될 수 있는 알려진 사실)
메타데이터
- 타겟이 되는 데이터의 내용을 확인할 수 있게 정보를 제공해주는 것.
- 데이터베이스에 대한 정보
정보
- 데이터들의 어떠한 무의미한 값
- 운영 데이터
- 어떤 기관의 고유한 목적을 달성하기 위해 수행하는 활동을 수행하는데 사용되는 모든 데이터
- 데이터베이스 관리 시스템(DBMS)
- 사용자가 데이터베이스를 생성하고 관리할 수 있도록 편리한 기능을 제공하는 프로그램들의 모임.
- Database의 생성과 관리를 담당하는 소프트웨어 패키지
- 트랜잭션
- 데이터베이스에 데이터를 저장하거나 갱신하는 단위.
- 동시성 제어의 단위.
- 동시성 제어
- 처리 도중 에러가 발생되면 그 전 작업들을 모두 취소가 된다.
- 데이터 무결성 및 일관성 보장
- 보호
- 하드웨어 또는 소프트웨어 오동작(또는 붕괴)으로부터 시스템을 보호
- 보안 위협으로부터 보호
- 유지보수
DBMS는 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 데이터베이스 시스템을 유지보수할 수 있어야 한다.
- 데이터베이스 시스템(Database System)
- 데이터베이스 접근방법
- 작은 세계(mini-world)
- 데이터베이스 구축의 대상이 되는 실세계의 일부분
1.2 데이터베이스의 예
- 대학교 정보 데이터베이스 예제 - 엔티티와 관계의 집합
1. 엔티티
- STUDENT
- COURSE
- (COURSE의) SECTION
- DEPARTMENT
- INSTRUCTOR
2. 엔티티 사이의 관계
- SECTION은 특정 COURSE에 속한다.
- STUDENT는 SECTION에 참가한다.
- COURSE는 선수 COURSE가 있다.
- INSTRUCTOR는 SECTION을 강의한다.
- COURSE는 DEPARTMENT에서 제공한다.
- STUDENT는 DEPARTMENT를 전공한다.
STUDENT(학생에 관련된 데이터)
Name |
Student_number |
Class |
Major |
Smith |
17 |
1 |
CS |
Brown |
8 |
2 |
CS |
COURSE(개설된 과목에 관한 데이터)
Course_name |
Course_number |
Credit_hours |
Department |
Intro to Computer Science |
CS1310 |
4 |
CS |
Data Structures |
CS3320 |
4 |
CS |
Discrete Mathematics |
MATH2410 |
3 |
MATH |
Database |
CS3380 |
3 |
CS |
SECTION(과목의 각 강좌에 관한 데이터)
Section_ identifier |
Course_number |
Semester |
Year |
Instructor |
85 |
MATH2410 |
Fall |
07 |
King |
92 |
CS1310 |
Fall |
07 |
Anderson |
102 |
CS3320 |
Spring |
08 |
Knuth |
112 |
MATH2410 |
Fall |
08 |
Chang |
119 | CS1310 | Fall | 08 | Anderson |
135 | CS3380 | Fall | 08 | Stone |
GRADE_REPORT(학생이 수강한 강좌의 성적)
Student_number |
Section_identifier |
Grade |
17 |
112 |
B |
17 |
119 |
C |
8 |
85 |
A |
8 |
92 |
A |
8 |
102 |
B |
8 |
135 |
A |
PREREQUISITE(각 과목의 선수과목)
Course_number |
Prerequisite_number |
CS3380 |
CS3320 |
CS3380 |
MATH2410 |
CS3320 |
CS1310 |
- 데이터베이스 설계과정
- 요구사항 명세 및 분석(requirements specification and analysis)
- 개념적 설계(conceptual design)
- 논리적 설계(logical design)
- 물리적 설계(physical design)
- 파일처리
- 사용자가 특정한 소프트웨어 응용을 위하여 필요한 파일들을 별도로 정의하고 구현.
1.3.1 데이터베이스 시스템의 자기 기술성(self-describing)
- 각 파일들의 구조, 각 데이터 항목의 타입과 저장 형식, 데이터에 대한 다양한 제약조건
- 카탈로그에 저장된 정보를 메타데이터라 부르며, 데이터베이스의 구조를 기술
1.3.2 프로그램과 데이터의 격리 및 데이터 추상화
- 프로그램과 데이터의 분리
- 데이터베이스 내의 데이터 저장 구조가 변경되어도 데이터베이스 응용 프로그램은 영향을 받지 않는 (변경될 필요가 없는) 성질 -> 데이터 독립성을 높임.
- 데이터 추상화
- 데이터 모델(data model)을 사용함으로써 저장 구조의 자세한 내용은 사용자로부터 은닉시키고 각자의 요구에 맞는 개념적인 뷰만 제공함.
- 프로그램-데이터 독립성(program-data independence)
- 데이터 파일의 구조가 응용 프로그램과 분리되어 DBMS 카탈로그에 저장
- 프로그램-연산 독립성(program-operation independence)
- 연산의 구현이 변경되어도 인터페이스가 유지되는 한 응용 프로그램은 변경할 필요가 없다.
- 사용자 응용 프로그램에서는 연산의 구현 내용을 몰라도 연산의 이름과 매개 변수들을 사용해서 연산을 호출함으로써 데이터에 대한 연산을 수행할 수 있다.
1.3.3 데이터에 대한 다중 뷰의 제공
- 사용자는 전체 데이터베이스 보다는 관심이 있는 데이터베이스의 일부를 뷰로 정의할 수 있음.
1.3.4 데이터의 공유와 다수 사용자 트랜잭션 처리
- 여러 사용자가 동일한 데이터베이스 공유 가능하도록 지원
- 동시에 사용하더라도 일관성을 보장하기 위한 동시성 제어 기능 제공
TRANSCRIPT
Student_name |
Student_transcript |
||||
Course_number |
Grade |
Semester |
Year |
Section_id |
|
Smith |
CS1310 |
C |
Fall |
08 |
119 |
MATH2410 |
B |
Fall |
08 |
112 |
|
Brown |
MATH2410 |
A |
Fall |
07 |
85 |
CS1310 |
A |
Fall |
07 |
92 |
|
CS3320 |
B |
Spring |
08 |
102 |
|
CS3380 |
A |
Fall |
08 |
135 |
(a) 학생의 성적표 뷰
STUDENT - Student_name
SECTION - Course_number | Semester
GRADE_REPORT - Grade | Section_identifier
COURSE_PREREQUISITES
Course_name |
Course_number |
Prerequisites |
Database |
CS3380 |
CS3320 |
MATH2410 |
||
Data Structures |
CS3320 |
CS1310 |
(b) 과목의 선수과목 뷰
COURSE - Course_name | Course_number
PREREQUISITE - Course_number | Prerequisite_number
1.4 데이터베이스 사용자의 분류
1.4.1 데이터베이스 관리자(Database administrator, DBA)
- 데이터베이스 시스템의 관리를 책임진 사람
1.4.2 데이터베이스 설계자(Database Designer)
- 데이터베이스 설계를 책임진 사람
1.4.3 최종 사용자
- 데이터베이스에 대하여 질의, 갱신, 보고서 작성 등을 담당하는 사람
- 캐주얼 사용자(casual end user)
- 비정기적인데이터베이스 사용자
- 정교한 질의어를 사용해 데이터를 요구하며, 대개 중상급의 관리자
- 초보 사용자(naive 또는 parametric end user)
- 미리 일정한 용도로 작성된 프로그램을 사용하는 사용자(은행 점원이나 여행사 예약 담당원 등)
- 전문 사용자(sophisticated end user)
- 엔지니어, 과학자, 비즈니스 분석가 등으로, DBMS의 고급 기능을 이용하여 복잡한 응용을 개발(구현)
- 독자적인 사용자(stand-alone end user)
- 메뉴나 그래픽 사용자 인터페이스를 제공하는 편리한 패키지를 사용하여 개인 데이터베이스를 유지하는 사용자(세금 계산을 목적으로 개인의 다양한 재정 데이터를 저장하는 세금 패키지의 사용자)
1.4.4 시스템 분석가 및 응용 프로그래머(소프트웨어 공학자)
- 초보 사용자를 위하여 잘 정의된 기능의 응용을 분석/설계하고 구현하는 사람
1.5 무대 뒤의 사람들(Database 사용자)
- DBMS 설계 및 구현자
- DBMS 소프트웨어 자체를 설계하고 구현하는 업무를 담당하는 사람들
- 도구 개발자
- 데이터베이스를 사용하는 데에 필요한 도구들(데이터베이스 설계 및 구축 도구, 성능 도구, 인터페이스 등)을 설계하고 구현하는 사람들
- 운영 및 유지 보수 요원
- 데이터베이스 시스템을 운영하는 데에 필요한 하드웨어 및 소프트웨어의 운영 및 유지 보수 담당 요원들
1.6 DBMS의 장점
- 데이터 중복이 있어선 안된다.
1.6.1 중복성의 제어
- 데이터 중복성의 제어 및 중복의 최소화
- 데이터 일치성(consistency) 보장 및 메모리 낭비 방지
1.6.2 권한이 없는 접근의 통제
- 보안 기능
- 권한없는 사용자의 데이터 접근을 통제
1.6.3 프로그램 객체를 위한 지속성 기억 공간 제공
- 프로그램 객체와 데이터 구조에 대한 지속성 기억 공간 제공
- 데이터베이스에 영구적으로 보관/저장
1.6.5 백업과 회복 제공
- 시스템 고장시에도 데이터의 일관성을 보장
1.6.6 다수의 사용자 인터페이스 제공
1.6.7 데이터 간의 복잡한 관계의 표현
1.6.8 무결성 제약조건의 시행
1.6.9 규칙을 사용한 추론과 수행
- 연역적 규칙을 이용하여 데이터베이스 저장된 사실로부터 새로운 정보를 추론
- 자동으로 수행되는 능동 규칙의 정의 및 실행
- 연역 데이터베이스 시스템(deductive database system)
- 트리거(trigger)
- 저장된 절차(stored procedure)
1.6.10 데이터베이스 사용에 함축된 또 다른 의미
- 표준 강화
- 응용 개발 시간의 단축
- 융통성
- 최신 정보의 가용성
- 규모의 경제성
- 동시성 제어 기능 제공
- 여러 사용자가 동시에 DB를 접근하여 효율적으로 처리
- 동시 접근 시에도 데이터의 손실 방지, 일관성 보장
- 데이터 독립성 제공
- 데이터베이스를 쉽게 사용할 수 있게 함, 응용 프로그램 개발이 용이
- 내부 저장 구조를 변경하기 용이, 프로그램 및 데이터베이스 유지보수가 용이
데이터 불일치와 제어된 중복: 예
GRADE_REPORT
Student_number |
Student_name |
Section_identifier |
Course_number |
Grade |
17 |
Smith |
112 |
MATH2410 |
B |
17 |
Smith |
119 |
CS1310 |
C |
8 |
Brown |
85 |
MATH2410 |
A |
8 |
Brown |
92 |
CS1310 |
A |
8 |
Brown |
102 |
CS3320 |
B |
8 |
Brown |
135 |
CS3380 |
A |
(a)
GRADE_REPORT
Student_number |
Student_name |
Section_identifier |
Course_number |
Grade |
17 |
Brown |
112 |
MATH2410 |
B |
(b)
(a) 제어된 중복성
- 성능을 위하여 GRADE_REPORT 파일에 Student_name과 Course_number를 포함시키고, 두 속성의 값이 STUDENT에서의 두 속성값과 일치하도록 DBMS가 보장함
(b) 비제어된 중복성
- 1.2 데이터베이스의 예의 STUDENT 레코드와 불일치하는 GRADE_REPORT 레코드의 예(17번 학생은 Brown이 아니라 Smith임)
1.7 데이터베이스 사용의 효과
- 표준화된 데이터 관리
- 조직 내 모든 부서에서 표준화된 문서 관리로 업무 효율성 증대
- 응용 프로그램의 개발 시간 단축
- 응용 프로그램의 상당한 부분을 DBMS가 처리함
- 데이터 구조 변경에 융통성 부여
- 데이터베이스 내의 자료 구조가 어떠한 이유로 변경되어도 사용자에 대한 영향은 거의 없음
- 항상 최신의 정보를 제공
- 사용자 중에서 한 사람의 갱신으로 나머지 사람은 즉시 변경된 값을 접근가능
- 규모의 경제성(economics of scale)
- 부서마다 다른 방식으로 자료를 관리하는 것보다 통합 DB로 관리하는 것이 전체적인 관점에서 저 비용임
1.8 Database를 사용하지 않아도 좋은 경우
- DBMS를 사용하면 비용이 높아짐
- 높은 초기 투자 비용과 추가적인 하드웨어 필요함
- 데이터의 보안, 동시성 제어, 회복, 무결성 조건 등의 기능이 필요하지 않은 응용(오버헤드가 됨)
- 언제 DBMS가 불필요한가?
- 데이터베이스와 응용이 단순하고 잘 정의되어 있으며, 변경될 가능성이 적을 경우
- DBMS 오버헤드로 인하여 엄격한 실시간 데이터 처리 요구사항을 만족시키기 힘든 경우
(최근들어 이러한 경우 실시간 DBMS 활용 가능)
- 다 사용자 데이터 접근이 필요하지 않은 경우
1.9 요약
- 용어 정의
- Database, DBMS, Database System
- 기존 화일 처리 시스템에 비하여 데이터베이스의 특징
- 카탈로그, 프로그램-데이터의 독립성, 프로그램-연산의 독립성, 데이터 추상화, 다중 뷰의 지원, 여러 트랜잭션 간의 데이터의 공유
- 데이터베이스 사용자의 분류
- 데이터베이스 관리자, 설계자, 최종 사용자, 시스템 분석가와 응용 프로그래머, DBMS 설계자 및 개발자, 데이터베이스 도구의 개발자, 운영자와 유지보수 인력
- DBMS의 기능들
- 중복성 제어 및 권한 검사
- 프로그램 객체와 데이터 구조에 대한 지속성 기억 공간 제공
- 규칙을 사용한 추론과 수행
- 다중 사용자 인터페이스 제공
- 데이터 사이의 복잡한 관련성 표현
- 무결성 제약조건 처리, 백업과 회복 기능
- 기존 화일 처리 시스템에 비하여 데이터베이스의 장점
- 표준화 강화, 응용 개발 시간의 단축, 융통성 증가, 최신 정보를 즉시 이용, 규모의 경제성