[목차]
- DB(DataBase, 데이터베이스)
- DBMS 분류
- 망형 데이터베이스(Network Database)
- 계층형 데이터베이스(Hierarchical Database)
- 관계형 데이터베이스(Relational Database)
- 객체 - 관계형 데이터베이스(Object-Relational Database)
- 객체 - 지향형 데이터베이스(Object-Oriented Database)
- SQL(Structured Query Language) 개요
• DB(DataBase, 데이터베이스)
데이터베이스는 '데이터의 집합'이며 이를 관리하는 시스템을 DBMS(DataBase Management System)라고 한다.
DBMS는 데이터베이스를 관리/운영하는 역할을 한다. 이는 정보의 중복을 줄이고, 효율적인 검색과 업데이트가 가능하도록 하는 역할을 의미한다.
또한, 여러 명의 사용자나 응용프로그램이 공유하고 동시에 접근이 가능해야 한다.
DBMS에 데이터를 구축하고 관리하고 활용하기 위해서 사용되는 언어가 SQL이다.

DBMS에는 여러가지 종류가 있다.
[DBMS 종류]
| DBMS | 제작사 | 운영체제 | 기타 |
| MariaDB | MariaDB | Unix, Linux, Windows | 오픈 소스(무료) |
| MySQL | Oracle | Unix, Linux, Windows, Mac | 오픈 소스(무료) or 상용 |
| PostgreSQL | PostgreSQL | Unix, Linux, Windows, Mac | 오픈 소스(무료) |
| Oracle | Oracle | Unix, Linux, Windows | 상용 (시장 점유율 1위) |
| SQL Server | MS | Windows | |
| DB2 | IBM | Unix, Linux, Windows | 메인 프레임 시장 점유율 1위 |
| Access | MS | Windows | PC용 |
| SQLite | SQLite | Android, IOS | 모바일 전용, 오픈 소스(무료) |
DBMS의 특징
1. 중복제거
데이터베이스는 동일한 데이터를 여러 번 저장하는 것을 방지한다.
이는 공간 절약과 데이터의 일관성을 유지하는 데 도움이 된다.
2. 효율적인 검색
데이터베이스는 복잡한 질의를 빠르게 처리할 수 있다. 이를 위해 인덱싱, 쿼리 최적화 등의 기술이 사용된다.
3. 데이터 무결성
데이터베이스 안에 있는 데이터는 오류가 있어서는 안 된다. 그렇기 때문에 무결성을 위해 '제약조건(Constraint)'이라는 특성을 가진다.
예를 들어서 우리가 주민등록증을 통해 어떤 문서를 조회할 때 중복이 있어서는 안되는 것처럼 중복 방지의 제약 조건 등을 통해 정확한 데이터를 찾을 수 있다는 것이다. 그 외에도 여러 제약 조건이 있을 수 있다.
4. 데이터 일관성 유지
데이터 베이스는 '트랜잭션' 이라는 개념을 통해 데이터의 일관성을 유지한다. 이는 여러 작업이 동시에 이루어질 때에도 데이터가 일관된 상태를 유지하도록 한다.
트랜잭션이란?
데이터베이스에서 하나 이상의 작업 단위를 의미한다.
이 작업들은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)이라는 ACID 속성을 갖는다.
원자성 트랜잭션 내의 모든 작업이 성공적으로 완료되어야만 전체 트랜잭션이 성공으로 간주. 하나라도 실패하면, 롤백을 통해 원래 상태로 복구된다. 일관성 트랜잭션이 실행되기 전과 후 데이터베이스는 항상 일관된 상태를 유지해야 한다.
예를 들어, 외래 키 제약 조건이나 고유한 값의 중복을 방지하는 등의 규칙 적용격리성 여러 트랜잭션이 동시에 실행될 때 각각의 트랜잭션은 다른 트랜잭션의 작업에 영향을 받지 않아야 한다. 지속성 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 한다.
5. 확장성
데이터베이스는 많은 양의 데이터를 저장하고 처리할 수 있으며, 시스템의 성능을 향상시키기 위해 분산 데이터베이스 등의 기술을 사용할 수 있다.
6. 보안
데이터베이스는 데이터에 대한 접근을 제어하고 보호하는 기능을 제공한다. 데이터를 소유한 사람, 데이터 접근이 허가된 사람많이 데이터에 접근할 수 있다. 이는 권한 관리, 암호화 등 다양한 방법으로 이루어진다.
7. 데이터 공유 및 통합
여러 사용자와 애플리케이션 간에 데이터를 쉽게 공유하고 통합할 수 있다.
8. 백업 및 복구
데이터베이스는 데이터 손실을 방지하기 위해 백업과 복구 기능을 제공한다. 이를 통해 중요한 데이터를 안전하게 보호할 수 있다.
• DBMS 분류
망형 데이터베이스(Network Database)
데이터를 복잡한 네트워크 형태로 저장한다. 각 레코드(행)는 다른 레코드와 여러 개의 관계를 가질 수 있다.
구조는 부모 - 자식 또는 형제 - 형제 관계를 가지며, 이들 간의 연결을 통해 데이터를 구현한다.
항공편 예약이나 도서관 시스템 등이 예시로 있지만 구현하기 어렵고 복잡하기 때문에 관계형 데이터베이스를 더 많이 사용한다.
계층형 데이터베이스(Hierarchical Database)
데이터를 계층(트리) 구조로 저장한다. 각 레코드(행)는 부모 - 자식 관계를 가지며, 이들 간의 연결을 통해 데이터를 조직한다. 하나의 레코드가 여러 개의 자식 레코드를 가질 수 있으며, 계층 구조로 데이터를 표현한다.
가계도, 조직도 또는 파일 구조에 대한 표현을 할 때 사용된다.
단순한 계층적인 관계를 효율적으로 처리할 수 있으며, 성능이 우수하다.
하지만 다대다의 관계 표현에 제약이 있어 복잡한 데이터 모델링이 어려울 수 있다.
관계형 데이터베이스(Relational Database)
데이터를 테이블 형태로 저장하며, 각 테이블 간의 관계를 통해 데이터를 조직한다.
테이블은 행(레코드)과 열(칼럼 또는 필드)로 구성되며, 기본 키와 외래 키를 사용하여 레코드 간의 관계를 정의한다.
대부분의 데이터베이스는 관계형 데이터베이스를 위주로 사용하며 MySQL, Oracle 등도 관계형 데이터베이스이다.
데이터 모델링이 직관적이고 표준 SQL을 통해 쿼리 작성 및 관리가 용이하며 ACID 특성을 지니어 데이터 일관성을 보장한다.
복잡한 쿼리를 처리할 때 성능 저하가 발생할 수 있으며, 대용량 데이터 처리에 어려움이 있을 수 있다.
객체 - 관계형 데이터베이스(Object-Relational Database)
객체 지향 프로그래밍의 개념을 데이터베이스 모델링에 도입하여, 객체와 그 속성, 메서드를 테이블로 저장한다.
객체와 클래스를 기반으로 데이터를 조직하며, 관계형 데이터베이스의 장점을 유지하면서 객체 지향 프로그램의 특성을 활용할 수 있다.
객체 - 지향형 데이터베이스(Object-Oriented Database)
객체 - 관계형 데이터베이스와 마찬가지로 객체와 그 속성, 메서드를 직접 저장하지만 클래스와 객체로 데이터를 조직하며, 상속과 다형성 등의 객체 지향 특성을 지원하여 관계형 데이터베이스의 테이블과 열을 기반으로 하는 구조와 달리, 객체의 속성과 메서드를 직접 저장하고 처리한다.
• SQL(Structured Query Language) 개요
SQL은 데이터베이스를 관리하고 조작하기 위한 표준화된 언어이다.
일반적인 프로그래밍 언어인 C, C++, JAVA 등 비교하면 좀 다른 특성을 갖는다.
SQL은 데이터베이스에 저장된 데이터를 검색, 삽입, 업데이트 및 삭제하는 데 주로 사용된다.
SQL의 특징
1. DBMS 제작 회사와 독립적
DBMS는 표준 SQL을 기본으로 맞춰서 DBMS를 개발한다. 그러므로 표준 SQL은 대부분의 DBMS 제품에서 공통적으로 호환이 된다.
단, 주의할 점이 모든 DBMS 제작 회사들이 표준 SQL을 지키려고 하지만 각 제품마다 전부 동일하지는 않는다.
2. 호환성
SQL 표준은 서버, 개인, 휴대용 장비에서 운영되는 DBMS마다 상호 호환성이 좋다. 그러므로 어떤 시스템에 이식을 해도 별 문제가 없다.
3. 분산형 클라이언트 / 서버 구조
클라이언트 - 서버 구조를 지원하기 때문에 클라이언트에서 질의를 하면 서버에서 그 질의를 받아 서버에서 처리한 후 다시 클라이언트에게 전달한다.