들어가기 전에
이 포스팅은 오라클로 배우는 데이터베이스 입문(이지훈 저)을 읽으면서 기억하고자 하는 내용 및 추가적으로 알아본 내용을 담았습니다. 책 전체 내용을 보시고 싶으신 분은 책을 구매하시어 읽어보시길 바랍니다.
데이터베이스
데이터베이스란, 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터 집합입니다.
데이터베이스 개념이 등장하기 전에는 주로 파일 시스템 방식을 사용하여 데이터를 관리하였습니다. 파일 시스템은 서로 다른 여러 응용 프로그램이 제공하는 기능에 필요한 데이터를 각각 저장하고 관리합니다. 이때, 각 응용 프로그램에서 사용하는 데이터는 서로 연관이 없기 때문에, 중복 또는 누락이 발생할 수 있습니다. 특히, 데이터가 점점 복잡해지고 거대해지면 응용 프로그램이 각각 데이터를 관리하면 여기에 소모되는 시간과 자원이 크게 증가하게 되어 효율이 떨어질 수 있습니다.
각 응용 프로그램에서 함께 사용되는 데이터를 한 곳에 모아 관리하고 해당 데이터를 각각의 응용 프로그램에 함께 사용하면 기존에 발생하던 데이터의 오류, 누락, 중복 등의 문제를 해결할 수 있습니다. 이렇게 여러 응용 프로그램이 사용할 데이터를 한 곳에서 관리하기 위해 데이터베이스를 활용합니다.
데이터베이스는 데이터 집합이라고 표현하였습니다. 이때의 데이터가 어떤 의미인지 정보와 비교하여 알아보도록 하겠습니다.
데이터(data)와 정보(information)
데이터베이스 분야에서 데이터와 정보는 서로 다른 의미로 해석됩니다. 데이터는 필요에 의해 수집을 하였으나 정제하지 않은 날것의 값 또는 자료를 의미합니다. 반면, 정보는 수집된 데이터를 바탕으로 특정 목적을 위해 분석, 가공하여 새로운 의미를 부여한 결과입니다.
수집된 데이터를 바탕으로 분석을 진행하여 정보를 얻어내기 때문에, 가치 있는 정보를 얻기 위해서는 정확한 데이터들이 필요합니다. 따라서, 데이터는 아래 그림의 조건에 맞게 수집되고 관리되어야 합니다.
데이터베이스란, 위 조건을 만족하면서 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터 집합이라고 볼 수 있습니다.
DBMS(DataBase Management System)
DBMS는 데이터베이스 관리 시스템을 의미하며, 다수의 사용자들이 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어 도구의 집합입니다. 응용 프로그램 또는 사용자가 필요한 작업을 DBMS에 요청하면, DBMS는 자신이 관리하는 데이터베이스로 관련 작업을 수행하고 결과값을 제공합니다.
DBMS의 장점
- 데이터 누락/중복 최소화
- 데이터의 일관성 및 무결성
DBMS의 단점
- 높은 유지 비용
- 백업 및 복구 난이도 높음
RDBMS(Relational DataBase Management System)
DBMS 중에서도 관계형 데이터베이스를 관리하는 시스템을 RDBMS라고 부릅니다. 보통 실무에서 DB 또는 데이터베이스라고 지칭하는 것은 이 RDBMS인 경우가 많습니다.
오라클 데이터베이스의 경우, 보통 관계형 데이터베이스라고 하지만 정확하게 말하면 관계형 데이터베이스에 객체 개념을 도입한 객체 관계형 데이터베이스입니다.
SQL(Structured Query Language)
SQL은 RDBMS에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어입니다. SQL의 종류는 아래와 같이 크게 5가지로 나뉩니다.
- DQL(Data Query Language): RDBMS에 저장한 데이터를 원하는 방식으로 조회하는 명령어
- DML(Data Manipulation Language): RDBMS 내 테이블의 데이터를 저장/수정/삭제하는 명령어
- DDL(Data Definition Language): RDBMS 내 데이터 관리를 위해 테이블을 포함한 여러 객체를 생성/수정/삭제하는 명령어
- TCL(Transaction Control Language): 트랜잭션 데이터의 영구 저장/취소 등과 관련된 명령어
- DCL(Data Control Language): 데이터 사용 권한과 관련된 명령어
관계형 데이터베이스
관계형 데이터베이스를 구성하는 주요 요소에 대해 알아보도록 하겠습니다. 관계형 데이터베이스에서 관계란 행과 열의 특성에 맞추어 데이터를 저장한 테이블 하나를 의미합니다.
테이블
관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리합니다.
- 가로줄은 행(row)이라고 하며 하나의 개체를 구성하는 여러 값을 의미합니다.
- 행은 tuple 또는 record라고 불립니다.
- 세로줄은 열(column)이라고 하며, 저장하려는 데이터를 대표하는 이름과 공통 특성을 정의합니다.
- 열은 속성을 의미하는 attribute 또는 field라고도 불립니다.
키(key)
키는 수많은 데이터를 구별할 수 있는 유일한 값이라는 뜻이며, 하나의 테이블을 구성하는 여러 열 중 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미합니다. 키는 기본키(primary key), 후보키(candidate key), 외래키(foreign key), 복합키(composite key) 등으로 구분할 수 있습니다.
기본키(PK, primary key)
기본키는 여러 키 중 가장 중요한 키로서 한 테이블 내에서 중복되지 않는 값만 가질 수 있는 키입니다.
기본키의 속성
1. 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다
2. 값의 중복이 없어야 한다.
3. NULL 값을 가질 수 없다.
후보키(candidate key)
후보키는 기본키가 될 수 있는 모든 키를 의미합니다.
- 보조키는 대체키(alternate key)라고도 불리며, 후보키 중에서도 기본키로 지정되지 않은 열을 의미합니다.
외래키(FK, foreign key)
외래키는 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 의미합니다.
위 그림의 학과 정보 테이블의 각 레코드를 구분할 수 있는 값은 학과 코드입니다. 이 학과 코드는 학생 정보 테이블의 특정 열에 존재하기 때문에 학생 정보 테이블에서 학과 코드는 외래키 역할을 합니다.
외래키를 이용해 테이블을 나누는 이유는, 중복 데이터를 줄여 비용 증가를 최대한 줄이기 위함입니다. 예를 들어, 학생 정보와 학과 정보를 하나의 테이블에 넣게 되면 특정 학과에 학생이 늘어나게 되면 동일한 학과 정보 데이터가 중복해서 들어가게 되어 중복 데이터 처리 비용이 증가하게 됩니다.
저장 공간 크기와 관리 비용은 밀접한 관련이 있기 때문에 데이터 중복은 최대한 피하는 것이 좋습니다.
복합키(composite key)
복합키는 여러 열을 조합하여 기본키 역할을 할 수 있도록 만든 키를 의미합니다. 하나의 열만으로 각 레코드를 식별하는 것이 불가능할 때 복합키를 사용합니다.
위 예시와 같이 하나의 과목을 여러 교수님이 담당하고 있다면, 과목 코드와 담당 교수 컬럼을 묶어 복합키를 기본키로 사용하여 레코드를 식별할 수 있습니다.
오라클 데이터베이스
오라클 데이터베이스는 대표적인 상용 관계형 데이터베이스입니다.
자료형
오라클 데이터베이스는 여러 자료형을 제공하고 있으며 대표적인 자료형은 아래와 같습니다.
자료형 | 설명 |
VARCHAR2(길이) * | 4000byte만큼의 가변 길이 문자열 데이터를 저장할 수 있습니다(최소 크기는 1byte). |
NUMBER(전체 자릿수, 소숫점 이하 자릿수) * | ±38자릿수의 숫자를 저장할 수 있으며, 전체 자릿수는 소숫점 이하 자릿수를 포함한 자짓수입니다. 예) NUMBER(5,2)은 123.45와 같은 값이 들어갈 수 있습니다. |
DATE * | 날짜 형식을 저장하기 위해 사용하는 자료형으로 세기, 연, 월, 일, 시, 분, 초 저장이 가능합니다. |
CHAR(길이) | 4000byte만큼의 고정 길이 문자열 데이터를 저장할 수 있습니다(최소 크기는 1byte). |
NVARCHAR2(길이) | 4000byte만큼의 가변 길이 국가별 문자 세트 데이터를 저장할 수 있습니다(최소 크기는 1byte). |
BLOB | 최대 크기 4GB의 대용량 이진 데이터를 저장할 수 있습니다. |
CLOB | 최대 크기 4GB의 대용량 텍스트 데이터를 저장할 수 있습니다. |
BFILE | 최대 크기 4GB의 대용량 이진 데이터 파일을 저장할 수 있습니다. |
- 가장 많이 사용되는 자료형에는 *를 표기하였습니다.
객체
객체는 오라클 데이터베이스 내에서 데이터를 저장하고 관리하기 위한 논리 구조를 가진 구성 요소입니다. 오라클 객체의 종류는 아래와 같으며, 각 객체에 대해서는 이후 포스팅 등을 통해 알아보겠습니다.
객체 | 설명 |
테이블(table) | 데이터를 저장하는 장소 |
인덱스(index) | 테이블의 검색 효율을 높이기 위해 사용함 |
뷰(view) | 하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 해 줌 |
시퀀스(sequence) | 일련 번호를 생성해 줌 |
시노님(synonym) | 오라클 객체의 별칭(다른 이름)을 지정함 |
프로시저(procedure) | 프로그래밍 연산 및 기능 수행이 가능함(반환 값 X) |
함수(function) | 프로그래밍 연산 및 기능 수행이 가능함(반환 값 O) |
패키지(package) | 관련 있는 프로시저와 함수를 보관함 |
트리거(trigger) | 데이터 관련 작업의 연결 및 방지 관련 기능을 제공함 |
PL/SQL(Procedural Language extension SQL)
오라클 데이터베이스를 포함한 여러 관계형 데이터베이스에서 기존 SQL만으로 구현하기 어려운 복잡한 기능은 별도의 프로그래밍 언어를 통해 구현합니다. 이를 PL/SQL이라고 하며, PL/SQL을 사용하면 변수, 조건문, 반복문 등 프로그래밍 언어에서 제공하는 요소를 사용해 데이터를 관리할 수 있습니다.
참고 자료
- 오라클로 배우는 데이터베이스 입문(이지훈 저)
'DB > Oracle' 카테고리의 다른 글
[Oracle] Oracle Function(오라클 함수) - 문자 함수 (0) | 2022.05.07 |
---|---|
[Oracle] Oracle Database에서 사용되는 연산자 종류 알아보기 (0) | 2022.05.06 |
[Oracle] SELECT에 대해 알아보기 (0) | 2022.05.06 |
[Oracle, macOS] Docker를 이용한 Oracle Database 11gR2 XE 설치 및 실행하기(SQLPlus, DataGrip 접속 및 SCOTT 계정 생성) (1) | 2022.05.05 |
[Oracle, macOS] Docker를 이용한 Oracle Database 18c XE 설치 및 실행하기(SQLPlus) (1) | 2021.08.17 |