Database

[데이터베이스] 데이터베이스(database) 기본 개념

아윤_ 2023. 11. 18. 16:44

데이터베이스 기본 개념

 

 

데이터베이스

 

데이터베이스란, 전자적으로(electronically) 저장되고 사용되는 관련 있는(related) 데이터들의 조직화된 집합(organized collection)을 말한다.

 

여기서 관련 있는 데이터란 같은 출처나 목적, 같은 서비스 아래에서 생성되는 데이터들을 말한다.  

 

DBMS(Database Management Systems)

 

DBMS는 사용자에게 데이터베이스를 정의하고 관리하는 기능을 제공하는 시스템이다. 대표적인 DBMS에는 다음과 같은 것들이 있다.

 

 

DB를 정의하다 보면 부가적인 데이터가 발생하게 되는데, 이러한 데이터를 metadata라 부른다.

 

metadata

 

metadata의 원래 의미는 데이터를 설명하기 위한 데이터이다. 예를 들어, 사진의 경우 그 해상도가 얼마인지 언제 찍혔는지 등등 사진이라는 정보를 설명하는 데이터들을 말한다.

 

metadata는 데이터베이스에서 이와 다른 의미로 사용된다. 데이터베이스에서의 metadata는 database를 정의하거나 기술(description)하는 data이며, 다른 말로는 catalog라고도 한다. 

  • metadata의 예: 데이터 구조, 제약 조건, 보안, 저장, 인덱스, ...
  • metadata 또한 DBMS를 통해 저장·관리된다.

 

Database System

 

Database, DBMS, 연관된 applications을 통틀어 Databaase System이라고 부른다. 이를 줄여서 database라고 부르기도 한다. 따라서 문맥에 따라 의미를 잘 파악하는 것이 중요하다.

 

Data Models

 

DB의 구조를 기술하는 데 사용될 수 있는 개념들이 모인 집합으로, DB의 구조를 추상화해서 표현할 수 있는 수단을 제공한다. 즉, 모델링이라고 이해하면 좋다.

 

데이터 모델은 여러 종류가 있는데, 추상화 수준과 DB 구조화 방식이 조금씩 다르다. 또한, 데이터 모델은 DB에서 읽고 쓰기 위한 기본적인 동작(operation)들도 포함한다.

DB 구조: 데이터 유형, 데이터 관계, 제약 사항 등등을 표현하는 개념

 

Data Models 분류

 

Data Model은 다음과 같이 분류된다.

  • Conceptual(or high-level) Data Models
  • Logical(or representational) Data Models
  • Physical(or low-level) Data Models

 

Conceptual Data Models

  • 일반 사용자들이 쉽게 이해할 수 있는 개념들로 이루어진 모델
  • 추상화 수준이 가장 높다
  • 비즈니스 요구 사항을 추상화하여 기술할 때 사용한다

 

 

다음과 같이 entitiy-relationship model이 대표적인 conceptual data models에 해당된다. 즉, 데이터베이스의 구조를 엔티티와 엔티티들 간의 관계로 모델링하는 것을 말한다.

 

ER diagram은 엔티티와 엔티티들 간의 관계를 다이어그램으로 나타낸 것이다.

  • 엔티티: Student, Book
  • 관계: reads
  • 엔티티들의 속성(attribute): stu_id, major, name, grade, book_id, name, price, Authors 

 

Logical Data Models

  • 이해하기 어렵지 않으면서도 디테일하게 DB를 구조화할 수 있는 개념들을 제공한다
  • 데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화를 가능하게 한다
  • 특정 DBMS나 storage에 종속되지 않는 수준에서 DB를 구조화할 수 있는 모델이다

 

 

다음과 같이 relational data model이 가장 많이 사용되며, relation은 tabel을 의미한다. 즉, 데이터를 테이블 형태로 저장한다. 여기서 테이블의 row는 데이터 각각을 의미하며, column은 데이터의 속성(attribute)을 의미한다.

 

logical data models에는 relational data model 이외에도 object data model, object-relational data model 등이 있는데, 대부분의 경우 relational data model을 사용한다

 

Physical Data Models

  • 컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공한다
  • data format, data orderings, access path 등등
  • access path: 데이터 검색을 빠르게 하기 위한 구조체 ex) index

 

Database Schema

 

  • data model을 바탕으로 database의 구조를 기술(description) 한 것
  • schema는 database를 설계할 때 정해지며 한번 정해진 후에는 바뀌지 않는다
  • relational database에서 schema는 다음과 같은 구조를 지닌다.

 

 

 

Database State

 

  • database에 있는 실제 데이터는 바뀔 수 있다.
  • 특정 시점에 database에 있는 데이터를 database state 또는 snapshot이라고 한다.
  • 혹은 database에 있는 현재 instances의 집합이라 한다

 

Three-Schema Architecture

 

  • database system을 구축하는 architecture 중에 하나이다
  • user application으로부터 물리적인(physical) database를 분리시키는 목적
  • 세 가지 level이 존재하며 각각의 level마다 schema가 정의되어 있다.
    • externel schemas (or user views) at externel (or view) level
    • conceptual schemas at conceptual level
    • internel schemas at internel level 

 

Internel schema

  • 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현
  • data storage, data structure, access path 등 실체가 있는 내용을 기술

 

Externel schema

  • externel views, user views라고도 불림
  • 특정 유저들이 필요로 하는 데이터만 표현
  • 그 외 알려줄 필요가 없는 데이터는 숨김
  • logical data model을 통해 표현

 

Conceptual schema

  • 전체 database에 대한 구조를 기술, internel schema를 한번 추상화시켜 표현한 스키마
  • 물리적인 저장 구조에 관한 내용은 숨김
  • entities, data types, relationships, user operations, constraints에 집중
  • logical data model을 통해 표현

 

 

 

정리
three-schema-architecture는 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 끼치지 않게 하기 위한 목적이다. 오늘날에는 대부분의 DBMS가 three-level을 완벽하게 혹은 명시적으로 나누지는 않으며, 실제로 데이터가 존재하는 곳은 internel level에 해당된다 

 

 

Database Definition Language(DDL)

 

  • conceptual schema를 정의하기 위해 사용되는 언어
  • internel schema까지 정의할 수 있는 경우도 있다

 

Storage Definition Language(SDL)

 

  • internel schema를 정의하는 용도로 사용되는 언어
  • 요즘은 특히 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체된다

 

View Definition Language(VDL)

 

  • externel schema를 정의하기 위해 사용되는 언어
  • 대부분의 DBMS에서는 DDL이 VDL 역할까지 수행

 

Data Manipulation Language(DML)

 

  • database에 있는 data를 활용하기 위한 언어
  • data 추가, 삭제, 수정, 검색 등등의 기능을 제공하는 언어

 

통합된 언어

 

  • 오늘날의 DBMS는 DDL, VML, DML이 따로 존재하기보다는 통합된 언어로 존재
  • 대표적인 예: relational database language: SQL

 

참고
https://www.youtube.com/watch?v=aL0XXc1yGPs&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=1