본문 바로가기

DB/DB 강의

DB 1강

database(DB): 전자적으로 저장되고 사용되는 관련있는 데이터들의 조직화된 집합

  • 관련있는 데이터들 :
    ex) SNS에서 사진을 올리고, 글을 쓰고, 누군가의 게시물에 댓글을 달고 .. 등등의 일련의 정보들, 이러한 데이터들이 모두 하나의 서비스와 관련된 데이터들이다. 즉 같은 출처, 같은 목적, 같은 서비스 안에서 생성되는 위와 같은 데이터들을 관련있는 데이터들이라고 함.  
  • '조직화'된 집합으로: ex) 책이 잘 정리되어 있지 않은 상태:
    내가 찾으려는 것이 어디 있는지 찾기 상당히 어려움. 같은 제목의 책들이 얼마나 있는지 몰라 재고 관리도 쉽지 않음. .. 등등의 여러가지 불편한 점 많음. 즉, 이러한 상태에서는 무언가를 하고 싶어도 신속하게 수행하기 쉽지 않다. -> 책이 잘 정리되어 있는 상태, 잘 조직화된 데이터들은 내가 찾으려는 데이터를 더 빨리 찾을 수 있게 해줄 뿐만 아니라 불필요한 데이터가 중복돼서 생성되는 것 막을 수 있고, 데이터의 불일치 또한 막을 수 있음. 그러므로 조직화된 집합으로 데이터가 관리되어야 한다.
  • '전자적'으로 저장하고 사용: 데이터가 컴퓨터가 저장되고, 사용될 때를 의미.

----> 관련있는 데이터들을 조직화된 집합의 형태로 전자적으로 사용할 때, 이것을 database라고 한다.

 

 

DBMS(database management systems): 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 SW 시스템

    ex: PostgreSQL, MySQL .. 

 

 

database system: database + DBMS +  연관된 applications

Database System


data models: DB 구조*를 '추상화'해서 표현할 수 있는 수단 제공

    database의 구조를 원하는 형태로, 혹은 원하는 추상화 수준으로 모델링 하기 위해서는 적절한 data model이 필요.

    * DB 구조: 데이터 유형, 데이터 관계(relationship), 제약 사항(constraints) 등

 

 

data models 분류

  • conceptual data models:
    ex) entity-relationship model, conceptual data models은 DB의 구조를 높은 수준으로 추상화하여 누가봐도 이해하기 쉽게 표현하는 것, 혹은 그렇게 표현할 수 있는 수단을 제공하는 모델을 의미.
  • logical data models:
    ex) relational data model: 여기서 relational이라 함은 쉽게 말해서 table을 의미, relational data model 외에도 여러가지 데이터 모델이 있지만 가장 많이 사용되는 것은 relational data model임. 앞에서 언급한 DBMS도 대부분 relational data model에 기반한 DBMS라고 보면 됨,
  • physical data models:
    컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단 제공, 데이터가 실제로 저장장치에 저장되는 형태에 가장 근접하게 DB구조를 표현할 수 있는 data model임. 즉 실제로 컴퓨터에 저장되는 것과 밀접하게 모델링 할 수 있는 방법들을 제공함.

database schema: data model을 바탕으로 database의 구조를 기술한 것 

ex: relational data model에서의 database schema

-> database schema를 보면 database의 구조가 어떤 식으로 되어있는지, 즉 전체 큰 그림을 이해할 수 있게 됨.

 

 

 

 

 

three-schema architecture: database system을 구축하는 architecture 중의 하나 (but, 대부분 이에 기반됨)

user application으로부터 물리적인(physical) database를 분리시키는 목적

-> 물리적인 database의 구조가 바뀔 수 있음. 바뀔 때, 실제로 이 database를 사용하는 user app에는 영향을 끼치지 않기 위해서 이를 사용함. 이에 세 가지 level이 존재하며 각각의 level마다 schema가 정의되어 있음. 

  • internal schema:
    실제로 물리적인 저장장치에 가장 가까움. 물리적으로 실체가 있는 내용 기술.
  • external schema:
    실제 사용자가 바라보는 schema임. 특정 유저들이 필요로 하는 데이터만 표현 -> 각 유저마다 필요로 하는 데이터들이 조금씩 다 다를 수 있음. 그 외에 알려줄 필요 없는 데이터는 숨김.
  • conceptual schema:
    전체 database에 대한 구조를 기술. 즉 internal schema를 한번 추상화 시켜서 표현한 schema임. 물리적인 저장 구조에 관한 내용은 숨기는 대신, 논리적으로 database의 전체 구조를 표현함. (entities, data types, relationships, user operations, constraints에 집중)

 

 

database system의 초창기 architecture는 internal schema, external schema 두 개밖에 없었는데, 각 유저마다 필요로 하는 데이터가 달라지다 보니 internal level에서도 점점 중복되는 데이터가 생기게 됨. 즉 니즈에 맞춰서 데이터를 제공하려다 보니 같은 데이터를 포함함에도 조금씩 다른 internal schema들이 여러 개 생기게 됨. 이에 점점 관리하기 어려워짐. 이러한 문제를 해결하기 위해 등장한 것이 conceptual level에서의 conceptual schema라고 함.

 

  • 안정적으로 database system을 운영하기 위해서 사용되는 architecture.
  • 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함. ex: internal schema에 변경이 생긴다 할지라도, 그 변경 때문에 conceptual schema도 바꿔줘야 될 필요가 없다는 것. 단지, 이 둘 사이의 mapping만 바꿔주면 됨. 이에 안정적으로 운영할 수 있음.
  • 각각의 schema는 database의 구조를 표현하는 것이지, 실제로 데이터가 존재하는 곳은 internal level에만 있다는 것! 

 


database language

 

data definition language (DDL): conceptual schema를 정의하기 위해 사용되는 언어, DDL이 대부분 모든 것들을 커버함. 

data manipulation language (DML): database에 있는 data를 활용하기 위한 언어. data 추가, 삭제, 수정 등의 기능 제공.

 

위와 같은 언어들이 다 따로 있는 것이 아니라, 하나의 통합된 언어로 존재함. 

ex: relational database language: SQL, 이 SQL이 DML, VDL, DDL 역할을 모두 하게 됨.

 

 

  

 

 

 

 

'DB > DB 강의' 카테고리의 다른 글

DB 6강  (1) 2023.09.19
DB 5강  (2) 2023.09.18
DB 4강  (2) 2023.09.13
DB 3강  (0) 2023.09.12
DB 2강  (0) 2023.09.12