[SQL] 02-1 건물을 짓기 위한 설계도: 데이터베이스 모델링
실전용 SQL 미리 맛보기
건물을 짓기 위한 설계도: 데이터베이스 모델링
데이터베이스 모델링(database modeling)은 테이블의 구조를 미리 설계하는 개념으로 건축 설계도를 그리는 과정과 비슷하다.
프로젝트를 진행하기 위해서는 대표적으로 폭포수 모델(waterfall model)을 사용하며, 데이터베이스 모델링은 폭포수 모델의 업무 분석과 시스템 설계 단계에 해당한다.
프로젝트 진행 단계
프로젝트(project)는 ‘현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정’이다.
더 쉽게는 ‘대규모 소프트웨어(software)를 작성하기 위한 전체 과정’이라고 이야기할 수 있다.
소프트웨어 절차를 연구하는 분야를 소프트웨어 공학이라 부른다.
소프트웨어 공학에서 가장 기본적으로 언급되는 소프트웨어 개발 절차 중 하나로 폭포수 모델이라는 것이 있다.
폭포수 모델을 각 단계가 폭포가 떨어지듯 진행되기 때문에 붙여진 이름이다.
각 단계의 의미를 예(슈퍼마켓의 물건을 온라인으로도 판매하기 위해 인터넷 쇼핑몰 구축)를 들어 설명해보겠다.
- 프로젝트 계획: 슈퍼마켓의 물건들을 온라인으로 판매하기 위한 계획 단계
- 업무 분석: 슈퍼마켓에서 업무가 어떻게 돌아가는지 파악하는 것
예로 물건은 어디서 들어오는지, 물건을 어떻게 계산하는지, 재고는 어떻게 관리하는지 등의 업무에 대해서 정리하는 단계 - 시스템 절차: 앞에서 정리한 업무 분석을 컴퓨터에 적용시키기 위해서 알맞은 형태로 다듬는 과정
- 프로그램 구현: 앞에서 완성한 시스템 설계의 결과를 실제 프로그래밍 언어로 코딩하는 단계
우리가 계획한 내용을 온라으로 제공하기 위해서는 JavaScript, PHP, JSP 등의 프로그램 언어를 사용 - 테스트: 코딩된 프로그램에 오류가 없는지 확인하는 과정
- 유지보수: 실제 온라인 쇼핑몰을 운영하면서 문제점을 보완하고 기능을 추가하는 과정
폭포수 모델은 각 단계가 구분되어 프로젝트의 진행 단계가 명확하다는 장점이 있다.
하지만 이 모델의 가장 큰 단점은 문제가 발생할 경우 다시 앞 단계로 돌아가기가 어렵다는 것이다.
데이터베이스 모델링
데이터베이스 모델링이란 우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기는 과정이라고 할 수 있다.
더 쉽게 이야기하면 현실에서 쓰이는 것을 테이블로 변경하기 위한 작업이라고 생각하면 된다.
슈퍼마켓(현실 세계)의 고객, 물건, 직원 등을 데이터베이스에 각각의 테이블이라는 개체로 변환한다.
예를 들어 어떤 사람의 신분을 증명하기 위한 신분증에 이름, 주민등록번호, 주소 등의 정보가 있는 것과 비슷한 개념이다. 인터넷 쇼핑물에서 판매할 제품들도 마찬가지로 제품의 이름, 가격, 제조일자, 제조회사, 재고량 등을 데이터베이스에 저장하는 것이다.
전체 데이터베이스 구성도
- 데이터: 하나하나의 단편적인 정보를 말한다.
- 테이블: 데이터를 입력하기 위해 표 형태로 표현한 것을 말한다.
- 데이터베이스: 테이블이 저장되는 저장소를 말한다.
- DBMS: 데이터베이스 관리 시스템 또는 소프트웨어를 말한다.
- 열(column): 테이블의 세로를 말한다.
각 테이블은 여러 개의 열(컬럼, 필드)로 구성된다. - 열 이름: 각 열을 구분하기 위한 이름
열 이름은 각 테이블 내에서는 서로 달라야 한다. - 데이터 형식: 열에 저장될 데이터의 형식을 말한다.
데이터 형식은 테이블을 생성할 때 열 이름과 함께 지정해준다. - 행(row): 실질적인 진짜 데이터를 말한다.
행의 개수가 데이터의 개수이다. - 기본 키(Primary Key, PK): 기본 키(또는 주키) 열은 각 행을 구분하는 유일한 열을 말한다.
기본 키는 중복되어서는 안 되며, 비어 있어서도 안 된다. - SQL: 사람과 DBMS가 소통하기 위한 언어이다.