쥬로그

오라클 - DBMS 기초 본문

Study/Oracle

오라클 - DBMS 기초

쥬쥬씨 2021. 8. 26. 18:32
반응형

데이터베이스는 처음 공부해본다.

확실히 프로그래밍 언어랑은 다르게 단순한 거 같으면서도~ 쿼리문이 어렵다.

그렇지만 DB는 모든 개발의 기초이니 열심히 공부해서 능숙해져야겠다.

뭔가 개발의 전체적인 그림이 하나, 둘 맞춰져가고 있는 느낌이다!

 

강의 내용을 정리하며 나만의 노트를 완성해가는 중...!

 


 

< DBMS 기초 >

- RDBMS 는 데이터의 검색(Retrieve)빠르게 하기 위해

  데이터를 변경(추가/업데이트/삭제)할 때 인덱스를 미리 만들어서 데이터의 검색을 빨리 되도록 한다.

  하지만 데이터의 변경이 많을 경우에는 인덱스 때문에 오히려 성능이 떨어지기도 한다.

 

- 정규화(Normalization)란?

  동일한 데이터가 중복 저장되지 않도록 다양한 정규형을 적용해 스키마(테이블구조)를 만드는 것을 말한다.

 

* DBMS: Data Base Management System

  = 데이터베이스를 관리하는 시스템

 

  DB: 테이블들이 모여 이루는 데이터 단위

 

  데이터를 저장하고 유지보수(수정, 삭제, 추가)하고 이를 검색하는 시스템

  -> CRUD (Create, Retrieve, Update, Delete)

 

- 대량의 데이터를 처리하는 시스템

- 다양한 자료구조와 검색구조(소팅, 인덱싱…) 사용해 “빠른” 검색 가능

- 대부분의 시스템은 R(검색) >> >> CUD(업데이트)의 빈도수가 많음

- 검색에 최적화


* 정렬 (Sorting)

- 빠른 검색을 위해 데이터가 반드시 정렬되어 있어야 함

- 정렬 되어 있지 않다면 평균적으로 전체 데이터의 절반 필요

  (최선: 1, 최악: N, 평균: n/2)

- 정렬되어 있을 경우 데이터를 빠른 시간 안에 찾을 수 있음

  O(NlogN) - O(N제곱)

- 퀵정렬/힙정렬 계열이 주로 사용됨

 

* 인덱스 (Index)

- 이진검색 (Binary Search)

   최대 log2(N)번 내에 검색가능

   데이터를 정렬 후 한가운데, 왼쪽 가운데, 오른쪽 가운데 값 등을 미리 계산해 놓음

 

- B-Tree

   상용 DBMS에서 가장 일반적으로 많이 사용됨

   이진 검색과 유사하지만 한 번에 2번 비교

   이진검색 계열보다 빠름

    a, b : a < b (데이터가 추가/삭제/변경 될 때마다 a, b 값을 업데이트)

 

=> 데이터 추가/수정/삭제할 때마다 정렬/인덱스 업데이트가 일어남

 

  DBMS의 종류

  - 계층형 데이터베이스

  - 네트워크형 데이터베이스

  - 관계형 데이터베이스

  - 객체지향 데이터베이스

  - 객체관계형 데이터베이스

  - NoSQL(not only SQL)


* 관계형(Relational) 데이터 베이스

- 테이블 기반의 DBMS

- 테이블 / 컬럼 형태의 데이터 저장 방식

- 테이블과 테이블 간의 연관관계(주로 외래키 형태)를 이용해 필요한 정보를 구하는 방식

- 모델링은 E-R (Entity Relationship) 모델을 사용

- 테이블을 기본(Entity)와 유도(Relationship) 테이블로 구분하는 방식

 

데이터를 테이블 단위로 관리

-> 하나의 테이블은 여러 개의 컬럼으로 구성됨

 

테이블끼리의 중복정보는 최소화시킴

-> 동일한 데이터가 여러 군데 중복되어 존재하면 데이터의 수정 시 문제 발생 확률 높음

-> 정규화(normalize) => 정규형

 

사용방식

-> 여러 테이블을 합쳐 큰 테이블을 생성(조인 JOIN)해서 필요한 정보를 찾아내는 방식


< 기본 용어 >
* 스키마 (Schema)
  DB, 테이블 정의 내역

* SQL쿼리 (SQL Query) = 질의어
  관계형 DBMS를 사용하는 전용 질의언어
  대소문자 가리지 않음

* 기본키 (Primary key: PK)
  테이블에서 하나의 레코드를 지정할 수 있는 하나 이상의 컬럼집합
  ex) 주민등록번호, 핸드폰 전화번호

* 외래키 (Foreign key: FK)
  어떤 테이블의 기본키가 다른 테이블의 컬럼에 들어 있을 경우 (조인)
  테이블과 테이블 사이 연결 키

* 테이블
  정보들의 묶음 단위

* 컬럼
  테이블을 구성하는 정보들

* 레코드
  테이블에 들어 있는 여러가지 인스턴스 하나 하나를 지정
  기본키로 구별 가능

* 도메인값 (Domain value)
  각 컬럼에서 나올 수 있는 후보 값
  ex) 계절 -> 봄, 여름, 가을, 겨울

       월 -> 1월, 2월, 3월 ... 11월, 12월


< Point > 
☆ 일반적인 데이터베이스의 형태 = RDBMS (관계형 DBMS)
☆ 관계형 데이터베이스는 CRUD 중 R (Retrive)에 최적화 되어 있다.

    이는 데이터의 변경보다는 검색의 빈도가 압도적으로 많기 때문이다.

    이를 위해 인덱스와 같은 보조 자료구조를 이미 만들어두고 검색 사용해 검색 속도를 높인다.
☆ 어떤 테이블의 기본키가 다른 테이블의 컬럼으로 저장될 경우 이 컬럼은 외래키(FK: Foreign Key)라고 부른다.

    보통 여러 테이블을 합치는 조인(join)의 경우 외래키를 통해 합치는 경우가 일반적이다.


< 요약 >
DBMS( Database Management System)
- 데이터를 CRUD(생성, 수정, 삭제, 검색)하는 시스템
- 검색에 최적화(인덱스)
- 업데이트가 많은 경우 대안 필요
- NoSQL( not only SQL)

RDBMS( Relational DBMS)
- 테이블 형태로 관리되는 데이터베이스의 한 형태
- SQL 이라는 질의언어(쿼리문)를 사용

 

 

 

반응형

'Study > Oracle' 카테고리의 다른 글

오라클 - SELECT INTO, INSERT INTO SELECT  (0) 2021.08.30
오라클 - 조인, 별명, 뷰  (0) 2021.08.26
오라클 - 중복제거, 논리연산자, 결과정렬  (0) 2021.08.26
오라클 - SQL, CRUD  (0) 2021.08.26
오라클 - 기본 사용법  (0) 2021.08.26