0. 학습 목표
- 데이터베이스 모델링의 개념을 파악
- 전반적인 데이터베이스 구축 절차를 이해
- 데이터베이스 개체인 인덱스, 뷰, 스토어드 프로시저에대해 미리 학습
0. 요약
- 프로젝트란 현실 세계를 컴퓨터 시스템으로 옮겨놓는 일련의 과정
- 폭포수 모델은 소프트웨어 개발 단계 중 하나로 이름 그대로 폭포가 떨어지듯 개발 단계가 진행
- 데이터베이스 모델링이란 현실 세계에서 사용되는 작업이나 사물들을 DBMS의 테이블로 옮기기 위한 과정
- 스키마는 MySQL 안에 데이터베이스를 뜻한다. 데이터베이스와 동일한 용어라고 생각하면 됨
- 데이터형식은 문자형(CHAR), 정수형(INT)등과 같이 열에 저장될 데이터 형식을 뜻 함
- 예약어는 SELECT, FROM, WHERE와 같은 기존에 약속된 SQL 임
- 기본키는 열에 지정하며 각 행을 구분하는 유일한 옵션
- 인덱스는 책 뒤의 찾아보기와 비슷한 개념이며 데이터를 빠르게 찾을 수 있도록 도와 줌
- 뷰는 바로가기 아이콘과 비슷한 개념임
- 스토어드 프로시저는 여러 개의 SQL을 묶어주거나 프로그래밍 기능을 제공
1. 데이터베이스 모델링(건물을 짓기 위한 설계도)
※핵심 키워드: 프로젝트, 폭포수 모델, 데이터베이스 모델링, 테이블
데이터베이스 모델링은 테이블의 구조를 미리 설계하는 개념이다.
프로젝트를 진행하기 위해서는 대표적으로 폭포수 모델(waterfall model)을 사용하며 데이터베이스 모델링은 폭포수 모델의 업무 분석과 시스템 설계 단계에 해당한다. 이 단계를 거치면 가장 중요한 데이터베이스 개체인 테이블 구조가 결정된다.
1-1. 프로젝트 진행 단계
프로젝트란 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정이다. 더 쉽게 대규모 소프트웨어를 작성하기 위한 전체 과정이라고 할 수 있다.
소프트웨어를 개발하기 위해서는 적절한 절차를 갖춰 만들어야 한다. 소프트웨어 개발 절차 중 하나로 폭포수 모델링이 있다.
- 프로젝트 계획: 계획을 세우는 단계
- 업무분석: 업무가 어떻게 돌아가는 지 파악
- 시스템 설계: 정리한 업무 분석을 컴퓨터에 적용시키기 위해 알맞은 형태로 다듬는 과정
- 프로그램 구현: 시스템 설계를 바탕으로 프로그래밍 언어로 코딩하는 과정
- 테스트
- 유지보수
폭포수 모델은 각 단계가 구분되어 프로젝트의 진행단계가 명확하다는 장점이 있지만 가장 큰 단점은 폭포에서 내려가기는 쉬워도 다시 거슬러 올라가기가 힘든 것처럼 앞 단계로 돌아가는 것이 어렵다
데이터베이스 모델링은 폭포수 모델에서 업무 분석과 시스템 설계 단계에 해당 된다.
1-2. 데이터베이스 모델링
현실 세계의 슈퍼마켓을 인터넷 쇼핑몰로 만드는 프로젝트를 예제로 모델링 해보자.
데이터베이스 모델링이란 우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정이다.
1-3. 전체 데이터베이스 구성도
다음과 같이 데이터베이스 구성도가 완성되었다고 생각하자.
- 데이터: 하나하나의 단편적인 정보, 여기서는 tess, 아이유, 바나나와 같은 개별정보
- 테이블: 회원이나 제품의 데이터를 입력하기 위해 표 형태로 표현한 것
- 데이터베이스: 테이블이 저장되는 장소, 데이터베이스 이름은 각각 달라야 함
- DBMS: 데이터베이스 관리 시스템, 여기서는 MySQL
- 열(column): 테이블의 세로를 의미, 여기서 회원테이블의 열은 3개, 제품은 5개임
- 열이름: 각 열을 구분하기 위한 이름, 열 이름은 각 테이블 내에서는 서로 달라야 함
- 데이터 형식: 열에 저장될 데이터의 형식
- 행(row): 실질적인 진짜 데이터를 뜻, 여기서는 tess / 나훈아 / 경기 부천시 중동
- 기본 키(Primary Key):기본키 열은 각 행을 구분하는 유일한 열을 의미, 기본키는 중복 불가며 빈 공간도 허용하지 않음
2. 데이터베이스 시작부터 끝까지
※핵심 키워드: 스키마, 데이터형식, 예약어, 기본 키
2-0. DBMS 설치하기
아래 그림에서 보듯이 A, B 데이터베이스는 기본적으로 들어있는 DB로 지난 번 show databases로 나왔던 sakila, sys, world 등이다.
2-1. 데이터베이스 만들기
아래 그림처럼 비어있는 쇼핑몰 데이터베이스를 생성해 보자.
[Schemas] -> 우클릭 [Create Schema] -> shop_db 데이터베이스 생성
2-2. 테이블 만들기
빈 공간의 테이블 2개를 만들자.
테이블 설계하기
테이블을 설계한다는 것은 열 이름과 데이터 형식을 지정하는 일이다. 아래와 같이 설계를 완성하였다고 가정하자.
[회원 테이블]
열 이름(한글) | 영문 이름 | 데이터 형식 | 최대 길이 | 널 허용 안함(Not Null) |
아이디(기본 키) | member_id | 문자(CHAR) | 8 | YES |
회원 이름 | member_name | 문자(CHAR) | 5 | YES |
주소 | member_addr | 문자(CHAR) | 20 | NO |
[제품 테이블]
열 이름(한글) | 영문 이름 | 데이터 형식 | 최대 길이 | 널 허용 안함(Not Null) |
제품 이름(기본 키) | product_name | 문자(CHAR) | 4 | YES |
가격 | cost | 숫자(INT) | YES | |
제조 일자 | make_date | 날짜(DATE) | NO | |
제조 회사 | company | 문자(CHAR) | 5 | NO |
남은 수량 | amount | 숫자(INT) | YES |
테이블 생성하기
shop_db -> Tables -> 우클릭 [Create Tables]
[Member]
[Product]
2-3. 데이터 입력하기
데이터를 입력해 보자. 회원 테이블은 4건, 제품 테이블에는 3건의 데이터를 입력한다. 입력된 결과는 아래와 같다.
데이터 입력하기
table 우클릭 [Select Rows - Limits 1000]
[Member]
INSERT INTO 명령어로 데이터가 입력됨을 알 수 있다.
[Product]
이번에는 member에 수정/삭제를 진행해 보자.
수정은 UPDATE, 삭제는 DELETE문이 생성됨을 알 수 있다.
[수정-UPDATE]
[삭제-DELETE]
데이터 활용하기
데이터 입력까지 완료하여 데이터베이스를 구축했다. 이번에는 데이터베이스를 활용하는 방법을 살펴보자. 데이터베이스를 활용하기 위해 주로 SELECT 문을 사용한다.
먼저 작업할 데이터베이스를 선택하기 위해 [SCHEMAS] 패널의 shop_db를 더블클릭 한다.
회원테이블의 모든 행을 조회하기 위해 다음 SQL을 입력하자.
1. 회원테이블 모든 행 조회
SELECT * FROM member;
#SQL은 대소문자를 구분하지 않지만 예약어는 대문자로 표기한다
2. 회원 테이블 이름과 주소만 출력
SELECT member_name, member_addr FROM member
3. 아이유 회원에 대한 정보만 추출
SELECT * FROM member WHERE member_name = "아이유";
'혼자공부하는 SQL' 카테고리의 다른 글
3. SQL 기본 문법-3 (0) | 2022.01.21 |
---|---|
3. SQL 기본 문법-2 (0) | 2022.01.19 |
3. SQL 기본 문법-1 (0) | 2022.01.17 |
2. 실전용 SQL 미리 맛보기-2 (0) | 2022.01.15 |
1. 데이터베이스와 SQL (0) | 2022.01.14 |