데이터베이스 - Oracle

이번엔 데이터베이스를 정리하고자 한다. 사실 정리라기보다는 이제 막 발을 떼고 공부를 시작했다는 표현이 더 맞을 것 같다. 데이터를 어떻게 관리하는지를 어느정도 머릿속에 정리하기위해 작성해본다.

본 포스트는 인프런 - Oracle SQL Database 11g PL/SQL Developer를 수강하고 작성했다.

목차



Database

데이터베이스는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합이다. 복수의 데이터를 조직적으로 통합하여 중복을 없애고 데이터를 구조화하여 기억시켜 놓은 자료의 집합체이다.

일반적으로 응용 프로그램과는 별개의 미들웨어를 통해서 관리된다. 데이터베이스 자체만으로는 아무것도 할 수 없기 때문에 소프트웨어 관리 시스템과 통합돼 제공된다. 정확한 명칭은 데이터베이스 관리 시스템(DBMS, DataBase Management System)이다.

나무위키에 작성된 내용을 첨부하면 아래와 같다.

데이터베이스 자체는 화물(데이터)을 저장할 수 있는 창고 그 자체의 역할만 수행하고, 화물을 적재하거나 적재된 화물을 처리할 수 있는 능력은 없다. 이 때문에 DBMS라는 관리자들을 고용하여 화물을 적재하거나 이동시키는 등 여러가지 업무를 수행하도록 하는 것이다.

관계형 데이터베이스(Relational Database)를 이용하기 위해 만들어진 언어로 SQL(Structured Query Language) 이 있는데, SQL을 통해 데이터 추가/탐색/수정/삭제 등의 작업을 할 수 있다.

특징

  • 실시간 접근성
  • 지속적인 변화
  • 동시 공유
  • 내용에 대한 참조
  • 데이터 논리적 독립성

장점

  • 데이터 중복 최소화
  • 데이터 공유
  • 일관성, 무결성, 보안성 유지
  • 최신의 데이터 유지
  • 데이터의 표준화 기능
  • 데이터의 논리적, 물리적 독립성
  • 데이터 저장 공간 절약

단점

  • 데이터베이스 전문가 필요
  • 비용 부담
  • 데이터 백업과 복구가 어렵다 그러나 최근엔 많이 개선됨
  • 시스템의 복잡함
  • 대용량 디스크로 액세스가 집중되면 과부화 발생

DDL

Data Definition Language

데이터를 정의하는 언어이다.

테이블을 생성하거나 삭제 등 데이터베이스 스키마(Scheme)를 정의또는 관리 하는 언어이다.

  • CREATE : 정의
  • ALTER : 수정
  • DROP : 삭제
  • TRUNCATE : DROP 후, CREATE

DML

Data Manipulation Language

테이블 등의 데이터를 조작(추가/조회/수정/삭제) 하는 언어이다. 응용 프로그램과 데이터베이스 사이에서 실질적인 데이터 처리를 위해 사용된다.

  • INSERT : 추가
  • SELECT : 조회
  • UPDATE : 수정
  • DELETE : 삭제

연관 포스트 : Oracle - DML 명령어


DCL

Data Control Language

데이터를 제어 하는 언어이다.

사용자 권한, 작업의 취소 등 DML과 비교하여 상위 개념(?)의 언어라고 생각한다.

  • COMMIT : 작업 결과 반영
  • ROLLBACK : 트랜잭션의 작업을 취소 / 복구(undo)
  • GRANT : 사용자에게 권한 부여
  • REVOKE : 권한 취소

DBMS

데이터베이스 그 자체로는 아무것도 할 수 없다. 데이터베이스를 사용하기 위해서는 관리 시스템이 필요하다고 했는데, 그 역할을 하는 소프트웨어를 DBMS라 한다. Oracle, MySQL, MS-SQL등이 여기에 속한다.

  • DataBase Management System
  • 데이터베이스를 관리하는 소프트웨어
  • Oracle, MS-SQL,MySQL 등이 DBMS에 속한다.

RDBMS

가장 많이 사용되는 데이터베이스 모델이다. 관계형 데이터베이스(Relational Database Management System)라고 해서 RDBMS라고 줄여서 말한다.

강의에서 강사님이 든 예를 인용하겠다.

SQL RDBMS Description
Row Tuplr, Record 하나의 항목을 대표하는 데이터
Column Attribute 튜플의 이름 요소
Table Relation 같은 속성을 공유하는 튜플의 모임

중간고사를 마치고 학생들의 성적을 분류하기 위해서 정렬한 학생 데이터가 있다고 가정하자.

연관된 학생들 즉, 같은 반 학생들끼리만 모아둔 형태 를 데이터베이스에서는 **테이블, 또는 Relation**이라고 한다.

그리고 그 반을 구성하는 학생들 은 데이터베이스에서 Tuple 로 비유할 수 있다. 그리고 해당 학생들이 각각 갖는 이름, 성적 등의 속성Attribute 가 될 수 있다.