데이터를 구조화하고 연결시키는 기능 제공
테이블, 레코드, 필드 등의 개념을 사용하여 데이터를 구성하고, 데이터를 효율적으로 관리하고 검색 가능
데이터베이스 시스템을 사용하면 데이터의 일관성, 무결성, 안전성을 유지하며 복잡한 데이터 조작 작업을 간편하게 수행 가능
조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합됨
데이터베이스의 구조는 사용되는 데이터 모델에 의해 결정됨
데이터의 대규모 저장소로서, 여러 사용자에 의해 동시에 사용됨
모든 데이터가 중복을 최소화하면서 통합됨
운영 데이터뿐만 아니라 그 데이터에 관한 설명까지 포함
프로그램과 데이터 간의 독립성이 제공됨
효율적으로 접근이 가능하고 질의를 할 수 있음
데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등 작업을 수행하는 소프트웨어
ex) DB : MongoDB, DBMS : MongoDB 컴퍼스(질의 생성, 리포트 생성하는 등 데이터를 정의할 수 있는 동작을 하는 관리시스템)
전체적인 데이터베이스 구조를 뜻하며 자주 변경되지 않음
데이터베이스의 모든 가능한 상태를 미리 정의
ex) 사람 데이터는 이름, 키, 몸무게, MBTI 필드를 가짐
ex) DEPARTMENT 데이터는 DEPTNO, DEPTNAME, FLOOR 필드를 가짐
ex) EMPLOYEE 데이터는 EMPNO, EMPNAME, TITLE, DNO, SALARY 필드를 가짐
특정 시점의 데이터베이스의 내용을 의미하며, 시간이 지남에 따라 계속해서 바뀜
데이터베이스에 수정이 일어날 때마다 상태가 바뀜
개발팀의 층수가 변하거나 없어졌을 때 수정이나 삭제가 발생할 것이고 그럴때마다 데이터베이스의 상태가 바뀌게 됨
###데이터베이스 시스템(DBS : Database System)
조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임
시스템 카탈로그(또는 데이터 사전, data dictionary)와 저장된 데이터베이스로 구분할 수 있음
시스템 카탈로그(System Catalog)는 저장된 데이터베이스의 스키마 정보를 유지
데이터베이스 언어라고 부르는 특별한 프로그래밍 언어를 한 개 이상 제공
SQL은 여러 DBMS에서 제공되는 사실상의 표준 데이터베이스 언어
기능
디스크와 같은 보조 기억 장치에 저장되며, DBMS에서 원하는 정보를 찾기 위해서는 디스크의 블록들을 주기억 장치로 읽어들여야 함
계산이나 조합 및 비교 연산들을 수행하기 위해 중앙 처리 장치가 사용됨
DBMS 자체도 주기억 장치에 적재되어 실행되어야 함
데이터가 많은 파일에 중복해서 저장됨
다수의 사용자들을 위한 동시성 제어가 제공되지 않음
검색하려는 데이터를 쉽게 명시하려는 질의어가 제공되지 않음
보안 조치가 미흡
회복 기능이 없음
프로그램-데이터 독립성이 없으므로 유지보수 비용이 많이 소요됨
파일을 검색하거나 갱신하는 절차가 상대적으로 복잡하기 때문에 프로그래머의 생산성이 낮음
기업의 인사 관리 응용 프로그램에 사용되는 EMPLOYEE 화일과 사원 교육 관리 응용 프로그램에서 사용되는 EMPLOYEE 화일에 DEPARTMENT가 중복되어 나타날 수 있음
어떤 사원의 DEPARTMENT 필드 값이 바뀔 때 두 화일에서 모두 수정하지 않으면 동일한 사원의 소속 부서가 화일마다 다르게 되어 데이터의 불일치 발생
스키마 정의를 통해
중복성과 불일치가 감소
표준화를 시행하기가 용이
조직체의 요구사항을 식별 가능
관리도구를 통해
시스템을 개발하고 유지하는 비용이 감소됨
보안이 향상됨
무결성이 향상됨
다양한 유형의 고장으로부터 데이터베이스를 회복할 수 있음
데이터베이스의 공유와 동시 접근이 가능
추가적인 하드웨어 구입 비용이 들고, DBMS 자체의 구입 비용도 상당히 비쌈
직원들의 관리도구 사용법 교육 비용 많이 소요됨
비밀과 프라이버시 노출 등의 단점이 존재할 수 있음
⚠️ DBMS를 적용하면 안되는 경우
- 초기의 투자 비용이 너무 클 때
- 오버헤드가 너무 클 때
- 응용이 단순하고 잘 정의되었으며 변경되지 않을 것으로 예상될 때
- 엄격한 실시간 처리 요구사항이 있을 때
- 데이터에 대한 다수 사용자의 접근이 필요하지 않을 때
트리 구조를 기반으로 하는 계층 데이터 모델을 사용한 DBMS
계층 데이터 모델은 네트워크 데이터 모델의 특별한 사례
장점
단점
어떻게 데이터를 접근하는가를 미리 응용 프로그램에 정의해야 함
데이터베이스가 생성될 때 각각의 관계를 명시적으로 정의해야 함
레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움
네트워크 구조 형태 같은 거미줄 형태의 데이터베이스 구성
레코드들이 노드로, 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 데이터 모델을 사용
네트워크 DBMS에서도 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움
가장 많이 사용
모델이 간단하여 이해하기 쉬움
사용자는 자신이 원하는 것(what)만 명시하고, 데이터가 어디있는지, 어떻게 접근해야 하는지는 DBMS가 결정
ex) MS SQL Server, Oracle, Sybase, DB2, MySQL
객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델
데이터와 프로그램을 그룹화하고, 복잡한 객체들을 이해하기 쉬우며, 유지와 변경이 용이
ex) ONTOS, OpenODB, GemStone, ObjectStore, O2 등
DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델이 제안됨
ex) 오라클, Informix, Universal Server 등
Data Definition Language
사용자는 데이터 정의어를 사용하여 데이터베이스 스키마를 정의
데이터 정의어로 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그 또는 데이터 사전에 저장
데이터 정의어의 기본적 기능
- 데이터 모델에서 지원하는 데이터 구조를 생성
- ex) SQL에서 CREATE TABLE
- 데이터 구조의 변경
- ex) SQL에서 ALTER TABLE
- 데이터 구조의 삭제
- ex) SQL에서 DROP TABLE
- 데이터 접근을 위해 특정 애트리뷰트 위에 인덱스를 정의
- ex) SQL에서 CREATE INDEX
Data Manipulation Language
사용자는 데이터 조작어를 사용하여 데이터베이스 내의 원하는 데이터를 검색하고, 수정하고, 삽입하고, 삭제
절차적 언어(procedural language)와 비절차적 언어(non-procedural language)
관계 DBMS에서 사용되는 SQL은 대표적인 비절차적 언어
대부분의 데이터 조작어는 SUM, COUNT, AVG와 같은 내장 함수들을 갖고 있음
데이터 조작어는 단말기에서 대화식으로 입력되어 수행되거나 C, 코볼 등의 고급 프로그래밍 언어로 작성된 프로그램에 내포되어 사용됨
데이터 조작어의 기본적 기능
- 데이터의 검색
- ex) SQL에서 SELECT
- 데이터의 수정
- ex) SQL에서 UPDATE
- 데이터의 삭제 (
- ex) SQL에서 DELETE
- 데이터의 삽입
- ex) SQL에서 INSERT
Data Control Language
용자는 데이터 제어어를 사용하여 데이터베이스 트랜잭션을 명시하고 권한을 부여하거나 취소
조직의 여러 부분의 상이한 요구를 만족시키기 위해서 일관성 있는 데이터베이스 스키마를 생성하고 유지하는 사람(팀)
데이터베이스 관리자의 역할
데이터베이스 스키마의 생성과 변경