관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

실전용 SQL 미리 맛보기 1 - 건물을 짓기 위한 설계도 : 데이터베이스 모델링 본문

알고리즘 및 자료 관리/SQL

실전용 SQL 미리 맛보기 1 - 건물을 짓기 위한 설계도 : 데이터베이스 모델링

huenuri 2024. 10. 9. 06:07

1장에서 SQL을 사용하기 위한 환경을 구축했고, 이제는 SQL을 어떻게 사용하는지 익힐 차례이다. 이번 장을 통해서 SQL와 데이터베이스에 대한 전반적인 흐름을 이해하게 될 것이다.

데이터베이스 모델링은 프로젝트 진행에 포함되는 단계 중 하나로, 테이블의 구조를 결정하는 과정이다. 이번 절에서는 프로젝트 진행 방법 중 하나인 폭포수 모델에 대해 이해하고 직접 데이터베이스 모델링을 진행해보려고 한다.

 

시작하기 전에

데이터베이스 모델링은 테이블의 구조를 미리 설계하는 개념으로 건축 설계도를 그리는 과정과 비슷하다. 건물에서 설계도가 아주 중요하듯, 프로젝트에서도 데이터베이스 모델링이 잘 되어야 제대로 된 데이터베이스를 구축할 수 있다.

프로젝트를 진행하기 위해서는 대표적으로 폭포수 모델을 사용하며, 데이터베이스 모델링은 폭포수 모델의 업무 분석과 시스템 설계 단계에 해당한다. 이 단계를 거치면 가장 중요한 데이터베이스 개체인 테이블 구조가 결정된다.


 

 

 

 

프로젝트 진행 단계

프로젝트란 '현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮기놓는 과정'이다. 더 쉽게는 '대규모 소트프웨어를 작성하기 이한 전체 과정'이다.

초기에는 이렇게 혼자서 프로그램을 작성하는 것이 별 문제가 되지 않았다. 하지만 요즘에는 프로그램 규모도 커졌고, 사용자의 눈높이도 높아져 소프트웨어에서 원하는 기능이 복잡해지다 보니 문제가 발생하기 시작했다.

 

높은 건물을 지우려면 정확한 계획과 분석 그리고 설계도 작업을 마친 후에 실제로 건물을 짓는 시공 작업을 해야 한다. 소프트웨어도 마찬가지로 절차를 갖춰서 만들어야 한다. 이러한 절차를 연구하는 분야를 소프트웨어 공학이라고 부른다. 소프트웨어 공학에서 가장 기본적으로 언급되는 소프트웨어 개발 절차 중 하나로 폭포수 모델이 있다. 이것은 각 단계 가 폭포가 떨어지듯 진행되기 때문에 붙여진 이름이다.

 

 

 

각 단계의 의미를 예로 들어 설명해보겠다. 지금 우리가 슈퍼마켓을 운영하고 있다고 가정해보자. 이 슈퍼마켓의 물건을 온라인으로도 판매하기 위해 인터넷 쇼핑몰을 구축하려고 한다.

  1. 프로젝트 계획 : 슈퍼마켓의 물건들을 온라인으로 판매하기 위한 계획 단계이다.
  2. 업무 분석 : 슈퍼마켓에서 업무가 어떻게 돌아가는지 파악하는 것이다. 예를 들면, 물건을 어떻게 계산하지는, 재고는 어떻게 관리하는지 등의 업무에 대해서 정리하는 단계이다.
  3. 시스템 설계 : 앞에서 정리한 업무 분석을 컴퓨터에 적용시키기 위해서 알맞은 형태로 다듬는 과정이다.
  4. 프로그램 구현 : 시스템 설계의 결과를 실제 프로그래밍 언어로 코딩하는 단계이다. 우리가 계획한 내용을 온라인으로 제공하기 위해서는 JavaScript, PHP, JSP 등의 프로그래밍 언어를 사용해야 한다.
  5. 테스트 : 코딩된 프로그램에 오류가 없는지 확인하는 과정이다.
  6. 유지 보수 : 실제 온라인 쇼핑몰을 운영하면서 문제점을 보완하고 기능을 추가하는 과정이다.

폭포수 모델은 각 단계가 구분되어 프로젝트의 진행 단계가 명확하다는 장점이 있다. 하지만 폭포에서 내려가기는 쉬워도 다시 거슬러 올라가기는 힘든 것처럼, 문제가 발생할 경우 다시 앞 단계로 돌아가기가 어렵다. 그럼에도 각 단계가 명확하기 때문에 지금도 많이 사용되고 있다.


 

 

 

데이터베이스 모델링

데이터베이스 모델링이란 우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정이다. 더 쉽게 이야기하면 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업이다. 

 

우리가 구현할 인터넷 쇼핑몰에서는 고객 또는 직원 등의 사람이 필요하다. 그렇다면 이 '사람'을 어떻게 데이터베이스에 넣을 수 있을까? 사람을 나타낼 수 있는 특징들을 추출해서 데이터베이스로 만들어야 한다. 슈퍼마켓(현실 세계)의 고객, 물건, 직원 등을 데이터베이스에 각각의 테이블이라는 개체로 변환해야 한다.

예를 들어 어떤 사람의 신분을 증명하기 위한 신분증에 이름, 주민등록번호, 주소 등의 정보가 있는 것과 비슷한 개념이다. 인터넷 쇼핑몰에서 판매할 제품들도 마찬가지다. 제품의 이름, 가격, 제조일자, 제조회사, 재고량 등을 데이터베이스에 저장하는 것이다.

 

한 가지 기억할 점은 데이터베이스 모델링에는 정답이 없다는 것이다. 다만 좋은 모델링과 나쁜 모델링은 분명히 존재한다. 이는 다양한 학습과 실무 경험에서 우러나온다.


 

 

 

 

전체 데이터베이스 구성도

앞에서 살펴본 데이터베이스 모델링의 결과로 다음과 같은 구성이 완려되었다고 가정하겠다.

 

이 그림에서 나온 용어를 하나씩 살펴보자.

  • 데이터 : 하나의 단편적인 정보를 말한다. 여기서는 tess, 바나나 같은 개별적인 정보를 말한다.
  • 테이블 : 회원이나 제품의 데이터를 입력하기 위해 표 형태로 표현할 것을 말한다. 지금은 회원 테이블과 제품 테이블을 만들었다.
  • 데이터베이스 : 테이블이 저장되는 저장소를 말한다. 
  • DBMS : 데이터베이스 관리 시스템 또는 사프트웨어를 말한다. 1장에서 설치한 MySQL이 바로 DBMS이다. 이 그림에서 MySQL이 3개의 데이터베이스를 관리하고 있다.
  • : 테이블의 세로이다.
  • 열 이름 : 각 열을 구분하기 위한 이름이다. 열 이름은 각 테이블 내에서는 서로 달라야 한다. 여기서는 열 이름이 한글로 되어 있지만, 실제로 열 이름은 영문으로 설정해야 문제가 없다.
  • 데이터 형식 : 열에 저장될 데이터의 형식이다. 테이블 형식은 테이블을 생성할 때 열 이름과 함께 지정해준다.
  • : 실질적인 진짜 데이터이다. 예를 들어 'tess/나훈아/경기 부천시 중동'이 하나의 행으로 행 데이터라고도 부른다. 행의 개수가 데이터의 개수이다.
  • 기본 키 : 각 행을 구분하는 유일한 열이다. 기본 키는 중복되어서는 안 되며, 비어 있어서도 안 된다. 
  • SQL : 사람과 DBMS가 소통하기 위한 언어이다.

 

 

데이터베이스 모델링 툴

MySQL 워크벤치에도 데이터베이스 모델링 구축과 관련된 기능이 포함되어 있다. 이에 대해서 살펴볼 것이다.

 

 

1. 빈 데이터 모델링 준비하기

New Model 메뉴를 실행하고, mydb라는 빈 데이터베이스 모델링을 시작한다. 다이어그램을 추가하기 위해 'Add Diagram'을 더블 클릭한다.

 

 

 

 

 

2. 패널 빈 곳을 클릭하여 테이블 만들기

테이블 아이콘을 클릭하여 새 테이블을 만들 수 있다. 더블 클릭하면 아래 태에서 테이블 이름과 열 이름, 데이터 형식 등을 설정할 수 있다. 단, 영문으로 입력해야 한다.

 


 

 

 

 

단원 마무리하기

 


 

 

 

확인 문제 풀기

 

3번은 데이터베이스 모델링이다.

 

 

 

 


 

 

 

 

학습을 마치고

어제 강의만 듣고 졸려서 공부하지 못했던 내용을 오늘 새벽에 일어나서 해본다. 1시간 15분 정도는 머신러닝을 처음부터 강의를 들으며 공부했고, 나머지 시간 동안은 SQL 공부를 해본다. 잠이 계속 깨지 않아서 방송을 시청하며 공부를 하다 이제 드디어 잠이 좀 깼다.

매일 새벽에 일어나서 공부를 한다는 건 정말 쉬운 일이 아니다. 하기 싫은 날도 있기 때문이다. 하지만 난 지난 두달이 넘도록 하루도 거스르지 않고 매일 공부를 해왔다. 지금의 열정이라면 난 분명 뭔가 되고도 남을 것 같다.