Skip to content

Latest commit

 

History

History
307 lines (215 loc) · 18.6 KB

1. 데이터베이스의 기본.md

File metadata and controls

307 lines (215 loc) · 18.6 KB

데이터베이스의 기본

목차

개요

데이터베이스를 이루고 있는 기본적인 것들에 대해 알아봅니다.

핵심 용어

  • 데이터베이스: 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음
  • DBMS(DataBase Management System): 데이터베이스를 제어, 관리하는 통합 시스템
  • 쿼리 언어: 특정 DBMS마다 정의된 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있는 언어

데이터베이스 (DB)

  • 의미: 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음

  • 특징

    • 실시간 접근성(Real-Time Accessibility): 사용자의 질의(조회)에 대해 실시간 처리에 의한 응답이 가능해야 한다.
    • 지속적인 변화(Continuous Evolution): 데이터의 삽입, 삭제, 갱신으로 항상 최신 데이터를 유지해야 한다.
    • 동시 공용(Concurrent Sharing): 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
    • 내용에 의한 참조(Content Reference): 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 찾는다.

DBMS (DataBase Management System)

image
  • 의미: 데이터베이스를 정의하고, 만들고, 제어/관리하는 기능을 제공하는 소프트웨어 시스템
  • 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다.
  • e.g. PostgreSQL, MySQL, ORACLE, SQL Server, …etc

DBMS의 종류에 대한 상세 내용은 4. 데이터베이스의 종류 참고

쿼리(query): DB에 접근해서 원하는 DB를 가져오거나 원하는 형태로 수정하는 요청

쿼리 언어(query language): 쿼리를 만들고 DB에서 정보를 검색하는 데 사용되는 특수 컴퓨터 언어

데이터베이스 시스템

image
  • 의미: 데이터베이스 + DBMS + 연관된 애플리케이션을 통틀어 일컫는 단어

  • 데이터베이스 시스템 동작 과정

    1. 사용자가 애플리케이션을 통해 쿼리를 보낸다.
    2. DBMS가 쿼리를 받아서 해당 쿼리가 무엇인지, 어떤 걸 요청하는지 분석한다.
    3. 분석이 완료되면 해당 요청을 처리하기 위해 요청된 데이터가 어떤 형태로 되어있는지 부가적인 정보를 확인한다.
    4. 부가적인 정보를 바탕으로 실제 요청받은 데이터를 찾아서 반환한다.

Meta-data: 데이터베이스를 정의하거나 기술하는 데이터. catalog라고도 부르며 DBMS를 통해 저장 및 관리된다. e.g. 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, ...etc

데이터 모델

  • 의미: 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형

  • 데이터 모델 구성 요소

    • 개체(entity): 데이터베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
    • 속성(attribute): 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드
    • 관계(relationship): 데이터베이스 안에 있는 여러 테이블(개체) 간의 논리적 관계
  • 데이터 모델 종류

    • 개념적 데이터 모델: 현실 세계에 대한 인식을 추상적 개념으로 표현한 모델
    • 논리적 데이터 모델: 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 구조로 변환한 모델
    • 물리적 데이터 모델: 논리적 데이터 모델을 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환한 모델
  • 데이터 모델링의 예시

    image
  • 데이터 모델에 표시할 요소

    • 구조(structure): 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현
    • 연산(Operation): 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
    • 제약 조건(Constraint): 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

데이터베이스의 구성 요소

개체 (Entity)

  • 의미: 데이터베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체

  • 약한 엔티티강한 엔티티로 나뉜다.

    • 약한 엔티티: 다른 엔티티에 종속적인 엔티티
    • 강한 엔티티: 다른 엔티티에 의존하지 않고 독립적으로 존재할 수 있는 엔티티

속성 (attribute)

  • 의미: 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다.

    • ex) 자동차를 예시로 든다면 차 번호, 색, 차종 등이 있다.
  • 속성 설정 시 고려사항

    • 엔티티에 꼭 필요한 속성만을 구성하도록 한다.
    • 하나의 속성은 한 개의 값을 가져야 한다. (= 다중값 속성을 지양해야 한다.)
    • 속성은 단 하나의 독립적인 의미만을 가져야 한다.
    • 동일한 의미를 가지는 여러 개의 속성이 존재하지 않도록 한다.

관계 (relationship)

  • 의미: 데이터베이스 안에 있는 여러 테이블(개체) 간의 논리적 관계

  • 관계 화살표

    image
  • 관계도

    1:1 관계 N:1 관계 N:M 관계
    image image image
    하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우 하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우 여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우
  • N:M 관계의 테이블을 구축할 땐 테이블 두 개를 직접적으로 연결해서 구축하지 않고, 1:N과 1:M관계를 갖는 테이블로 각각 나눠 구축한다.

    • e.g.

      [구축 전]

      image
      • 여러 명의 고객(Customer)과 여러 개의 여행 상품(Package)을 나타낸다.
      • 한 명의 고객은 여러 개의 여행 패키지를 구매할 수 있다.
      • 여행 패키지 하나는 여러 명의 고객이 구매할 수 있다.

      [구축 후]

      image
      • customer_package는 고객과 여행 상품을 중간에서 1:N 관계로 묶어주는 역할을 한다.

스키마 (schema)

image
  • 의미: 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합

  • 개체, 속성, 관계 및 제약 조건 등에 관해 전반적으로 정의한다.

  • 사용자의 관점에 따라 외부, 개념, 내부 스키마로 나뉜다.

관계형 데이터베이스의 릴레이션 구조

image

릴레이션 (relation)

  • 의미: 데이터베이스에서 정보를 구분하여 저장하는 기본 단위

  • 특징

    • 데이터베이스는 엔티티에 관한 데이터를 릴레이션 단위로 저장한다.
    • 관계형 데이터베이스에서는 테이블, NoSQL 데이터베이스에서는 컬렉션이라고 한다.
  • 테이블과 컬렉션

    image
    • 테이블
      • 관계형 데이터베이스의 릴레이션
      • MySQL의 구조: 레코드 - 테이블 - 데이터베이스
    • 컬렉션
      • NoSQL 데이터베이스의 릴레이션
      • MongoDB의 구조: 도큐먼트 - 컬렉션 - 데이터베이스

도메인 (Domain)

  • 의미: 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합
    • ex) 성별이라는 속성이 있다면 도메인은 {, }가 있을 수 있다.

필드와 레코드

image
  • 필드(= 속성): 데이터를 저장하는 테이블의
  • 레코드(= 튜플): 테이블에 쌓이는 단위의 데이터

차수(degree): 한 릴레이션에서 속성의 개수

기수(cardinality): 한 릴레이션에서 튜플의 개수

필드 타입

MySQL 기준으로 설명

  • 숫자 타입

    타입 용량(Byte) 최솟값(부호 있음) 최솟값(부호 없음) 최댓값(부호 있음) 최댓값(부호 없음)
    TINYINY 1 -128 0 127 255
    SMALLINT 2 -32768 0 32767 65535
    MEDIUNMINT 3 -8388608 0 8388607 16777215
    INT 4 -2^31 0 2^31 - 1 2^32 - 1
    BIGINT 8 -2^63 0 2^63 - 1 2^64 - 1
  • 날짜 타입

    타입 특징 지원 범위 용량
    DATE 날짜 부분은 있지만 시간 부분은 없는 값에 사용 1000-01-01 ~ 9999-12-31 3 byte
    DATETIME 날짜 및 시간 부분 모두 포함하는 값에 사용 1000-01-01 00:00:00 ~ 9999-21-31 23:59:59 8 byte
    TIMESTAMP 날짜 및 시간 부분 모두 포함하는 값에 사용 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 4 byte
  • 문자 타입

    • CHARVARCHAR

      • CHARVARCHAR 모두 숫자를 입력하여 몇 자 까지 입력할지 정한다. ex) CHAR(30), VARCHAR(1000)
      • CHAR고정 길이 문자열, VARCHAR가변 길이 문자열이다.
      • CHAR은 테이블을 생성할 때 선언할 길이로 고정되며 길이는 0에서 255 사이 값을 가진다.
      • VARCHAR의 길이는 0에서 65,535 사이 값으로 지정할 수 있으며 입력된 데이터에 따라 용량을 가변시켜 저장한다.
      • CHAR은 부동의 길이를 가진 데이터인 경우, VARCHAR은 유동적인 길이를 가진 데이터인 경우에 효율적이다.
    • TEXTBLOB

      • TEXTBLOB 모두 큰 데이터를 저장할 때 쓰는 타입이다.
      • TEXT큰 문자열 저장에 쓰인다. ex) 게시판 게시글의 본문 저장
      • BLOB이미지, 동영상 등 큰 데이터 저장에 쓰인다.
    • ENUMSET

      • ENUMSET 모두 문자열을 열거한 타입이다.
      • ENUM은 ENUM('x-small', 'small', 'medium', 'large', 'x-large') 형태로 쓰인다.
      • ENUM단일 선택만 가능하며 ENUM 리스트에 없는 값을 삽입하면 빈 문자열이 삽입된다.
      • ENUM은 매핑되어 저장되기 때문에 메모리를 적게 사용하는 이점을 얻고 최대 65,535개의 요소들을 넣을 수 있다.
      • SET여러 개의 데이터를 선택할 수 있다.
      • SET비트 단위의 연산을 할 수 있으며 최대 64개의 요소를 집어넣을 수 있다.

관계형 데이터베이스의 제약 조건

키 (Key)

image
  • 의미: 테이블 간의 관계를 명확하게 하고, 데이터를 식별하고 관리하기 위한 속성

  • 특징

    • 슈퍼키는 유일성이 있다.
    • 후보키는 유일성에 최소성까지 갖춘 키이다.
    • 대체키는 후보키 중 기본키가 되지 못한 키들이다.

유일성: 하나의 키 값으로 튜플을 유일하게 식별할 수 있는 성질

최소성: 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질

  • 기본키(Primary Key)

    • 유일성최소성을 만족하는 키이다.
    • 테이블의 데이터 중 고유하게 존재하는 속성이다.
    • 기본키에 해당하는 데이터는 중복되는 값이 있어서는 안된다.
    • 기본키는 자연키 또는 인조키 중 골라 설정한다.

    자연키: 중복된 값들을 제외하며 중복되지 않는 것을 자엽스레 뽑다가 나오는 키로 연젠가는 변한 수 있는 속성을 가진다.

    인조키: 인위적으로 생성한 키를 의미하며 자연키와는 대조적으로 변하지 않는다.

  • 외래키(Foreign Key): 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는 데 사용한다.

  • 후보키(candidate key): 기본키가 될 수 있는 후보들이다.

  • 대체키(alternate key): 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하는 남은 후보키들이다.

  • 슈퍼키(super key): 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키이다.

참고 자료