본문 바로가기
개발

[MySQL] 챕터 3. MySQL 전체 운영 실습

by jwcs 2024. 2. 28.
728x90

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

3.1.1 정보시스템 구축 절차 요약

정보 시스템 개발 과정은 일반적으로 분석, 설계, 구현, 시험, 유지보수의 다섯 단계로 나눌 수 있다.

  • 분석: 시스템의 요구 사항을 정의하고 문제 영역을 이해한다. 즉, `무엇을` 할 지 결정한다. 사용자의 인터뷰와 업무 조사 등을 수행한다.
  • 설계: 시스템 아키텍처를 설계하고 데이터베이스 스키마를 정의한다. 시스템을 `어떻게` 할 것인지를 결정한다.
  • 구현: 설계 단계에서 정의된 사항을 바탕으로 실제 시스템을 구축한다.
  • 시험: 시스템이 요구 사항을 만족하는지 검증하고 오류를 수정한다
  • 유지 보수: 시스템을 최신 상태로 유지하고 사용자의 새로운 요구 사항이나 시스템 환경의 변화에 대응한다

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

 데이터베이스 모델링은 정보 시스템 내에서 데이터를 정의, 조직화, 구현하는 과정이다. 이 과정은 실세계의 정보를 데이터베이스 시스템 내에서 어떻게 표현할지 결정하는 데 중점을 둔다.

 데이터베이스에 대해 이해하기 위한 핵심 용어에 대해 알아보자

  • 데이터: 처리되거나 저장될 수 있는 형식의 정보. 숫자, 문자, 이미지 등 다양한 형태를 가질 수 있다.
  • 테이블: 테이블은 데이터베이스 내에서 데이터를 저장하기 위해 표 형태로 표현한 것이다. 행과 열로 구성된다.
  • 데이터베이스: 테이블이 저장되는 저장소다
  • DBMS: 데이터베이스를 관리하는 시스템이다
  • 열: 테이블 내에서 데이터를 저장하는 구조이다. 각 열은 특정 데이터 형식을 가진다.
  • 열 이름: 열 이름은 테이블 내의 각 열을 구별하는 데 사용되는 이름이다. 이는 데이터를 조작할 때 사용된다.
  • 데이터 형식: 열의 데이터 형식을 말한다. 문자열, 정수, 날짜 등이 있다
  • 행: 행은 테이블에서 하나의 데이터 개체를 나타낸다. 테이블 내에서 모든 행은 동일한 구조(열)를 가진다.
  • 기본키 열: 기본 키는 테이블 내의 각 행을 유일하게 식별하는 열이다. 기본 키 열의 값은 고유해야 하며, NULL값을 가질 수 없다.
  • 외래 키 필드: 외래 키는 다른 테이블의 행을 참조하는 필드이다. 이는 두 테이블 간의 관계를 정립한다.
  • SQL(Structed Query Language): SQL은 데이터베이스에서 데이터를 관리하기 위해 설계된 표준화된 언어이다.

3.2 MySQL을 이용한 데이터베이스 구축 절차

3.2.1 데이터베이스 생성

데이터베이스 생성
데이터베이스 사용

위와 같은 SQL 명령어로 데이터베이스를 만들고 사용할 수 있다.

 

3.2.2 테이블 생성

테이블 생성 예시

employees라는 테이블 생성 예시다.

employee_id, name, position, hire_date은 칼럼의 이름을 나타낸다.

INT, VARCHAR(100), VARCHAR(50), DATE은 칼럼의 데이터 형식을 나타낸다.

AUTO_INCREMENT, PRIMARY KEY, NOT NULL은 제약 조건을 나타낸다. 제약 조건은 데이터에 적용되는 규칙을 말한다.

 

3.2.3 데이터 입력

입력 예제

users는 테이블을 의미한다

name, email은 열을 의미한다

values 뒤에 나오는 것들은 name, email에 들어갈 데이터다

삭제 예제

users는 테이블을 의미한다.

where 뒤에는 조건을 의미한다. `email = 'john.doe@example.com'`에 해당하는 칼럼을 삭제한다.

3.2.4 데이터 활용

여기서 말하는 데이터 활용은 `select`문을 의미한다.

조회 예시

`*`의 위치에는 특정 칼럼을 검색한다. `*`은 모든 칼럼을 의미한다.

employees은 테이블을 의미한다.

where은 조건을 의미한다. 여기선 `department_id`의 값이 10인 경우를 찾는다.

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

3.3.1 인덱스

인덱스는 데이터베이스에서 데이터 검색 속도를 향상시키기 위해 사용되는 데이터구조다. 

  • 작동 방식: 인덱스는 일반적으로 B-트리와 같은 데이터 구조를 사용하여 구현된다. 이러한 구조를 통해 데이터를 정렬된 상태로 유지한다.
  • 주요 이점: 정렬된 데이터를 유지하기 때문에 검색 속도를 크게 향상시킬 수 있다
  • 단점: 인덱스는 추가적인 디스크 공간을 사용한다. 또한, 데이터 삽입, 수정, 삭제 시 인덱스도 함께 업데이트 되어야 하므로, 이러한 작업의 성능이 저하될 수 있다.
  • 고려 사항: 모든 열에 대해 인덱스를 생성하는 것은 비효율적일 수 있다. 자주 검색되거나, 조인에 사용되는 열, 정렬에 필요한 열에 대해서만 인덱스를 고려해야 한다.

인덱스 생성 예시

자세한 내용은 챕터 9에서 다룬다.

3.3.2 뷰

뷰(view)는 하나 이상의 테이블에서 가져온 데이터의 가상 테이블이다. 뷰는 실제 데이터를 저장하지 않고, 데이터베이스 내의 데이터를 조회하기 위한 SQL 문의 저장된 결과로 생각할 수 있다. 사용자는 뷰를 통해 필요한 데이터만을 선택적으로 보여줄 수 있으며, 뷰를 사용함으로써 데이터 접근의 단순화, 보안 강화, 복잡한 쿼리의 재사용성 향상 등의 이점을 얻을 수 있다.

  • 보안: 뷰를 사용하여 사용자에게 필요한 데이터만을 노출시킬 수 있다.
  • 단순화: 복잡한 SQL 쿼리를 뷰로 만들어 두면, 사용자는 복잡한 쿼리를 직접 작성하지 않고 뷰를 통해 간단하게 데이터에 접근할 수 있다.
  • 데이터 추상화: 뷰를 사용하면 데이터베이스의 구조 변경이 사용자에게 영향을 미치지 않도록 할 수 있다. 예를 들어, 테이블 구조가 변경되더라도 뷰를 통해 동일한 결과를 제공할 수 있다.

뷰 생성 예시

3.3.3 스토어드 프로시저

스토어드 프로시저는 데이터베이스에 저장되어 실행될 수 있는 하나 이상의 SQL문의 집합이다. 하나의 실행 가능한 단위로 호출되어 사용된다.

  • 재사용성: 한 번 작성하면 여러 곳에서 재사용할 수 있다. 이로 인해 코드의 중복을 줄이고, 유지 보수를 용이하게 한다.
  • 보안: 사용자가 데이터베이스에 직접 접근하여 데이터를 변경하는 것보다 스토어드 프로시저를 통한 접근을 제한함으로써 보안을 강화할 수 있다.

스토어드 프로시저 생성 예시

3.3.4 트리거

트리거란 특정 조건이나 이벤트가 발생했을 때 자동으로 실행되는 SQL 코드를 의미한다.

  • 자동 실행: 특정 데이터베이스 테이블에 대한 삽입, 수정, 삭제와 같은 이벤트가 발생할 때 자동으로 실행된다.

트리거 생성 예시

3.4 데이터베이스 백업 및 관리

백업은 데이터베이스 관리 측면에서 중요한 요소이다.

3.4.1 백업과 복원

백업:

백업은 데이터베이스의 데이터 구조를 복사하여 다른 위치에 안전하게 저장하는 과정이다. 백업의 주요 목적은 데이터 손실이 발생했을 때 복원할 수 있는 기능을 제공하는 것이다.

 

복원:

복원은 백업된 데이터를 사용하여 데이터베이스를 이전 상태로 되돌리는 과정이다. 데이터베이스가 손상되었거나 중요한 데이터가 손실된 경우에 필요하다.

 

3.5 MySQL과 응용 프로그램의 연결

https://jwcs.tistory.com/91

 

[Node.js] 로그인, 회원가입 기능 구현

index.js const express = require('express'); const Sequelize = require('sequelize'); const env = process.env.NODE_ENV || 'development'; const config = require(__dirname + '/config/config')[env]; const sequelize = new Sequelize(config.database, config.usern

jwcs.tistory.com

이전에 Node.js와 연동하는 실습을 했다.

728x90
반응형