혼자 공부하는 SQL chapter 02-1 건물을 짓기 위한 설계도 : 데이터베이스 모델링

손지호·2024년 7월 7일
0

혼자 공부하는 SQL

목록 보기
3/14

데이터베이스 모델링(database modeling)은 테이블의 구조를 미리 설계하는 개념으로 건축 설계도를 그리는 과정과 비슷한다. 건물에서 설계도가 아주 중요하듯이, 프로젝트에서도 데이터베이스 모델링이 잘 되어야 제대로 된 데이터베이스를 구축할 수 있다.
프로젝트를 진행하기 위해서는 대표적으로 폭포수 모델(waterfall model)을 사용하며, 데이터베이스 모델링은 폭포수 모델의 업무 분석과 시스테 설계 단계에 해당한다. 이 단계를 거치면 가장 중요한 데이터베이스 개체인 테이블 구조가 결정되는 것이다.


프로젝트 진행 단계

프로젝트(project)란 '현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정'이다. 더 쉽게는 '대규모 소프트웨어(software)를 작성하기 위한 전체 과정'이라고 이야기할 수 있다.
아주 오래 전에 컴퓨터 프로그램은 한두 명의 프로그래머에 의해 작성되었다. 초기에는 이렇게 혼자서 프로그램을 작성하는 것이 별 문제가 되지 않았다. 그러나 요즘에는 프로그램 규모도 커졌고, 사용자의 눈높이도 높아져 소프트웨어에서 원하는 기능이 복잡해지다 보니 문제가 발생하기 시작했다.
+ 프로그램과 소프트웨어의 구분
프로그래밍 언어(C, 자바, 파이썬 등)를 통해서 만들어진 결과물을 소프트웨어(software)라고 부른다. 소프트웨어와 프로그램(program)은 거의 비슷한 용어로 소프트웨어는 좀 더 큰 단위, 프로그램은 좀 더 작은 단위로 부르기도 하지만 대부분의 상황에서 구분 없이 사용하고 있다.

소프트웨어는 절차를 갖춰서 만들어야 한다. 이러한 절차를 연구하는 분야를 소프트웨어 공학이라고 부르며, 별도의 교과목이나 책으로 분리되어 있다. 소프트웨어 공학에서 가장 기본적으로 언급되는 소프트웨어 개발 절차 중 하나로 폭포수 모델(waterfall model) 이라는 것이 있다. 폭포수 모델은 각 단계가 폭포가 떨어지듯 진행되기 때문에 붙여진 이름이다.

① 프로젝트 계획 : 슈퍼마켓의 물건들을 온라인으로 판매하기 위한 계획 단계.
② 업무 분석 : 슈퍼마켓에서 업무가 어떻게 돌아가는지 파악하는 것. 예로 물건은 어디서 들어오는지, 물건을 어떻게 계산하는지, 재고는 어떻게 관리하는지 등의 업무에 대해서 정리하는 단계.
③ 시스템 설계 : 앞에서 정리한 업무 분석을 컴퓨터에 적용시키기 위해서 알맞은 형태로 다듬는 과정.
④ 프로그램 구현 : 앞에서 정리한 업무 분석을 컴퓨터에 적용시키기 위해서 알맞은 형태로 다듬는 과정.
⑤ 테스트 : 코딩된 프로그램에 오류가 없는지 확인하는 과정.
⑥ 유지보수 : 실제 온라인 쇼핑몰을 운영하면서 문제점을 보완하고 기능을 추가하는 과정.

폭포수 모델은 각 단계가 구분되어 프로젝트의 진행 단계가 명확하다는 장점이 있다. 하지만 이 모델의 가장 큰 단점을 폭포에서 폭포에서 내려가기는 쉬워도 다시 거슬러 올라가기는 힘든 것처럼 문제가 발생할 경우 다시 앞 단계로 돌아가기가 어렵다. 그래도 각 단계가 명확하기 때문에 지금도 많이 사용되는 중!
우리가 공부하는 데이터베이스 모델링은 폭포수 모델에서 업무 분석과 시스템 설계 단계에 해당한다.


데이터베이스 모델링

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

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

예를 들어 어떤 사람의 신분을 증명하기 위한 신분증에 이름, 주민등록번호, 주소 등의 정보가 있는 것과 비슷한 개념이다. 인터넷 쇼핑몰에서 판매할 제품들도 마찬가지! 제품의 이름, 가격, 제조일자, 제조회사, 재고량 등을 데이터베이스에 저장하는 것.
한 가지 더 기억할 점은 데이터베이스 모델링에는 정답이 없다! 건물 설계도를 그리는 사람에 따라 다양한 결과물이 나오는 것처럼. 다만, 좋은 모델링과 나쁜 모델링은 분명히 존재. 이는 다양한 학습과 실무 경험에서 우러나온다.
데이터베이스 모델링 자체만으로 많은 내용이 있고, 몇 권짜리 책으로 출간되기도 한다.


전체 데이터베이스 구성도

  • 데이터(data) : 하나하나의 단편적인 정보. 이 그림에서는 tess, 아이유, 바나나와 같은 개별적인 정보를 말한다.
  • 테이블(table) : 회원이나 제품의 데이터를 입력하기 위해 표 형태로 표현한 것. 지금은 인터넷 쇼핑몰을 구현하기 위해서 회원 정보를 보관할 회원 테이블과 제품 정보를 보관할 제품 테이블, 2개의 테이블을 만든다.
  • 데이터베이스(Database) : 테이블이 저장되는 저장소. 데이터를 저장하는 곳이라는 의미로 그림에서는 원통 모양으로 표현. 그림에 3개의 데이터베이스로 표현했는디, 각 데이터베이스는 이름이 서로 달라야 한다. 이번 장에서 우리가 만들 데이터베이스는 '쇼핑몰 데이터베이스'이다.
  • DBMS(Database Management System) : 데이터베이스 관리 시스템 또는 소프트웨어. 1장에서 설치한 MySQL이 바로 DBMS. 그림에서 MySQL이 3개의 데이터베이스를 관리하고 있다.
  • 열(column) : 테이블의 세로. 각 테이블은 여러 개의 열(칼럼, 필드)로 구성. 회원 테이블은 3개의 열로, 제품 테잉블은 5개의 열로 구성되어 있다.
  • 열 이름 : 각 열을 구분하기 위한 이름. 열 이름은 각 테이블 내에서는 서로 달라야 한다. 회원 테이블의 아이디, 회원 이름, 주소 등이 열 이름.
  • 데이터 형식 : 열에 저장될 데이터의 형식. 회원 테이블의 회원 이름 열은 '1234'와 같은 숫자가 아닌 '나훈아'와 같은 문자 형식이어야 함. 그리고 제품 테이블의 가격 열은 숫자(정수) 형식이어야 한다. 데이터 형식은 테이블을 생성할 때 열 이름과 함께 지정해줌.
  • 행(row) : 실질적인 진짜 데이터를 말한다. 예로, 'tess/나훈아/경기 부천시 중동'이 하나의 행(로우, 레코드)으로 행 데이터라고도 부른다. 회원 테이블에서 회원이 몇 명인지 행 데이터가 몇 개인지로 알 수 있다. 즉, 행의 개수가 데이터의 개수이다.
  • 기본 키(Primary Key, PK) : 기본 키(또는 주키) 열은 각 행을 구분하는 유일한 열. 쉽게는 네이버의 회원 아이디, 학번, 주민등록번호 같은 것. 그래서 기본 키는 중복되어서는 안 되며, 비어 있어서도 안 된다.
  • SQL(Structured Query Language) : DBMS가 알아듣는 언어(말)을 하기 위한 것이 SQL(구조화된 질의 언어). 즉, SQL은 사람과 DBMS가 소통하기 위한 언어.


정리

  • 프로젝트란 현실 세계를 컴퓨터 시스템으로 옮겨놓는 일련의 과정.
  • 폭포수 모델은 소프트웨어 개발 단계 중 하나로, 이름 그대로 폭포가 떨어지듯 개발 단계가 진행.
  • 데이터베이스 모델링이란 현실 세계에서 사용되는 작업이나 사물들을 DBMS의 테이블(표 형태로 표현한 데이터베이스 개체)로 옮기기 위한 과정.

관련 중요 용어

  • 데이터 : data / / 단편적인 정보
  • 테이블 : table / / 데이터를 입력하기 위한 표 형태
  • 데이터베이스 : Database / DB / 데이터의 저장소
  • 데이터베이스 관리 시스템 : Database Management System / DBMS / 데이터베이스를 관리하는 시스템 또는 소프트웨어(MySQL)
  • 열(칼럼, 필드) : column, field / / 테이블의 세로, 테이블은 여러 개의 열로 구성됨
  • 열 이름 : column name, field name / / 각 열을 구분하기 위한 이름
  • 데이터 형식 : data type / / 열에 저장될 데이터의 형식(숫자/문자/날짜 등)
  • 행(로우, 레코드) : row, record / / 테이블의 가로, 실질적인 진짜 데이터(행 데이터라고도 부름)
  • 기본 키 : Primary Key / PK / 각 행을 구분하는 유일한 열
  • 구조화된 질의 언어 : Structured Query Language / SQL / 사람과 DBMS가 소통하기 위한 언어
profile
초보 중의 초보. 열심히 하고자 하는 햄스터!

0개의 댓글