데이터베이스

1. 개요

  Database 데이터베이스는 데이터의 집합을 저장하는 데이터의 저장소이다. 

  데이터베이스는 일반적으로 구조화된 데이터를 저장하며, 이러한 데이터는 관계형 데이터베이스, NoSQL 데이터베이스 등 다양한 유형으로 저장됩니다.

 데이터베이스는 다양한 응용 프로그램에서 사용되며, 데이터베이스 관리시스템(DBMS)을 통해 조작됩니다.

  카카오톡 메시지, 인스타그램에 등록한 사진, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 아이스 아메리카노 등의 정보가 모두 데이터베이스에 기록됩니다.

 

 DBMS는 데이터를 검색, 추가, 수정 및 삭제하는 기능을 제공하며, 보안, 복원 및 백업과 같은 중요한 기능도 제공합니다.

 관계형 데이터베이스는 가장 일반적인 유형이며, 테이블의 형식으로 데이터를 저장합니다. 각 테이블에는 행과 열이 있으며, 각 열은 특정 유형의 데이터를 나타냅니다.

  테이블은 다른 테이블과 관계를 맺을 수 있으며, 이러한 관계는 외래 키를 사용하여 정의됩니다.

  NoSQL 데이터베이스는 관계형 데이터베이스와 달리 구조화되지 않은 데이터를 저장할 수 있습니다.

  이러한 데이터베이스는 대량의 비정형 데이터를 처리하거나 대규모 분산 시스템에서 사용될 때 유용합니다.

  데이터베이스의 중요한 개념으로는 ACID(원자성, 일관성, 격리성, 지속성)와 CAP(일관성, 가용성, 분할 내성)이 있습니다.

  ACID는 트랜잭션 처리의 안정성과 일관성을 보장하는 데 중요하며, CAP은 분산 시스템에서 일관성, 가용성 및 분할 내성을 균형 있게 유지하는 것이 중요합니다.

  [참고] https://hongong.hanbit.co.kr/데이터베이스-이해하기-databasedb-dbms-sql의-개념/

 

 

2.  DBMS 종류

   데이터베이스를 사용하기 위해서 소프트웨어, 즉 DBMS를 설치해야 하는데

   대표적으로 MySQL, 오라클(Oracle), SQL 서버, MariaDB 등이 있습니다.

  

   DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류됩니다.

  현재 사용되는 DBMS 중에는 관계형 DBMS가 가장 많은 부분을 차지하며, MySQL도 관계형 DBMS에 포함됩니다.

 

  Relational DBMS( 관계형 DBMS)

  관계형 DBMS(Relational DBMS)는 줄여서 RDBMS라고 부릅니다. MySQL뿐만 아니라, 대부분의 DBMS가 RDBMS 형태로 사용됩니다.

  RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있습니다.

  RDBMS에서는 모든 데이터가 테이블에 저장됩니다. 이 구조가 가장 기본적이고 중요한 구성이기 때문에 RDBMS는 테이블로 이루어져 있으며,

  테이블은 열과 행으로 구성되어 있다는 것을 파악했다면 RDBMS를 어느정도 이해했다고 할 수 있습니다.

 

3. Files and Database

   

  

 

 4. schema

     스키마(schema)는 계획이나 도식(圖式)을 가리키는 영어 낱말로  개요, 설계, 도표, 도식 등으로 번역할 수 있다.

       

     

       인스턴스 : DBMS가 동작할 때의 단위, OS 입장에서는 ‘프로세스’, DBMS에 따라서는 ‘서버 프로세스’ 또는 ‘서버’로 부르기도 한다.

                 데이터베이스가 실행 가능하게 메모리에 올라가 있는 걸 생각하시면 됩니다.

       스키마: 데이터베이스의 구조와 제약 조건을 정의한 것으로 사용자에 따라 접근을 제한하는 등의 권한 관리가 가능하도록 정의된다.

             데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다.

 

     스키마는 데이터베이스를 구성하는 데이터 개체(entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의 합니다.

     데이터베이스 관리 시스템이 ‘주어진 설정’에 따라 Database Schema 를 생성합니다.

 

     미국의 표준화 기관 ANSI/SPARC에서는 데이터 베이스의 복잡한 내부 구조를 감추고 일반 사용자가 DB를 쉽게 이해하고 사용할 수 있도록 3단계 DB구조를 제안하였습니다.

     ANSI/SPARC는 데이터베이스 설계와 관련된 표준 모델을 제정하였다. 이 모델에 따르면 데이터베이스는 추상화 3단계로 구성되어 있으며, 각 단계는 다음과 같습니다.

     ANSI/SPARC 모델은 데이터베이스 설계에서 데이터의 논리적, 물리적 구조를 분리하여 유지보수, 확장, 변경 작업을 용이하게 합니다.

     각 단계별로 다른 추상화를 제공하면 DB를 효과적으로 관리할 수 있습니다. 

    External Schema:
      DBMS의 정보들을 사용하는 사람 혹은 프로그래머들의 수준에서 그들이 원하는 정보에 따라 데이터가 주어진다.
      이 단계에서는 사용자가 데이터를 어떻게 보고 사용할지를 정의하며, 뷰(View)나 인터페이스 등이 여기에 해당합니다.
      Conceptual Schema에 있는 다양한 relation들 중에서 필요한 정보를 모아 사용자에게 맞는 새로운 Schema를 보여준다.

    Logical Schema : 모든 relation 들을 기술하는 부분.
       개념 스키마는 오직 Logical Data만 서술한다.
       실제로 저장되어있는 방법 등은 Physical Schema가 관리한다.
       사용자나 응용프로그램이 접근하지 않는 내부적인 논리 구조를 정의합니다.

     Physical Schema:
      데이터베이스에 저장되는 relation들이 secondary storage에 어떤식으로 저장되는지를 명시한다.
      물리적 스키마는 데이터가 일반적으로 어떻게 접근되는가에 대한 이해를 기반으로 하여 결정한다.
      데이터베이스를 실제로 저장하는 물리적인 구조를 정의합니다.

    

 

  5. 데이터의 독립성(data independence)

     데이터베이스의 추상화 과정에서 상위 수준의 스키마 정의에 영향을 주지 않고 해당 스키마 정의를 수정할 수 있는 능력

    데이터 독립성(data independence)라고 한다.

     즉 데이터의 논리적, 물리적인 구조를 변경하더라도 응용프로그램과 다른 데이터에는 영향을 미치지 않도록 하는 능력을 말합니다.

     데이터베이스에서 데이터의 독립성은 다음과 같은 두 가지 종류로 나눌 수 있습니다.

     1. 논리적 독립성(Logical Independence):

         데이터의 논리적인 구조가 변경되더라도 응용프로그램과 다른 데이터의 논리적 구조에는 영향을 미치지 않도록 하는 능력입니다.

         예를 들어, 테이블의 속성을 추가하거나 제거하더라도 응용프로그램에서 사용되는 SQL문이나 데이터베이스의 뷰(View) 등에는 영향을 미치지 않아야 합니다.

     2. 물리적 독립성(Physical Independence):

         데이터의 물리적인 구조가 변경되더라도 응용프로그램과 다른 데이터의 물리적 구조에는 영향을 미치지 않도록 하는 능력입니다.

          예를 들어, 데이터베이스의 인덱스 구조를 변경하거나 데이터를 새로운 저장장치에 이전하더라도 응용프로그램이나 다른 데이터의 물리적 구조에는 영향을 미치지 않아야 합니다.

     데이터의 독립성은 데이터베이스의 설계 및 유지보수를 용이하게 하며, 시스템의 안정성과 성능을 향상시키는 중요한 요소 중 하나입니다.

 

   6. 관계형 모델(Relational Model)

      관계형 모델은 데이터를 행과 열로 구성된 이차원 테이블의 집합으로 표현한 모델이다.

     

     속성과 튜플

       속성과 튜플은 DBMS에서 각각 열과 행을 의미한다.

       

 

       Keys

         키(key)는 Relation(관계)에서 튜플들을 유일(uniqueness)하게 서로 구별할 수 있는 속성의 집합을 말한다.

       

     

        Relatoin의 연산