본문 바로가기

DB

MySQL 설치 및 DB 구축과정 미리 실습하기: MySQL 전체 운영 실습

chapter 2는 MySQL 설치법만 나와 있어서 공식문서만 봐도 충분하기에 다음 챕터를 정리하고자한다.

요구사항 분석과 시스템 설계 그리고 모델링

정보시스템 구축 절차 요약

정보시스템을 구축하기 위해서는 일반적으로 분석 -> 설계 -> 구현 -> 시험 -> 유지보수 의 단계를 거친다.

분석 단계는 시스템, 요구사항을 분석하며 우리가 무엇(what)을 할지 결정한다.
다음으로 설계 단계에서는 우리가 구축하고자 하는 시스템을 어떻게(how)할 것인지 결정한다.

이 과정이 시스템을 구축하는데 가장 중요하고 많은 시간이 쓰이는 부분이기도 하다.

너무 추상적이므로 다음의 도서관리 시스템 예시를 통해 이해해보자

분석 단계:

  • 사용자는 웹사이트를 통해 도서를 검색하고 선택할 수 있어야 한다.
  • 사용자는 선택한 도서를 장바구니에 추가할 수 있어야 한다.
  • 사용자는 장바구니의 도서를 구매할 수 있어야 한다.

설계 단계:

1. 도서 검색 기능:

  • 사용자가 검색어를 입력하면, 데이터베이스에 있는 도서 중 검색어와 일치하거나 관련 있는 도서를 반환한다.
  • 도서 정보에는 제목, 저자, 가격, 썸네일 이미지 등의 필드가 포함된다.
  • 검색 결과는 페이지네이션을 통해 나타나며, 한 페이지에는 최대 10권의 도서가 표시된다.

2. 장바구니 기능:

  • 사용자는 도서 상세 페이지에서 "장바구니에 추가" 버튼을 클릭하여 도서를 장바구니에 추가할 수 있다.
  • 장바구니 페이지에서는 사용자가 선택한 도서 목록, 총 가격, 도서 수량 조절 기능 등이 제공된다.

위의 예를 보면 알겠지만 분석과 설계 단계는 하나의 시스템을 만드는데 가장 기본이 되고 고민해야하는 작업이다.

데이터베이스 모델링과 필수 용어

분석 및 설계 과정에 '데이터베이스 모델링'이라는 과정이 포함되는데 현실세계에서 사용되는 데이터를 DB에 어떻게 옮겨 놓을 것인지를 결정하는 과정이다.

 

그림을 통해 이해하는 것이 더 쉬울 것이다.

 

 

위의 그림을 통해 용어를 정리해보자.

  • 데이터: 당탕이, 컴퓨터와 같이 하나하나의 단편적인 정보를 뜻한다. 즉 정보는 있으나 체계화 되지 못한 상태
  • 테이블: 회원이나 제품과 같이 데이터를 입력하기 위해 표 형태로 표현한 것을 말한다.
  • 데이터베이스: 테이블이 저장되는 저장소를 말한다. 그림에는 총 3개(쇼핑몰, A, B)의 데이터베이스가 존재한다.
  • DBMS: 데이터베이스를 관리하는 시스템(소프트웨어)를 말한다. 현재는 MySQL을 사용하니 MySQL이 DBMS라고 볼 수 있다.
  • 열(컬럼, 필드): 각 테이블은 열로 구성된다. 회원 테이블을 예로 들면 아이디, 이름, 주소 총 3개의 컬럼이 있다. (열 이름은 중복되지 않아야 한다.)
  • 데이터 형식: 열에 들어갈 데이터 형식을 말한다. 제품을 예로 들면 가격은 int형, 이름은 varchar, 제조일자는 dateTime이 데이터 형식이다.
  • 행(로우): 실질적인 데이터를 말한다. 회원 테이블에서는 총 4개의 로우가 있다. (각 로우의 아이디는 겹쳐서는 안됨)
  • 기본 키: 데이터를 식별할 유일한 값을 의미한다. id에 해당
  • 외래 키: 두 테이블 간 관계를 맺어주는 키를 말한다. 예를 들어 제품을 만든 사람이 있고 이를 제품 테이블에 열로 추가해서 회원 id를 외래키로 둔다고 생각해보자. 그럼 그 제품을 만든 사람을 (select c.이름 from 회원 c join 제품 p on c.id = p.id;) 이런식으로 조인문을 통해 조회할 수 있다.
  • SQL: 데이터베이스와 사용자간 소통을 하기 위한 언어이다.

테이블 외의 데이터베이스 개체의 활용

인덱스

지금은 간단히 설명하고 나중에 더 자세히 설명하겠다. 인덱스는 책의 앞부분에 있는 색인과 같은 역할을 한다. 예를 들어 위의 회원 테이블에 이름에 인덱스가 적용되어 있다면 이름이 당탕이인 데이터 위치에 인덱스를 통해 바로 접근이 가능하다.

가상의 테이블이라고 생각하면 되는데 특정 테이블에서 보고 싶은 데이터만 시각화해서 보여줄 수 있다.

그림으로 보면 다음과 같다.

 

근데 여기서 view 테이블에 쓰기 sql을 수행했을 때 실제 테이블에도 데이터가 삽입이 된다.(삭제, 업데이트도 마찬가지)

스토어드 프로시저

MySQL에서 제공해주는 프로그래밍 기능이다. 여러 쿼리를 묶어서 호출 가능하다.

delimiter
create procedure myProc()
begin
    select * from member where memberName = '당탕이';
    select * from product where productName = '냉장고';
end
delimiter;

call myProc()를 호출하면 begin부터 end가지의 쿼리가 수행된다.

트리거

데이터베이스에서 쓰기 작업이 일어날 때 발생하는 코드를 말한다.

예를 들어 회원 테이블에서 '당탕이'가 탈퇴해서 삭제한다면, 삭제한 로우가 무엇인지 알 수 없다. 이럴 때 트리거를 사용해서 삭제 쿼리가 발생했을 때 삭제된 로우를 삭제 테이블 같은 곳에 복사 가능하다.

 

create table deleteMember(
	memberId char(8),
    memberName char(5),
    deletedDate date
);

delimiter
create trigger trg_deletemember
    after delete
    on member
    for each row
begin
    insert into deleteMember values (member.id, member.memberName, curdate());
end
delimiter;

'DB' 카테고리의 다른 글

MySQL 기본: SQL 기본  (0) 2023.08.04
MySQL 기본: 데이터베이스 모델링  (0) 2023.08.03
MySQL 설치 및 DB 구축과정 미리 실습하기: DBMS 개요와 MySQL 소개  (0) 2023.08.01
정규화  (0) 2023.01.09
데이터베이스 인덱스  (0) 2023.01.07