쥬로그
오라클 - DBMS 기초 본문
데이터베이스는 처음 공부해본다.
확실히 프로그래밍 언어랑은 다르게 단순한 거 같으면서도~ 쿼리문이 어렵다.
그렇지만 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 |