우리는 실세계에서 은행, 항공사, 대학, 도서관, 판매, 신용 카드 등을 이용하면서 항상 수많은 데이터를 다룬다. 데이터베이스는 모든 응용 소프트웨어를 건설하는 데 필수적이다.
1960년대
File Systems : OS가 관리
1960년대 후반~1970년대 : DBMS 등장
Hierarchical model: IMS(IBM), tree, 계층형, 1:M 관계
Network model: IDS(Bachman(GE)), graph, M:N 관계
Relational model: Codd (IBM, Turing Award), table(행/열)
-> 사용자 입장에서 프로그램 사용하기 쉬움
1980년대:
상업용 relational DBMS, SQL이 표준 DBMS 언어가 됨
Object-Oriented DB, Object-Relational DB 등장
1990 - 2000년대:
의사결정, Data Warehouse, and Data Mining, XML 등에 활용
최근:
NoSQL: 빅데이터
Data
Database
Database Management System (DBMS)
: 데이터베이스를 저장하고 관리하는 소프트웨어 패키지
ex) Oracle, MySQL (Oracle), DB2 (IBM), SQL Server (MS), Sybase (SAP)
Database System : Database + DBMS
데이터 추상화 어려움
: 사용자들은 그들의 응용 프로그램에 데이터베이스의 물리 구조를 명시해야 함
데이터/프로그램 의존성 문제
: 사용자 응용 프로그램은 디스크에 저장된 데이터베이스의 물리적 구조에 의존적임
데이터 중복 문제
: 저장 공간 낭비, 데이터 불일치
데이터 무결성 어려움
무결성 제약(결함이 없도록 해 주는 제약 조건)을 따르고 확인해야 함
Database = Schema + Instance
Schema(Intension) : DB의 구조와 제약, DB 설계할 때 명시, 거의 안 바뀜
Instance(Extension) : DB의 내용, 동적으로 변함
DBMS Catalog(Metadata, Data dictionary) : DB에 대한 설명, DBMS와 DB구조에 대한 정보가 필요한 DB 사용자들에 의해 참조됨
DDL(Data Definition Language) : schema, table, views 정의
ex) CREATE, DROP, ALTER
DML(Data Manipulation Language) : Retrieve and modify database instances
ex) SELECT, INSERT, DELETE, UPDATE
ANSI:미국 표준
DBMS의 데이터는 3레벨의 schema로 설명
Physical Schema
데이터베이스의 내부 저장 구조 설명(How data is stored physically?)
Conceptual schema
사용자 그룹을 위한 데이터베이스의 개념 구조 설명(What is meaning of (whole) data?)
External schemas (= Views)
특정 사용자의 필요에 따라 데이터베이스의 일부 설명(What is use of (partial) data?)
Database Administrator (DBA)
Database Designer
Application Programmer
Casual end user
Naïve end user