DataBase, DBMS, DataBase System

  •  DataBase
    • 전자적으로 모은 관련있는 데이터의 집합
  • DBMS (DataBase Management System) : 사용자가 DB를 관리하도록 도와주는 소프트웨어
    • Oracle, PostgreSQL, MSSQL, mysql etc
    • metadata
      • database를 설명하는 data
      • 데이터 유형, 구조, 제약조건, 보안, 인덱스 등
  • DataBase System
    • db + dbms + application 다 합쳐 놓은 것

data models

 

  • conceptual data models
    • 가장 추상화 된 모델
    • erd 등
  • logical data models
    • 적당히 추상화, 실제 저장된 데이터의 형태와 크게 다르지 않은 모습
    • relation data model, 여기서 relation은 우리가 흔히 보는 테이블
    • object model도 있음.
    • 많은 DBMS가 relation data model을 활용
    • ex) ORACLE, mysql, Sql Server, postgreSQL(특이하게 object model가 혼합한 Object-Relation model)
  • physical data model
    • 데이터가 컴퓨터에 어떻게 저장될 지
    • data formet, data ordering, access path(index)

database state

  •  snapshot

 

database schema

 

 

three-schema architecture

  • user application이 physical database의 변경에 영향을 받지 않도록 하기 위해 three-schema architecture를 많이 활용.

 

three-schema

  • internal schema
    • 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현
    • data storage, data structure, access path(=index) 등
  • external schema(=user view)
    • 특정 유저들이 필요로 하는 데이터만 표현, 그 외 보이지 않아도 되는 데이터는 숨김
    • 동일한 데이터에 대해, 서로 다른 관점을 정의하도록 허용
    • logical data model을 통해 표현
  • conceptual schema
    • 전체 database에 대한 구조를 기술, 물리적인 구현은 고려하지 않음
    • 각 데이터베이스에는 한 개의 개념 스키마만 존재
    • 개체 간의 관계 및 무결성 제약 조건에 대한 명세를 정의
    • entities, data types, relationships, user operations, constatraints 등
    • logical data model을 통해 기술
  • 각 레벨을 독립 시켜 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않도록 하기 위함.
  • 대부분의 DBMS가 three level을 완벽하게 나누지는 않는다.
  • 실제 데이터가 존재하는 곳은 internal level

DDL, SDL, VDL, DML

  • DDL : conceptual schema를 정의하기 위해 사용되는 언어
  • SDL : internal schema를 정의하기 위해 사용되는 언어, 요즘은 SDL이 거의 없고 파라미터 설정으로 대체됨
  • VDL : external schema를 정의하기 위해 사용되는 언어, 대부분의 DBMS에서 DDL이 VDL 역할까지 수행
  • DML : database에 있는 data를 활용하기 위한 언어, data의 CRUD 기능을 제공
  • 오늘날의 DBMS는 각각 언어를 따로 두지 않고 통합된 언어로 존재, 대표적인 예가 SQL

 

위 글은 쉬운코드님의 데이터베이스 영상을 토대로 정리한 내용입니다.

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

 

'CS > SQL' 카테고리의 다른 글

group by, aggregate function, order by  (0) 2024.05.28
Join  (0) 2024.05.27
SQL에서 null의 의미  (0) 2024.05.27

+ Recent posts