MySQL chapter 01. DBMS 개요와 MySQL 소개 // 수정
MYSQL chapter 01. DBMS 개요와 MySQL 소개
// 데이터베이스를 간단히 정의하면 '대용량의 데이터 집합을 체계적으로 구성해 놓은 것'
// 데이터베이스 관리 시스템(DBMS:Database Management System)은 이러한 데이터베이스를 관리, 운영해 주는 시스템 또는 소프트웨어를 일컫는다.
// MYSQL은 이 DBMS 소프트웨어의 일종으로 Oracle사에서 제작한 툴이다.
// 데이터베이스는 여러 명의 사용자나 응용프로그램이 공유하고 동시에 접근이 가능해야 한다.
// 데이터베이스는 '데이터의 저장공간' 그 자체를 의미하기도 한다,
특히 MYSQL에서는 ' 데이터베이스'를 자료가 저장되는 디스크 공간(주로 파일로 구성됨)으로 취급한다
이 책에서는 :
데이터베이스는 '데이터의 집합' 또는 '데이터의 저장공간'으로 다룰것이며
DBMS는 데이터베이스를 운영하는 '소프트웨어'를 의미하는 것으로 하겠다.
1.1 DBMS 개요
1.1.1 데이터베이스의 정의와 특징
* DBMS 또는 데이터베이스의 특징
- 데이터의 무결성
// 데이터베이스 안의 데이터는 어떤 경로를 통해 들어 왔던지 데이터에 오류가 있어서는 안 된다.
// 이 무결성을 위해서 데이터베이스 제약 조건이라는 특성을 가진다.
- 데이터의 독립성
// 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용프로그램은 전혀 영향을 받지 않아야한다. 즉, 서로 의존적 관계가 아닌 독립적인 관계이여야 한다
- 보안
// 데이터베이스 안의 데이터에 아무나 접근할 수 있는 것이 아니라 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있어야한다.
// 또, 접근할 때도 사용자의 계정에 따라서 다른 권한을 가져야한다.
- 데이터 중복의 최소화
// 동일한 데이터가 여러 개 중복되어 저장되는 것을 방지한다
- 응용프로그램 제작 및 수정이 쉬워짐
// 기존 파일시스템을 사용할 때는 각각 파일의 포맷에 맞춰 개발해야 하는 응용프로그램을 데이터베이스를 이용함으로써
통일된 방식으로 응용프로그램 작성이 가능해지고, 유지보수 또한 쉬워진다.
- 데이터 안전성 향상
// 대부분의 DBMS가 제공하는 백업, 복원 기능을 이용함으로써, 데이터가 깨지는 문제가 발생할 경우에 원상으로 복원 또는 복구하는 방법이 명확해진다.
1.1.2 데이터베이스의 발전
// 초창기의 컴퓨터에는 데이터베이스라는 개념이 없었을 것이다.
다음과 같이 몇 가지 단계를 거쳐 데이터베이스를 사용하게 되었다.
- 오프라인으로 관리
- 파일시스템의 사용
// 파일시스템에는 대개 하나의 응용프로그램마다 하나의 데이터 파일이 할당된다.
// 즉, 어떤 기능을 구현하기 위해서 기능의 개수만큼 데이터 파일의 숫자가 생겨야 할 것이다.
// 초기에는 큰 문제가 없을 수도 있지만, 시간이 지나서 데이터의 양이 많아지면 데이터의 중복으로 인한 불일치가 발생한다
// 불일치가 파일시스템의 큰 문제점 중 한 가지이다.
// 그러나, 이러한 문제점에도 불구하고 파일 시스템은 소량의 데이터를 처리하기에는 처리 속도가 DBMS보다 훨씬 더 빠르며 별도의 추가 비용이 들지 않기에 아직도 많이 사용된다.
- 데이터베이스 관리시스템
// 파일시스템의 단점을 보완하고 대량의 데이터를 보다 효율적으로 관리하고 운영하기 위해서 사용되기 시작한 것이 DBMS(DBMS:Database Management System)다.
// DBMS는 데이터의 집합인 '데이터베이스'를 잘 관리하고 운영하기 위한 시스템 또는 소프트웨어를 말한다.
// DBMS에 데이터를 구축하고 관리하고 활용하기 위해서 사용되는 언어가 SQL(Structured Query Language)이다.
// 이 SQL을 사용해서 우리가 DBMS를 통해 중요한 정보들을 입력하고 관리하고 추출할 수 있다.
1.1.3 DBMS 분류
// DBMS의 유형은 크게
1. 계층형(Hierarchical) DBMS,
2. 망형(Network) DBMS,
3. 관계형(Relational) DBMS,
4. 객체지향형(Object-Oriented) DBMS,
5. 객체관계형(Object-Relational) DBMS 등으로 분류된다.
// 현재 사용되는 DBMS 중에서는 3.관계형 DBMS가 가장 많은 부분을 차지하며,
// 일부 멀티미디어 분야에서 4.객체지향형 DBMS이나 5.객체관계형 DBMS가 활용되고 있는 추세이다.
// 우리가 배울 MYSQL과 더불어 Oracle, DB2, SQL Server, Access 등은 모두 관계형 DBMS이므로,
// 이 책에서 다루게 되는 내용도 모두 관계형 DBMS(RDBMS)를 기준으로 맞추었다.
1. 계층형 DBMS
// 처음 나온 DBMS 개념으로 각 계층은 트리형태를 가지며 1:N 관계를 갖는다.
// 계층형 DBMS의 문제는 처음 구축한 이후에는 그 구조를 변경하기가 상당히 까다롭다는 것이다.
// 또, 주어진 상태에서의 검색은 상당히 빠르지만, 접근의 유연성이 부족해서 임의의 검색에는 어려움이 따른다.
- 관계형 DBMS(RDBMS)
// RDBMS의 핵심은
// '데이터베이스는 테이블(table)이라' 불리는 최소 단위로 구성되어 있고, 이 테이블은 하나 이상의 열로 구성되어 있다.'
// 관계형 DBMS에서 모든 데이터는 테이블에 저장되므로, 테이블이라는 구조가 RDBMS의 가장 기본적이고 중요한 구성이된다.
// 테이블은 데이터를 효울적으로 저장하기 위한 구조이다.
// 정보를 저장하기 위해서 하나의 테이블이 아닌 여러 개의 테이블로 나누어서 저장함으로써 불필요한 공간의 낭비를 줄이고 데이터의 저장의 효율성을 보장해 줄 수 있따.
// 또 이렇게 나뉜 테이블의 관계를 기본 키(Primary Key)와 외래 키(Foreign Key)를 사용해서 맺어 줌으로써, 두 테이블을 부모와 자식의 관계로 묶어 줄 수 있다.
1.1.4 SQL 개요
// SQL(Stuctured Query Language)은 관계형 데이터베이스에서 사용되는 언어로 '에스큐엘' 또는 '시퀄'로 읽는다
// SQL이 비록 데이터베이스를 조작하는 '언어'이지만 일반적인 프로그래밍 언어와는 좀 다른 특성을 가진다
- DBMS 제작 회사와 독립적이다
- 다른 시스템으로 이식성이 좋다
- 표준이 계속 발전한다
- 대화식 언어이다
- 분산형 클라이언트/서버 구조이다