brunch

You can make anything
by writing

C.S.Lewis

by 김유환 Sep 06. 2019

5. 데이터베이스와 테이블

TablePlus 기반으로 알아보는 데이터베이스 기본 구성 요소

배경

지난 글 데이터베이스 접속하기에서는 TablePlus를 이용해 서버에 설치된 MySQL 데이터베이스에 접속해보았습니다. 오늘 글에서는 TablePlus 화면을 살펴보면서, 데이터베이스의 핵심 기본 구성 요소인 데이터베이스와 테이블에 대해 살펴보고자 합니다. TablePlus를 켜고, 데이터베이스가 설치되어있는 원격 서버에 접속해서 아래 화면에 접속하세요.


데이터베이스 (DB)

가장 먼저 알아볼 개념은 데이터베이스입니다. 데이터베이스의 기본 구성 요소가 데이터베이스라니 이상하게 생각이 들 수 있습니다. 명확하게 정리해서 개념을 이해해 보도록 합시다.

지금까지 그림에서, DBMS는 데이터를 저장소에 저장한다고 이야기했습니다. 우측 그림에서 노란색 드럼통처럼 생긴 아이콘이 저장소를 나타냅니다. 이 저장소의 또 다른 명칭이 바로 데이터베이스입니다. 


데이터베이스를 이용해 데이터분석을 할때, 1개 이상의 데이터베이스를 만드는것이 일반적입니다. 여러개의 데이터베이스를 만드는 이유는 각 데이터베이스마다 데이터베이스에 접근할 수 있는 계정을 설정할 수 있기 때문입니다.


예를 들어, 하나의 회사에 회원관리팀과 마케팅 팀이 있다고 가정해봅시다. 각 부서는 자기들이 관리하는 데이터에만 접근권한을 가지고 다른 부서의 데이터베이스에는 접근권한을 주지 않고 싶다고 합시다. 이 경우에 위의 그림과 같이 회원관리팀 데이터베이스 하나, 마케팅팀 데이터베이스를 하나 만듭니다. 그리곤 각 부서가 사용할 수 있는 계정을 만들어서 권한을 제공하는 것입니다.


그렇다면, 왜 DBMS 를 포함하는 프로그램도 데이터베이스라고 부르고 데이터를 저장하는 공간도 데이터베이스라고 부르는 걸까요? 사실 일반 사용자 관점에서는 DBMS까지 알 필요가 없습니다. DBMS 프로그램이 어떻게 동작하는지는 궁금하지 않은 상태에서 데이터가 저장되었다가 필요할때 가져올 수 있는 어떤 장소를 의미하다보니, 편의상 전체 프로그램을 데이터베이스라고 부르게 된 것입니다. 사실 혼용해서 사용하더라도 문제가 발생하는 경우가 거의 없습니다. 예를 들어, "데이터베이스에 데이터를 저장한다" 라는 말을 했을때, 여기서 데이터베이스가 프로그램인지 저장소인지 크게 중요하지 않습니다. 기억해야하는 것은 MySQL 같은 프로그램도 데이터베이스라고 부르며, DBMS 가 데이터를 실제 저장하는 저장소도 데이터베이스라고 부른다는 것입니다.


이제 데이터베이스 개념에 대해서는 알아보았고 TablePlus를 이용해서 저장소를 의미하는 데이터베이스를 실제로 살펴보도록 합시다. 현재 서버에 설치되어있는 MySQL 프로그램 내부에 만들어져있는 데이터베이스(저장소)를 확인하기 위해서는, TablePlus 화면 좌측 상단의 데이터베이스 아이콘을 클릭하면 됩니다. 아래 왼쪽 그림에서 강조되어있는 데이터베이스 아이콘을 클릭하면 우측 그림처럼 서버내에 내가 접근할 수 있는 데이터베이스의 목록이 나오게 됩니다. 이 중에서 하나의 데이터베이스를 클릭하고 Open 버튼을 누르면 앞으로 DBMS로 보내는 데이터 삽입, 수정, 삭제 등의 요청은 해당 데이터베이스 (저장소)를 대상으로 진행하게 되는 것입니다.

스터디파이를 통해 공부하시는 분들은 아래 그림과 다르게 2개의 데이터베이스만 보일 것 입니다. 제가 제공해드린 아이디를 만들때 해당 2개의 데이터베이스에만 접근할 수 있도록 권한을 한정했기 때문입니다 :) 

추가로 한 가지만 더 살펴봅시다. 지난 시간에 데이터베이스 접속하기 위해 서버 IP 주소, 아이디, 비밀번호, 그리고 데이터베이스 항목을 입력했을 것입니다. 여기서 이야기하는 데이터베이스가 바로 지금 우리가 설명하고 있는 저장소를 나타내는 데이터베이스 입니다. 이곳에 우리가 기본으로 접속하기 원하는 데이터베이스 이름을 입력해두면, TablePlus 로 DBMS에 접속할때마다 해당 데이터베이스를 기본 데이터베이스로 사용하는 것 입니다.





테이블

다음으로 알아볼 기본 요소는 테이블입니다. 위에서 설명한 데이터베이스가 데이터를 저장하는 저장소라면, 테이블은 데이터베이스안에 실제 데이터가 저장되는 형태입니다. 파일에 데이터를 저장할때 어떤 구조로 저장할지 결정하는 것입니다. 여기서 의미하는 테이블은 우리가 엑셀 화면에서 익히 알고 있는 행과 열로 된 시트와 동일하다고 생각하시면 됩니다.

엑셀 파일 하나에 여러개의 시트가 존재할 수 있듯이, 하나의 데이터베이스 안에는 여러개의 테이블이 존재할 수 있습니다. 예를 들어, 위에서 언급한 회원관리팀의 경우 회원관리 데이터베이스를 접근할 수 있는 계정을 가지고 있을 것 입니다. 이 회원관리 데이터베이스 안에는 회원 정보 테이블, 회원별 후원금 테이블 등이 존재할 것입니다. (하나의 데이터베이스에 여러개의 테이블이 존재할 수 있다는 의미로 오른쪽 그림에서 테이블을 2개 그려놓았습니다!)


TablePlus에서 데이터베이스를 선택하고 나면, 좌측 중앙에 화면에 Tables 항목으로 현재 사용 가능한 테이블들이 나열됩니다. 각 테이블을 클릭하면, DBMS에 해당 테이블 데이터 중 일부를 요청하게 되고, DBMS가 데이터베이스로부터 추출해서 TablePlus에 전달한 데이터를 화면 중앙에 테이블 형태로 그려주게 됩니다.


스터디파이를 진행하시는 분들은 기본 테이블로 welcome 이라는 테이블을 만들어 두었습니다. 위의 그림에서 나타나는 sales 테이블이 나오지 않는다고 당황하지 마세요 :) 


데이터 타입

테이블에 대해서 이야기가 나온김에 기본 지식인 데이터 타입에 대해서 알아봅시다. 스프레드시트 기반 업무의 문제점 글에서 다루었던 스프레드시트 문제점 중 오타 발생 문제가 있었습니다. 숫자 데이터를 수정하는 도중에 문자를 함께 입력해 버리면, 최종적인 통계값에 문제가 생긴다는 것이었습니다. 데이터베이스는 이 문제를 어떻게 해결하는 걸까요? 바로 테이블의 각 열에 강력한 데이터타입 조건을 걸어서 이 문제를 해결합니다.


데이터타입은 숫자, 문자, 날짜 등 데이터의 종류를 의미합니다. 데이터베이스 프로그램마다 지원하는 데이터타입의 종류는 다양하지만, 기본적으로는 정수, 소수, 문자, 날짜가 대표적인 데이터타입입니다. 여기서 정수는 소수점이 포함되지 않는 -1, 0, 1 등의 숫자를 의미하고, 소수는 1.34 와 같이 소수점을 포함하는 숫자를 이미합니다. 똑같은 1이라고 하더라도 1은 정수, 1.0은 소수입니다.


데이터베이스는 테이블을 처음 만들때, 각 열이 어떤 데이터 종류인지 반드시 선택하게 되어있습니다. 한번 열이 어떤 데이터 종류인지 선택이 되면, 데이터를 수정하거나 입력하려고 할때 DBMS 가 해당 데이터타입인지 확인하고 데이터를 업데이트합니다. 그리고, 해당 데이터가 아니라고 판단이 되면 에러 메세지를 내보냅니다.


위 그림에서 보이는 판매 내역을 저장하기 위한 Sales 테이블을 예시로 생각해봅시다. Sales 테이블은 날짜, 사원명, 고객명, 제품명, 수량 으로 이루어져있습니다. 이 중 수량을 나타내는 qty 열은 데이터 타입을 숫자로 설정해놓은 상태입니다. 현재 저장되어있는 데이터 중 하나를 임의로 선택해, qty 값을 "가나다" 즉 문자 형태로 변경하고 업데이트를 시도해보면 아래와 같은 에러 메세지가 발생하게 됩니다. 올바르지 않은 데이터타입이기 때문에 저장소에 업데이트가 되지 않는 것입니다. 


스터디파이를 진행하시는 분들은 welcome 테이블로 연습을 한번 해보세요. welcome 테이블에는 message라는 문자형 열과 number라는 숫자형 열이 존재할 것입니다. 두번째 행 number에 숫자 1이 설정되어있을텐데요, 이를 더블클릭해서 "안녕하세요"라는 데이터로 바꿔보세요. 바꾼 이후 Command + S (맥) 혹은 Ctrl + S (윈도우)를 입력하면 위와 같은 에러메세지가 발생할 것입니다.


마치며

오늘은 데이터베이스와 테이블에 대해서 정리해보았습니다. 데이터베이스라는 용어는 그 뜻이 혼용되어 사용되고 있지만, 한번 이해하고 나면 이후로는 자연스럽게 혼용하여 사용하실 수 있을 것입니다. 또한, TablePlus를 이용해서 테이블에 있는 데이터를 조회해보고, 데이터타입에 대해서도 알아보았습니다. 다음 글부터는 본격적으로 TablePlus를 이용해 데이터를 다뤄보는 시간을 가지도록 하겠습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari