본문 바로가기

ComputerScience/Database

[Database] 데이터베이스의 기본 개념 (DB, DBMS, Schema)

️데이터베이스와 DBMS에 대한 기본 개념 이해

  • 데이터베이스는 전자적으로 저장되고 사용되는 관련있는 데이터의 집합으로, 예를 들면 소셜네트워크 서비스에서 생성되는 데이터들을 말한다.
  • 데이터베이스는 관련있는 데이터들을 조직화된 집합으로 묶어야 한다.
  • 검색 및 사용의 효율성을 위해 데이터베이스는 잘 조직화되어야 하며, 중복된 데이터와 데이터의 불일치를 방지할 수 있다.
  • DBMS는 사용자에게 데이터베이스를 정의, 생성 및 관리할 수 있는 기능을 제공하는 소프트웨어 시스템이다.
  • DBMS의 대표적인 종류에는 Postgre SQL, MySQL, Oracle, SQL Server 등이 있다.

DBMS, metadata, 데이터베이스 시스템 

  • DBMS는 사용자가 데이터베이스를 정의하고 만들고 관리하는 소프트웨어 시스템이다.
  • metadata는 데이터베이스 내 추가적인 데이터를 의미하며, 데이터를 설명하기 위한 데이터로 구성된다.
  • metadata는 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, 사용자 그룹 등등이 있다.
  • metadata 또한 DBMS를 통해 저장/관리된다.
  • 데이터베이스 시스템은 데이터베이스, DBMS, 연관된 어플리케이션을 포함한 데이터 관리 시스템으로, 문맥에 따라 데이터베이스 또는 데이터베이스 시스템으로 불리울 수 있다.
이미지 출처: https://jgtonys.github.io/public/img/school/database/1.PNG
  • 데이터베이스 시스템은 사용자와 프로그래머로 구성되며, 데이터베이스의 조회 및 수정을 위한 퀄리티(조건)가 필요하다.
  • 프로그램이 퀄리티를 전달하면, 데이터베이스 매니지먼트 시스템이 분석하고 처리하며, 요청된 데이터의 부가적인 정보 및 데이터 자체를 통해 필요한 데이터를 찾아 반환해준다.

Data Models

  • 데이터 모델이란 데이터베이스의 구조를 추상화하여 표현하는 수단이며, 모델링으로 이해할 수 있다. 데이터 모델에는 여러 종류가 있으며, 데이터베이스의 추상화 수준과 구조화 방식에 따라 다르다.
  • 데이터 모델에는 카테고리별로 Conceptual, Logical, Physical 종류가 있으며, DB구조는 데이터의 타입과 다른 데이터들과의 관계, 그리고 데이터들의 제약에 대한 개념을 포함한다.
  • Conceptual: 일반 사용자들이 쉽게 이해할 수 있는 개념들로 이뤄진 모델
    EX) entity-relationship model -> 책과 학생의 관계
  • Logical: 컴퓨터에 저장될 때 구조와 크게 다르지 않게 DB를 구조화, 디테일 하게 DB를 구조화하는 개념들을 제공
    (어느정도 추상화는 되어있음)
    EX) relational data model -> Student 테이블 
    주요 데이터베이스 관리 시스템인 Oracle, MySQL, MS SQL은 모두 Relational 데이터 모델을 기반으로 하며, PostgreSQL은 Object Relational Data 모델을 기반으로 한다.
  • Physical:실제로 컴퓨터에 저장되는 데이터의 포맷, 데이터의 순서, 인덱스 등을 모델링 하는 방법을 제공합니다.

Database Schema

  • 데이터베이스 스키마는 데이터 모델을 기반으로 데이터베이스의 구조를 모델링하여 기술한 것으로, 전체 데이터베이스의 구조를 이해하는 데 도움이 된다.
  • 스키마는 데이터베이스 설계 시 주로 정해지고 이후에는 자주 바뀌지 않는다.
  • Relational 데이터 모델에서 스키마는 릴레이션에 포함된 속성이나 애트리뷰트들을 통해 데이터베이스의 구조를 모델링한다.

Database State, Three-Schema Architecture

  • 데이터베이스 State는 데이터베이스에 있는 특정 시점의 데이터를 말하며, 데이터는 시간이 지남에 따라 변경될 수 있다.
  • 3스키마 아키텍처는 물리적인 데이터베이스 구조의 변경에도 유저 어플리케이션에 영향을 주지 않고 DB를 관리하는 아키텍처다.
  • 3스키마 아키텍처에는 External 스키마, Conceptual 스키마, Internal 스키마가 있다.
  • 3스키마 아키텍처는 안정적인 데이터베이스 시스템 운영을 위해 독립된 레벨을 유지하며 상위 레벨에 변화를 전파하지 않는다.
  • 예를 들어, Internal 스키마가 바껴도 Conecptual 스키마가 바뀔 필요가 없음
  • Conceptual Schema가 바뀌어도 External 스키마가 바뀔 필요가 없음 (근데 이건 좀 어려움)
  • 오늘날은 따르긴 하지만 명시적으로 나누진 않음, 데이터가 존재하는 곳은 Internal Level.
이미지 출처: https://static.javatpoint.com/dbms/images/dbms-three-schema-architecture.png

Internal Schema, External Schema

  • Internal 스키마는 물리적인 저장장치와 데이터의 실제 저장 구조를 표현하는 스키마다.
  • External 스키마는 사용자가 보는 스키마로, 사용자 뷰 또는 External 뷰로도 불린다.
  • External 스키마는 특정 유저들이 필요로 하는 데이터만 표현하고, 그 외에 필요 없는 데이터는 숨기는 특징이 있다.
  • 이 External 스키마는 Logical 데이터 모델을 통해 표현된다.
  • 하지만 Internal 스키마에서는 각 유저의 데이터 니즈에 맞추어 중복된 데이터를 갖는 여러 스키마가 생기고, 이로 인해 관리가 어려워지고 데이터 불일치가 발생할 수 있다.

Conceptual Schema

  • Conceptual 스키마는 논리적인 데이터베이스 구조를 표현하는 방법.
  • Conceptual 스키마는 데이터베이스 전체 구조를 기술하며, 물리적인 저장 구조는 숨기고 논리적 구조에 초점을 맞춘다.
  • 엔티티, 데이터 타입, 릴레이션쉽과 제약사항을 통해 데이터베이스 구조를 표현한다.
  • Conceptual 스키마는 로지컬 데이터 모델을 통해 표현된다.
  • 3스키마 아키텍처는 안정적인 데이터베이스 시스템 운영을 위해 독립된 레벨을 유지하며 상위 레벨에 변화를 전파하지 않는다.

스키마 언어와 데이터베이스 언어의 종류와 기능

  • 스키마 언어: 인터널, 컨셉츄얼, 익스터널 스키마 각각의 맵핑을 변경하여 안정적인 운영 가능.
  • 데이터베이스 언어: DDL(DTD), SDL, VDL, DML 등으로 컨셉츄얼, 인터널, 익스터널 스키마를 정의 및 활용.
  • DDL(Data Definition Language): Conceptual 스키마 정의에 주로 사용, 추가적으로 Internal 스키마 설정도 가능.
  • SDL(Storage Definition Language): Internal 스키마 정의 언어로, 대부분의 릴레이셔널 DBMS에서 대체되어 파라미터 사용.
  • VDL(View Definition Language): External 스키마 정의 언어, 하지만 대부분의 DBMS에서 DDL이 VDL의 역할까지 커버한다.
  • DML(Data Manipulation Lagnugae): 실제 데이터 활용을 위한 언어로 데이터 추가, 삭제, 수정, 검색 등의 기능을 제공.
  • 오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재한다.(e.g. SQL)

참고 자료

https://www.youtube.com/playlist?list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe