SQL

[SQL] DBMS, SQL 기초 (간단한 설명)

15호의 개발자 2022. 3. 31. 12:00
반응형

[SQL] DBMS, SQL 기초 (간단한 설명)

 


 

DBMS란?

  • DBMS는 Data Base Management System의 약자로, 데이터베이스(DB)를 관리하는(Managemenet) 시스템(System)을 의미한다. 이때 DB(Database)는 테이블들이 모여 이루는 데이터 단위이다.
  • 데이터를 저장하고 유지보수(수정, 삭제, 추가)하고 이를 검색하는 시스템이다.
    - CRUD(Create, Retrieve 또는 Read, Update, Delete)
  • 대량의 데이터를 처리하는 시스템이다.
  • 다양한 자료구조와 검색구조(정렬, 인덱싱 등)를 사용해 빠른 검색이 가능하다.
  • 대부분의 시스템은 R(검색)의 빈도 수가 CUD(업데이트)보다 압도적으로 많다.
  • RDBMS는 검색(R)에 최적화된 시스템이다.
    - 쓰기(Update)에 최적화된 시스템은 NoSQL 계열이다.

 

 

 

정렬

  • 빠른 검색을 위해서는 데이터가 반드시 정렬(Sorting)되어 있어야 한다.
    - cf. 정렬되어 있지 않은 데이터는 pile(파일)이라고 부른다.
  • 정렬되어 있지 않다면 평균적으로 전체 데이터의 절반이 필요하다.
    - 최선: 1, 최악: N, 평균: N/2
  • 정렬되어 있는 경우 데이터를 빠른 시간 안에 찾을 수 있다.
    - O(NlogN) - O(N^2)
  • 퀵정렬/힙정렬 계열의 알고리즘이 주로 사용된다.

 

 

 

인덱스 (Index)

  • 인덱스 종류
    • 이진검색(Binary Search)
      - 최대 log2(N)번 내에 검색 가능하다.
      - 한 번에 하나만 비교를 한다. 절반을 나눠서 그 값보다 큰지 작은지..
    • B-Tree 계열
      - 상용 DBMS에서 가장 일반적으로 많이 사용된다. (일반적으로 DBMS에서 사용되는 index라 하면 B-Tree 계열의 인덱스를 칭한다.)
      - 이진검색 계열을 조금 더 최적화한 개념으로, 이진검색 계열보다 빠르다
      - 이진 검색과 유사하지만 한 번에 비교를 2번 한다. x<a, a<x<b, x>b
      - 데이터가 추가, 삭제, 변경될 때마다 a와 b값을 업데이트해야 한다.
  • 데이터를 추가, 수정, 삭제할 때마다 정렬/인덱스 업데이트가 일어난다.
  • RDBMS는 데이터의 검색(R)을 빠르게 하기 위해서 데이터를 변경(CUD)할 때 인덱스를 미리 만들어서 데이터의 검색이 빨리 되도록 한다. 하지만 데이터의 변경이 많을 경우에는 인덱스 때문에 오히려 성능이 떨어지기도 한다.

 

 

 

DBMS의 종류

  • 계층형 데이터베이스
  • 네트워크형 데이터베이스
  • 관계형 데이터베이스 (RDBMS) (가장 일반적인 데이터베이스의 형태)
  • 객체지향형 데이터베이스
  • 객체관계형 데이터베이스 (ORDBMS)
  • NoSQL (Not Only SQL)

 

 

 

RDBMS란?

  • RDBMS란 관계형 데이터베이스 시스템을 말한다.
  • 테이블 기반(Table based)의 DBMS로써, 데이터를 테이블 형태로 관리하는 시스템이라고 생각하면 된다.
    - 테이블/컬럼 형태의 데이터 저장 방식이다.
    - 테이블과 테이블 간의 연관관계(주로 외래키 형태)를 이용해 필요한 정보를 구하는 방식이다.
  • 모델링은 E-R(Entity Relationship) 모델을 사용한다.
  • 테이블을 엔티티(기본 테이블)와 릴레이션십(유도/파생 테이블) 테이블로 구분하는 방식이다.
  • 데이터를 테이블(Table) 단위로 관리한다.
    - 하나의 테이블은 여러 개의 컬럼으로 구성된다.
  • 테이블끼리의 중복 정보는 최소화시킨다.
    - 동일한 데이터가 여러 군데 중복되어 존재하면 데이터의 수정시 문제 발생 확률이 높아진다. 모델링할 때 중복된 정보를 최소화하게끔 모델링해야 한다.
    • 정규화(Normalize) -> 정규형
      - 정규화란 동일한 데이터가 여러 군데 저장되지 않도록 스키마(테이블 구조)를 만드는 것을 의미한다.
  • 사용 방식: 여러 테이블을 합쳐 큰 테이블을 생성(join, 조인)해서 필요한 정보를 찾아내는 방식이다.

 

 

 

기본 용어

  • 스키마 (Schema)
    - DB, 테이블 정의 내역
  • SQL 쿼리 (SQL Query)
    - 관계형 DBMS를 사용하는 전용 질의 언어
    - 대소문자를 가리지 않는다.
  • 기본키 (Primary Key, PK)
    - 테이블에서 하나의 레코드를 지정할 수 있는 하나 이상의 컬럼 집합
    - ex. 주민등록번호
  • 외래키 (Foreign Key, FK)
    - 어떤 테이블의 기본키가 다른 테이블의 컬럼에 들어있을 경우
  • 테이블 (Table)
    - 정보들의 묶음 단위
    - ex. 학교, 학생, 교수 ...
  • 컬럼 (Column)
    - 테이블을 구성하는 정보들
    - ex. 학생테이블 - 이름, 주소, 전화번호, 나이, 성별 ...
  • 레코드 (Record)
    - 테이블에 들어있는 여러 가지 인스턴스 하나하나를 지정
    - ex. 대학교의 학과 테이블 (경영학과, 컴퓨터공학과 ...)
    - 기본키(PK)로 구별 가능
  • 도메인값 (Domain Value)
    - 각 컬럼에서 나올 수 있는 후보값 (모든 경우의 수를 의미하는 값)

 

 

 

 

(출처: 실습과 함께하는! 데이터베이스 MySQL편)

반응형