1. 내용 요약
- 주요 내용:
- 데이터베이스 개요 및 구조
- 관계형 데이터베이스
- 질의어(SQL)
- 데이터베이스 설계(ER 다이어그램)
- 데이터베이스 프로그래밍
2. 데이터베이스 개요
2.1 데이터베이스의 정의
- Database란: 관련있는 데이터의 집합으로 ‘실세계의 일부분’을 표현한 것. 의미를 가지면서 기록될 수 있는 사실들의 모임.
- 현대 사회와 데이터베이스: 은행, 호텔 예약, 도서관 카탈로그, 온라인 쇼핑, 수강신청 등 다양한 분야에서 데이터베이스가 사용됨.
2.2 데이터베이스의 발전 과정
- 1970~1990: 관계형 데이터베이스의 등장 (테이블 구조 기반).
- 1990~2010: 멀티미디어 데이터베이스와 데이터 모델 확장.
- 2010년 이후: 빅데이터 시대의 도래. NoSQL과 같은 새로운 데이터베이스 기술 등장.
2.3 데이터베이스의 예시
- 기업 DB: 생산, 재무, 고객 정보 관리.
- 수강신청 DB: 학생, 과목, 강사 정보.
- 바이오 DB: 유전자, 단백질, 질병 정보.
- 여행 DB: 호텔, 항공기, 열차 정보 관리.
3. 데이터베이스의 구성 요소
3.1 데이터
- Data: 컴퓨터에 기록될 수 있는 의미 있는 사실. 예를 들어, 학사 데이터나 도서 데이터 등.
3.2 데이터베이스 시스템
- Database: 관련 있는 데이터의 모임.
- DBMS (데이터베이스 관리 시스템): 데이터베이스의 생성과 관리를 지원하는 소프트웨어.
- Database System: 데이터베이스와 이를 관리하는 DBMS, 질의 응용 프로그램의 통합 시스템.
4. 데이터베이스 설계
4.1 개체(Entity)와 관계(Relationship)
- 개체: 독립된 정보 단위 (예: 학생, 과목, 강사).
- 관계: 개체들 사이의 연관성 정보 (예: 학생은 수강신청을 하고, 교수는 강의를 한다).
4.2 ER 다이어그램
- ER 다이어그램: 개체와 그들 간의 관계를 시각적으로 표현하는 도구. 이는 데이터베이스 구조를 설계하는 중요한 단계로서, 개체와 관계를 정의함.
5. 데이터베이스 질의 및 갱신
5.1 질의 (Query)
- 질의의 예: 특정 학생의 성적 조회, 특정 학기 강좌를 수강한 학생들의 정보 조회, 데이터베이스 과목의 선수 과목 검색 등.
5.2 갱신 (Update)
- 갱신의 예: 새로운 강좌 개설, 수강신청 정보 삭제, 학생 정보 수정 등.
5.3 인덱스 사용
- 검색 속도 향상: 검색이 오래 걸릴 경우 인덱스를 사용하여 검색 성능을 최적화함.
6. 데이터베이스와 파일 시스템의 차이점
- 데이터베이스: 여러 사용자가 실시간으로 데이터를 공유할 수 있음. 데이터 중복 방지, 최신 상태 유지, 접근 권한 제어, 복구 기능 제공.
- 파일 시스템: 데이터 공유가 불편하고 중복성이 발생하며, 변경된 데이터를 다시 전송해야 하는 불편함이 있음.
7. 데이터베이스의 특징
7.1 Self-Description
- 메타 데이터: 데이터베이스는 자체 구조와 제약 조건에 대한 정보를 포함함 (메타 데이터).
- 데이터 독립성: 저장 구조가 변경되더라도 응용 프로그램은 최소한의 영향을 받음.
- 하나의 DBMS는 여러 데이터베이스를 생성하고 관리할 수 있음.
7.2 데이터 추상화
- 사용자에게는 데이터가 테이블 형식으로 제공되며, 실제 저장 구조는 추상화되어 숨겨짐.
7.3 다양한 뷰
- DBMS는 하나의 데이터베이스를 다양한 형태로 제공할 수 있으며, 이를 통해 사용자는 필요에 맞는 뷰를 정의할 수 있음.
8. 데이터베이스 공유와 동시성 제어
8.1 데이터베이스 공유
- 데이터는 한 번만 저장되고 여러 응용 프로그램에서 이를 공유함으로써 중복을 방지하고 최신성을 유지함.
8.2 동시성 제어
- 동시성 제어: 여러 사용자가 동시에 데이터에 접근할 때 데이터의 일관성을 유지하기 위한 기능. 예를 들어, 항공 예약 시스템에서 동일한 좌석을 두 명이 동시에 예약하는 문제를 해결함. 온라인 트랜젝션 처리 (OLTP)라고도 함
8.3 트랜잭션
- 트랜잭션: 데이터베이스에서 원자성과 고립성을 보장하는 작업 단위.
9. 데이터베이스 사용자
9.1 데이터베이스 관리자(DBA)
- 데이터베이스 시스템의 관리와 운영을 책임지는 사람.
9.2 데이터베이스 설계자
- 데이터베이스의 구조와 관계를 설계하는 전문가.
9.3 최종 사용자
- 캐주얼 사용자: 비정기적인 사용자.
- 초보 사용자: 미리 정의된 프로그램을 사용하는 사용자 (예: 은행 직원, 여행사 예약 담당자).
- 전문 사용자: 복잡한 응용 프로그램을 개발하는 사용자.
9.4 시스템 분석가/응용 프로그래머
- 최종 사용자를 위한 응용 프로그램을 설계하고 구현하는 사람들.
10. DBMS의 장점
10.1 중복성 제어
- 데이터 중복을 방지하고, 데이터 일관성을 유지하며 저장 공간을 효율적으로 사용.
10.2 권한 관리
- 사용자의 데이터베이스 접근을 제어하는 기능. 로그인을 통해 데이터 접근 권한을 관리하고, 필요한 경우 권한을 부여하거나 회수할 수 있음.
10.3 데이터 무결성 유지
- 데이터베이스는 무결성 제약 조건을 설정하여 비정상적인 데이터 입력을 방지함 (예: 나이가 70세 이상인 학생 데이터 입력 방지).
10.4 효율적인 질의 처리
- 대규모 데이터를 빠르게 검색하고 처리할 수 있는 인덱싱 기법 제공.
11. DBMS 사용의 단점과 필요하지 않은 경우
11.1 DBMS의 단점
- 초기 투자 비용이 높고, 추가 하드웨어가 필요할 수 있음.
- 단순한 응용 프로그램에는 불필요한 오버헤드가 발생할 수 있음.
11.2 DBMS가 필요하지 않은 경우
- 데이터베이스 구조가 단순하고 변경 가능성이 적은 경우.
- 실시간 처리 요구가 엄격한 경우.
- 다수의 사용자가 데이터에 접근할 필요가 없는 경우.
12. 데이터베이스 응용 분야
- 80년대: 인사, 재무, 물류, 영업 등의 비즈니스 데이터 관리.
- 90년대: 공간 데이터베이스, 설계 데이터베이스, 문서 데이터베이스.
- 2000년대: 생명공학 데이터베이스, 빅데이터를 위한 NoSQL 및 인메모리 DBMS 등장.
댓글