파일 시스템은 프로그램 별로 필요한 데이터를 각각 저장하기 때문에 중복된 데이터가 존재할 수 있습니다. 이로 인해 데이터를 일관된 상태로 유지하기 힘들고 신뢰성을 떨어트릴 수 있습니다.
그러나 데이터베이스의 경우 데이터를 구조적으로 통합하여 관리함으로써 데이터의 중복 문제를 해결하며, 무결성 제약 조건 등을 통해 데이터의 일관성을 보장할 수 있습니다.또한 파일 시스템의 경우 데이터에 대한 보안 및 회복, 동시 공유 기능이 부족하지만, 데이터베이스는 이러한 기능들을 충분히 지원함으로써 여러 사람들이 데이터를 안전하게 공유할 수 있는 환경을 제공합니다.
데이터베이스의 특징은 실시간 접근성, 계속적인 변화, 동시 공유, 내용에 의한 참조로 요약할 수 있습니다. 데이터베이스는 실시간으로 사용자의 데이터 요구에 응답할 수 있으며, 데이터에 대한 생성과 수정, 삭제 등의 연산을 통해 항상 최신의 상태를 유지할 수 있습니다. 또한 여러 사용자가 동일한 데이터를 동시에 사용할 수 있으며, 데이터를 조회할 때 데이터의 물리적인 위치가 아닌 내용 자체로 참조할 수 있다는 특징을 가지고 있습니다.
DBMS는 데이터베이스의 기능을 제공하는 소프트웨어를 말합니다. 사용자나 어플리케이션은 DBMS를 통해 데이터에 접근하여 조회 및 생성, 수정, 삭제 등의 작업을 수행할 수 있습니다. 이 외에도, 데이터 보안 및 백업, 복원 기능을 제공하며, 다중 사용자의 데이터 접근에 대한 동시성 제어 기능 등도 제공합니다.
대표적으로 아래와 같은 기능들을 제공한다.
장점
단점
스키마는 데이터베이스의 구조와 제약조건을 정의한 것을 말합니다. 데이터베이스는 관점에 따라 각각 외부, 개념, 내부 스키마로 나눌 수 있습니다.
외부 스키마의 경우 개별 사용자의 관점으로 이해한 데이터베이스 구조를 말합니다. 각 사용자마다 생각하는 데이터베이스의 구조가 다를 수 있기 때문에 하나의 데이터베이스에 여러 외부 스키마가 존재할 수 있습니다.
개념 스키마는 조직 전체의 관점에서 보는 데이터베이스의 모습으로, 모든 사용자에게 필요한 데이터를 통합하여 정의한 전체 데이터베이스의 논리적인 구조입니다. 데이터 간의 관계나, 제약조건에 대한 정의 뿐만 아니라 데이터의 보안 정책이나 접근 권한에 대한 정의도 포함됩니다.
내부 스키마는 저장 장치의 관점에서 이해한 데이터베이스의 구조를 말합니다. 전체 데이터베이스가 실제로 저장되는 방법을 정의하며, 파일에 저장되는 데이터의 레코드 구조, 필드 정보, 접근 경로 등의 정의를 포함합니다.
데이터 독립성은 데이터베이스의 구조와 데이터의 내용이 서로 영향을 미치지 않는 것을 말합니다. 데이터 독립성은 ‘논리적 데이터 독립성’과 ‘물리적 데이터 독립성’으로 나눌 수 있습니다. 논리적 데이터 독립성이란 데이터베이스의 논리적 구조가 변경되어도 어플리케이션이나 사용자의 요구에 영향을 주지 않는 것을 말하며, 물리적 독립성은 데이터베이스의 물리적 구조가 변경되어도 데이터에 영향을 주지 않음을 말합니다.
관계형 데이터베이스의 기능을 제공하는 소프트웨어를 말합니다. 관계형 모델(표 형식)을 기반으로 하는 DBMS의 한 유형입니다. 예시로는 MSSQL, MySQL, Oracle이 RDBMS 등이 있습니다.
릴레이션 스키마는 테이블(릴레이션)에 담길 값을 정의한 논리적인 구조입니다. 즉 테이블의 열(속성)과 해당 열이 가질 수 있는 데이터 유형 등을 정의합니다. 예를 들어, 학생 테이블의 스키마는 학번, 이름, 성별 등의 열과 각 열이 가질 수 있는 데이터 유형을 정의합니다.
릴레이션 인스턴스란 테이블에 실제로 저장된 데이터의 집합을 의미합니다. 즉, 어느 시점에 테이블에 존재하는 행(투플)들의 집합입니다.
| 이름 | 뜻 |
|---|---|
| 릴레이션 | 하나의 객체에 대한 데이터를 2차원 테이블 구조로 정의한 것 |
| 속성(attribute) | 릴레이션의 열 |
| 행(tuple) | 릴레이션의 행 |
| 도메인 | 하나의 속성이 가질 수 있는 값들의 집합 |
| 차수 (degree) | 하나의 릴레이션에서 속성의 전체 개수 |
| 카디널리티 | 하나의 릴레이션에서 투플의 전체 개수 |
릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.
릴레이션의 차수란 테이블(릴레이션)이 가지는 전체 속성의 개수를 말합니다. 예를 들어 학생 테이블이 이름, 성별, 학번의 속성을 가진다면 테이블의 차수는 3이됩니다.
반대로 테이블의 카디널리티는 테이블에 저장된 전체 행(투플)의 개수를 말합니다. 예를 들어 학생 테이블에 저장된 행의 수가 총 10개라면 테이블의 카디널리티가 10이라고 말할 수 있습니다.
키(key)는 테이블에 저장된 각 행(투플)을 구별하는 역할을 하는 속성 또는 속성들의 집합입니다. 키는 유일성과 최소성에 따라 분류되는데, 유일성과 최소성을 모두 만족하는 경우 이를 후보키라고 하며, 이 후보키 중에서 기본적으로 사용하기 위해 선택된 키를 기본키라고 합니다. 또한 기본키로 선택되지 못한 나머지 키들을 대리키라고 부르며, 유일성만 만족하는 경우 이를 슈퍼키라고 부릅니다. 외래키의 경우 다른 테이블(릴레이션)의 기본키를 참조하는 키를 말합니다.
무결성 제약조건이란 데이터의 무결성, 즉 데이터가 정확하고 유효하게 유지됨을 보장해야 한다는 규칙입니다. 개체 무결성 조건은 기본키를 구성하는 모든 속성은 널(null) 값을 가질 수 없다는 규칙이며, 참조 무결성 규칙은 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙입니다. 마지막으로 도메인 무결성 규칙은 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규칙입니다. 예를 들어 학생 테이블의 성별이라는 속성이 존재하고, 성별의 도메인을 '남'과 '여'로 정의한 경우, 그 이외의 값은 입력할 수 없어야 합니다.
MySQL이라면?
MySQL 엔진은 클라이언트가 요청하는 SQL 문장을 분석하거나 최적화하여 처리하는 등의 역할을 담당합니다.
MySQL의 데이터베이스 엔진으로 대용량 데이터 처리 및 사용자 동시 접속 환경을 제공하며, 논리적 장애 복구 기능을 제공합니다.