반응형
[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값을 업데이트해야 한다.
- 이진검색(Binary Search)
- 데이터를 추가, 수정, 삭제할 때마다 정렬/인덱스 업데이트가 일어난다.
- RDBMS는 데이터의 검색(R)을 빠르게 하기 위해서 데이터를 변경(CUD)할 때 인덱스를 미리 만들어서 데이터의 검색이 빨리 되도록 한다. 하지만 데이터의 변경이 많을 경우에는 인덱스 때문에 오히려 성능이 떨어지기도 한다.
DBMS의 종류
- 계층형 데이터베이스
- 네트워크형 데이터베이스
- 관계형 데이터베이스 (RDBMS) (가장 일반적인 데이터베이스의 형태)
- 객체지향형 데이터베이스
- 객체관계형 데이터베이스 (ORDBMS)
- NoSQL (Not Only SQL)
RDBMS란?
- RDBMS란 관계형 데이터베이스 시스템을 말한다.
- 테이블 기반(Table based)의 DBMS로써, 데이터를 테이블 형태로 관리하는 시스템이라고 생각하면 된다.
- 테이블/컬럼 형태의 데이터 저장 방식이다.
- 테이블과 테이블 간의 연관관계(주로 외래키 형태)를 이용해 필요한 정보를 구하는 방식이다. - 모델링은 E-R(Entity Relationship) 모델을 사용한다.
- 테이블을 엔티티(기본 테이블)와 릴레이션십(유도/파생 테이블) 테이블로 구분하는 방식이다.
- 데이터를 테이블(Table) 단위로 관리한다.
- 하나의 테이블은 여러 개의 컬럼으로 구성된다. - 테이블끼리의 중복 정보는 최소화시킨다.
- 동일한 데이터가 여러 군데 중복되어 존재하면 데이터의 수정시 문제 발생 확률이 높아진다. 모델링할 때 중복된 정보를 최소화하게끔 모델링해야 한다.- 정규화(Normalize) -> 정규형
- 정규화란 동일한 데이터가 여러 군데 저장되지 않도록 스키마(테이블 구조)를 만드는 것을 의미한다.
- 정규화(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편)
반응형
'SQL' 카테고리의 다른 글
[SQL] JOIN 개념 및 종류, VIEW(뷰), SELECT INTO, INSERT INTO SELECT, CASE ... WHEN ... END (0) | 2022.04.11 |
---|---|
[SQL] SQL, CRUD 기초 (간단한 설명) (0) | 2022.04.07 |
[SQL] JOIN 알기 쉽게 설명 (INNER, LEFT/RIGHT/FULL OUTER) (0) | 2022.02.04 |
[SQL] 기본 문법 간단한 정리 (SHOW, USE, DESCRIBE 등) (0) | 2022.02.03 |
[SQL] mybatis 쿼리 select문 예시 (PostgreSQL) (0) | 2022.01.26 |