데이터베이스란

데이터베이스는 많은 데이터와 그들의 관계, 그들의 설명을 저장하는 구조. (A structure that can store many data, relationship among them and description about them.)

우리는 흔히 자료(데이터)와 정보를 구분하지 않고 사용합니다. 하지만 데이터베이스를 배우고 난 후에는 이 둘을 엄격하게 구분할 수 있어야 하는데, 그 둘은 이렇게 다릅니다.

자료 : 관찰 또는 측정의 결과로 얻어진 실제 값

정보 : 자료(데이터)를 처리해서 의미 있는 형태로 만든 것

예를 들어서 설명하면, 우리는 몸무게를 잴 수 있습니다. 측정한 몸무게 자체는 가공되지 않은 사실이므로 자료(데이터)라고 할 수 있습니다. 그러나 평균 몸무게는 *몸무게 데이터의 합을 총수로 나누는 처리를 거칩니다. * 따라서 정보라고 할 수 있습니다.

우리는 보통 일반인들도 알기 쉽게 그래프로 표현한 정보를 자주 볼 수 있습니다. 결국 우리에게 궁극적으로 필요한 것은 정보입니다. 정보는 의사 결정에 이용될 수 있고, 정확하고 효과적인 정보를 얻으려면 데이터가 적절하게 저장되어 있어야합니다. 우리는 데이터베이스를 이용해 효과적으로 데이터를 저장할 수 있는 수단을 배울 것입니다.

DBMS ?

‘데이터베이스’라고 하면 떠오르는것, 저는 DBMS였는데요. DBMS는 데이터베이스 관리 시스템(Database Management System)의 약자입니다. 흔히 DBMS와 데이터베이스를 혼용해서 사용합니다.

DBMS는 데이터베이스를 생성할 뿐 아니라 접근, 제어 등의 작업을 수행하는 소프트웨어. (A software system used to create, access and control a database.)

DBMS는 이러한 작업을 SQL(Structured Query Language)이라는 표준 데이터베이스 언어를 이용해 구현합니다.

DBMS는 다음 그림과 같이 동작합니다. 일반 사용자가 Client를 통해 명령을 전송하면, 그 명령은 SQL의 형태로 DBMS에 전달됩니다. 그 DBMS는 다시 SQL을 통해 데이터베이스에 정보를 요청하고, 리턴값이 다시 DBMS로 전달됩니다. DBMS에서는 또다시 SQL을 통해 Client에 정보를 제공하고 사용자는 정보를 받을 수 있습니다.

이러한 이론은 공간정보프로그래밍 II에서 배웠던 인터페이스와 유사합니다. 사용자는 후처리 과정을 알 수 없지만, DBMS는 사용자와 데이터베이스 사이에서 중재자 역할을 수행합니다.

그래서 데이터베이스는 어떻게 생겼나요?

데이터베이스 vs 엑셀

어떤 자료를 테이블 형식으로 엑셀이나 데이터베이스로 저장했다고 생각해 봅시다.

EMPNO EMPNAME TITLE SALARY DEPTNAME FLOOR
1001 박철수 대리 3000000 기획 8
1002 이민호 과장 4000000 영업 9
1003 김영희 부장 5000000 개발 10
1004 황진희 대리 3000000 개발 10
1005 정진우 사원 2000000 기획 8

이러한 데이터 저장 방식의 문제는 ‘데이터의 중복 저장’입니다. 예를 들면, 박철수와 정진우는 기획부서에서 근무하는데 이 기획부서가 8층에 있다는 것이 계속 저장되고 있습니다. 그럼에도 별 문제가 없어 보이지만 만약 기획부를 생산부로 명칭을 바꾼다면, 그리고 자료의 수가 상상이상으로 많다면 이것을 처리하는데 꽤나 애를 쓸 것입니다.

데이터베이스를 사용한다면 이런 방식의 사용이 가능합니다.

DEPTNO DEPTNAME FLOOR
1 기획 8
2 개발 10
3 영업 9
EMPNO EMPNAME TITLE SALARY DEPTNO
1001 박철수 대리 3000000 1
1002 이민호 과장 4000000 3
1003 김영희 부장 5000000 2
1004 황진희 대리 3000000 2
1005 정진우 사원 2000000 1

사람이 볼 때는 한 가지를 더 생각해야 되어 오히려 더 복잡해 보이지만, 저장 공간의 효율성은 비약적으로 상승한 것을 볼 수 있습니다. 기획,기획,개발,개발 … 이런 자료가 더이상 필요 없어지게 되었기 때문이죠.

대부분의 사람은 데이터를 테이블에 저장할 때 가능한 적은 수의 테이블을 이용하려고 하지만, 데이터베이스는 반대로 데이터가 복잡할수록 가능한 여러 개의 테이블을 이용해 저장하려는 특징이 있습니다. 위와 같이 여러 개의 테이블을 이용해 저장하더라도 원래의 데이터를 손실 없이 저장할 수 있습니다.

만약 이런 경우에 방금과 같이 기획부를 생산부로 명칭을 바꾸고 싶다면? 앞의 테이블에서 기획을 생산으로 변경하면 됩니다.

키를 사용

데이터베이스에서 테이블을 참조하는 것은 키를 이용하는데, 기본키와 외래키가 있습니다.

외래키 : 두 번째 테이블의 DEPTNO

기본키 : 첫 번째 테이블의 DEPTNO

이정도만 해도 감이 오지만, 앞으로 데이터베이스의 수업에서는 더 자세히 알아볼 것이므로 패스하겠습니다.

파일 시스템 vs DBMS

현재 우리는 파일 시스템을 자주 이용합니다. 그런데 데이터를 저장하는 측면에서는 파일 시스템에 비해 DBMS가 가지고 있는 많은 장점이 있는데요, 한번 알아보도록 합시다.

파일 시스템의 단점

  • 프로그램과 파일 간의 종속성 : 파일을 열어 데이터에 접근하려면 특정 응용 프로그램이 있어야 합니다. (엑셀 등)
  • 데이터의 중복성과 불일치 유발 : 만약 협동 과제를 수행하기 위해 파일을 공유해 수정한다면, 조원의 파일과 나의 파일은 업데이트 현황이 다릅니다.
  • 다수 사용자를 위한 제어가 안 됨 : 파일 시스템은 동시에 파일에 접근해 수정하는 일이 불가능합니다.
  • 제한적인 정보 제공 : 응용 프로그램마다 독립적인 파일을 가지고 있으며, 각각의 파일에 대한 정보만 제공하므로 제한적인 정보만 제공하게 됩니다.
  • 어려운 보안 : 만약 학생들의 성적을 관리하는 파일이 있다면, 당연히 학생들은 읽기 권한만 부여하고 선생님은 쓰기 권한도 부여해야 하는데 파일 시스템은 사용자에 대한 권한을 구체적으로 명시하기가 어렵습니다. 일단 파일에 대한 사용자를 명시하는 것 자체가 어렵습니다.
  • 회복 기능이 없음 : 파일을 편집하다가 작업 내용을 잃게 된 경험이 자주 있을 것입니다.
  • 생산성이 낮음 : 파일을 검색하거나 갱신하는 절차가 상대적으로 복잡합니다.

DBMS의 특징

DBMS는 앞서 명시한 파일 시스템의 단점을 모두 극복 가능합니다. DBMS는 테이블에 대한 정보를 메타데이터라는 형태로 데이터베이스에 함께 저장하는데, 파일 시스템은 데이터 파일에 대한 정보를 응용 프로그램 내에 저장하는 데 반해 DBMS는 이러한 정보를 데이터베이스 내에 저장한다는 점이 큰 차이점 입니다.

따라서 파일 시스템은 파일 구조가 바뀌면 응용 프로그램 자체를 수정해야 하지만, DBMS는 그럴 필요가 없습니다. DBMS는 그저 이에 대한 정보를 저장하는 메타데이터를 수정하기만 하면 되기 때문입니다. 이를 데이터 독립성이라고 하기도 합니다.

데이터 독립성을 표현한 그림입니다. 많은 응용프로그램에서 하나의 DBMS를 다룰 수 있습니다.

DBMS의 장점

  • 데이터 독립성 : 응용 프로그램은 DBMS를 통하여 데이터에 접근합니다. 테이블의 구조는 메타데이터를 통해 DBMS가 이미 알고있고, 응용 프로그램은 알 필요가 없습니다. 이를 데이터 독립성 (data independence)이라고 합니다. 데이터베이스의 수정이나 프로그램의 수정이 서로 영향을 주지 않는것을 의미합니다.
  • 데이터 중복과 비일관성 방지 : 파일 시스템과 달리 DBMS는 중복된 애용이 저장되지 않으며 수정 작업으로 인해 데이터가 불일치할 가능성도 낮습니다.
  • 데이터 무결성 : 데이터 무결성이란 데이터에 결함이 없게 한다는 뜻입니다. 파일 시스템을 이용한다면 규격에 맞지 않는 데이터 (예를 들면 자리수가 맞지 않는 우편번호 등)로 인한 오류가 생길 수 있는데, DBMS는 이러한 오류가 생길 가능성을 낮추는 기능이 포함되어 있습니다.
  • 데이터 동시 사용 : 데이터 일관성과 관련이 큽니다. DBMS는 동시성 제어라는 기능이 강화되어 동시에 사용할 때에도 일관성을 유지합니다.
  • 백업과 회복 기능 : 하나의 단위로 묶어 처리하는 트랜젝션(transaction)이라는 기능을 제공하는데, 예를 들어 은행 계좌이체 상황에서 문제가 생겼다면, 계좌이체 트랜젝션이 이루어지기 이전 상태로 되돌릴 수 있습니다. 따라서 데이터가 불일치하는 경우를 방지합니다.
  • 보안의 향상 : 사용자나 그룹에게 다른 권한을 부여해 보안을 강화할 수 있습니다. 데이터의 어떤 부분에 대해 접근 권한을 부여할지를 세밀하게 부여할 수 있습니다.
  • 표준화 용이 : 예를 들어 전화번호를 입력할 때 어떤 사람은 ‘-‘를 사용할 것이고 어떤 사람은 사용하지 않을 수 있습니다. DBMS는 데이터를 통합하여 하나의 데이터베이스에 저장하므로 이를 통일하여 적용할 수 있습니다.
  • 쉬운 질의어 : SQL을 이용해 간단하게 통합된 데이터를 다양하게 질의하고 수정할 수 있습니다.
  • 다양한 사용자 뷰 제공 : DBMS는 다양한 사용자가 있을것이고 각각의 목적 또한 다를 수 있기 때문에, 목적에 맞는 데이터를 질의를 통해 제공할 수 있습니다.

자료의 형태

자료는 그것의 형태로 크게 2가지 혹은 4가지로 나눌 수 있습니다.

범주형 : 몇 개의 범주로 나누어진 자료를 의미

  • 명목형 : 이름, 성별, 종교 등 단순히 분류된 자료
  • 순서형 : 상/중/하, 나쁨/좋음 등 범주이긴 한데 그 사이의 순위는 존재하지만 수학적인 계산은 불가한 것

수치형 : 이산형과 연속형으로 이루어진 자료를 의미

  • 등간척도 : 절대 영점이 존재하지 않음, 온도 등 (온도는 없을 수 없기 때문)
  • 비율척도 : 절대 영점이 존재, 무게 등 (무게가 0인 경우가 가능하기 때문)