데이터베이스 Day1 - 시스템과 모델링

별이·2025년 3월 31일

멋사 프론트엔드 부캠 플러스에 다니게 되었는데, 이번 주에 데이터베이스 모델링을 배웠다. 데이터베이스는 개발 공부에 도움이 될 거라고 생각은 했지만 엄두가 나지 않아 공부하지 못했던 부분이었는데 이 기회로 배울 수 있어서 좋았다. 생소한 부분이라 어렵게 느껴졌지만, 배운 내용들을 정리하면서 차근차근 이해해 보려고 한다. 👩🏻‍💻

🌱 데이터베이스와 모델링의 기본 개념

🔎 데이터베이스란?

단순히 "Data+base"가 아니라, 정규화된 데이터를 체계적으로 저장하고 관리하는 시스템이다. 특히 중복을 최소화하고 데이터의 일관성을 유지하는 것이 핵심이다.

🔎 시스템이란?

역할자(액터)들이 모여 특정 목적을 위해 함께 작동하는 구조이며, 각 역할자가 명확한 책임과 기능을 가지는 체계적인 구조이다. 이는 마치 잘 짜인 연극에서 각자의 배역이 있는 것과 같다.

업무시스템(Operating System)

특정 업무나 목표를 달성하기 위한 조직화된 체계이다. 예를 들어, 병원 시스템에서는 접수자, 의사, 간호사, 행정담당자 등이 각자 역할을 맡아 작업한다. 이들은 각자의 업무 영역에서 특정 데이터를 생성하고 활용한다.

관리시스템(Management System)

업무시스템을 지원하고 의사결정을 돕는 시스템으로, 전체 시스템을 감독하고 통제하는 역할을 한다. 예를 들어, 병원의 경영진이 환자 수, 수익, 비용 등을 분석하여 의사결정을 내리는 것이 관리시스템의 일부라고 볼 수 있다.

그런데 여기서 의문이 들었던 게 이 시스템들이 데이터베이스랑 무슨 관련이 있는 건지 이해가 잘 안됐다. 그래서 데이터베이스와 시스템의 관계를 찾아보았다.

🤔 업무시스템/관리시스템과 데이터베이스의 관계

1. 데이터베이스는 시스템의 데이터 저장소

업무시스템과 관리시스템은 모두 다양한 업무와 프로세스를 수행하는 과정에서 데이터를 생성하고, 읽고, 수정하고, 삭제한다(CRUD 작업). 이러한 데이터를 효율적으로 저장하고 관리하는 곳이 바로 데이터 베이스이다.

예를 들어, 병원 시스템에서 접수자가 환자 정보를 입력하면, 그 정보는 데이터베이스의 [환자]테이블에 저장된다. 의사가 진료 기록을 작성하면, 그것은 [진료내역]테이블에 저장된다. 이렇게 시스템의 각 구성원이 생성하는 데이터는 데이터베이스를 통해 체계적으로 저장되고 관리된다.

2. 시스템 분석이 데이터 모델링의 시작점

개념 설계(Concept Design): 시스템 분석을 통해 어떤 데이터가 필요한지 파악한다.

예를 들어, 소모품 관리 시스템에서는 소모품, 구매내역, 배급내역 등의 데이터가 필요하며, 레스토랑 시스템에서는 메뉴, 주문, 회원 등의 데이터가 필요하다. 이러한 데이터 요구사항은 실제 시스템의 운영 방식과 필요한 기능을 분석함으로써 도출된다.

3. 실제 연결 관계

데이터의 흐름은 양방향으로 이루어진다.
☝🏻 데이터 생성 및 저장

업무시스템/관리시스템 ▶︎ 데이터 생성 ▶︎ 데이터베이스에 저장

✌🏻 데이터 조회 및 활용

업무시스템/관리시스템 ◀︎ 데이터 조회 ◀︎ 데이터베이스에서 읽기

4. 예시

소모품 관리 업무시스템의 경우

📍 역할자들: 소모품 담당자, 구매자, 배급자
📍 생성되는 데이터: 소모품 목록 테이블, 구매 내역 테이블, 배급 내역 테이블
📍 각 테이블의 관계: 소모품(1)<->구매내역(N), 소모품(1)<->배급내역(N)
  1. 소모품 담당자가 새로운 소모품을 등록 → 소모품 목록 테이블에 데이터 추가
  2. 구매자가 소모품 발주 → 구매 내역 테이블에 데이터 추가
  3. 배급자가 부서에 소모품 배포 → 배급 내역 테이블에 데이터 추가
  4. 소모품 담당자가 재고 확인 → 소모품 목록, 구매 내역, 배급 내역 테이블에서 데이터 조회

병원 관리 시스템의 경우

📍 역할자들: 접수자, 의사, 행정간호사, 행정담당자
📍 생성되는 데이터: 환자 테이블, 진료 내역 테이블, 처방전 테이블, 입원 내역 테이블, 수납 내역 테이블
📍 각 테이블의 관계: 환자(1)<->진료내역(N), 진료내역(N)<->처방전(N), 환자(1)<->입원내역(N), 진료내역(1)<->수납내역(1)
  1. 접수자가 환자 정보 입력 → 환자 테이블에 데이터 추가/조회
  2. 의사가 진료 후 기록 작성 → 진료 내역 및 처방전 테이블에 데이터 추가
  3. 행정간호사가 입원 절차 진행 → 입원 내역 테이블에 데이터 추가
  4. 행정담당자가 수납 처리 → 수납 내역 테이블에 데이터 추가
  5. 병원 경영진이 매출 분석 → 모든 관련 테이블에서 데이터 조회 및 집계

5. 핵심 연결점

  1. 업무/관리 시스템 설계 -> 데이터베이스 설계
    시스템 분석을 통해 필요한 데이터를 식별하고, 그 데이터를 저장할 데이터베이스를 설계한다. 효과적인 시스템 구축을 위해서는 먼저 업무 프로세스를 정확히 이해하고 필요한 데이터 요소를 파악해야 한다.

  2. 데이터의 흐름
    시스템에서 발생하는 데이터는 데이터베이스에 저장되고, 시스템은 데이터베이스에서 필요한 정보를 불러와 다양한 업무에 활용한다. 이는 데이터 생성부터 활용, 보관, 폐기까지의 전체 생명주기를 관리하는 과정이다.

  3. 시스템 기능 구현의 기반
    데이터베이스의 구조가 시스템의 기능과 효율성에 직접적인 영향을 미친다. 잘 설계된 데이터베이스는 시스템의 성능과 확장성을 보장하며, 반대로 부실한 데이터베이스 설계는 시스템 전체의 성능 저하와 오류 발생의 원인이 될 수 있다.

즉, 업무시스템과 관리시스템은 "무엇을 할 것인가"의 관점이고, 데이터베이스는 "그 과정에서 필요한 데이터를 어떻게 저장하고 관리할 것인가"의 관점이다. 두 시스템이 원활하게 작동하려면 필요한 모든 데이터가 효율적으로 저장되고 접근 가능해야 하므로, 시스템 설계와 데이터베이스 설계는 밀접하게 연결되어 있다. 마치 신체의 기관과 혈액 순환 시스템이 서로 분리될 수 없는 것처럼, 시스템과 데이터베이스는 함께 작동하며 전체 비즈니스 프로세스를 지원한다.

📊 데이터 모델링 과정

데이터베이스 구축의 핵심은 모델링 과정이다. 이는 마치 건축가가 건물을 지을 때 설계도를 그리는 것과 같다. 데이터 모델링은 크게 3단계로 진행된다.

1) Concept Design (개념 설계)

  • 업무적인 흐름에서 DB에 저장할 데이터를 선별하는 과정
  • 실제 업무 분석을 통해 어떤 데이터가 필요한지 파악
  • 이 단계에서는 기술적인 구현보다는 '어떤 데이터가 필요한가'에 초점을 맞춘다.

ex) 레스토랑 시스템에서 웨이터, 손님, 요리사, 메뉴, 주문, 결제 등의 개체와 행위를 파악하고, 각 개체에 필요한 속성(예: 메뉴의 이름, 가격, 설명)을 식별한다.

2) Logical Design (논리 설계)

  • Entity(개체)와 Relation(관계)을 관계형 DB(R-DB)의 테이블 형태로 설계하는 과정
  • 정규화 작업을 통해 데이터 중복을 제거하고 일관성을 유지
  • 개체들 간의 관계를 정의하고 각 개체의 속성을 결정

ex) 메뉴, 회원, 주문, 결제 등의 테이블 구조를 설계하고, 각 테이블 간의 관계(예: 주문(1)<->주문상세(N))를 정의한다. ERD(Entity-Relationship Diagram)를 통해 이러한 구조를 시각화한다.

3) Physical Design (물리 설계)

  • Logical Design의 결과물을 특정 DBMS의 테이블 형태로 구현하는 과정
  • 실제 데이터베이스에 맞게 데이터 타입, 키, 인덱스, 제약조건 등을 설정
  • 데이터 베이스의 성능과 효율성을 최적화하는 단계

ex) MySQL, Oracle, SQL Server 등 특정 DBMS에 맞게 테이블 생성 스크립트를 작성하고, 인덱스를 설정하여 조회 성능을 최적화한다.

💡 데이터베이스 관리 시스템(DBMS)과 SQL:데이터 다루기의 핵심 도구

DBMS (Database Management System) 유형

데이터베이스를 생성, 관리, 사용할 수 있게 해주는 소프트웨어 시스템이다. 즉, 데이터베이스를 효율적으로 관리하고 사용자가 데이터를 쉽게 저장, 접근 조작할 수 있도록 도와주는 프로그램이다.

  • Hierarchical DBMS: 계층형 구조(트리 형태)로 데이터 관리, 부모-자식 관계가 명확하지만 복잡한 관계 표현이 어려움
  • Network DBMS: 네트워크 구조로 데이터 관리, 더 복잡한 관계 표현 가능
  • Relational DBMS: 관계형 구조(테이블 형태)로 데이터 관리, 현재 가장 보편적으로 사용됨 (MySQL, Oracle, SQL Server 등)
  • Object-Oriented DBMS: 객체지향 구조로 데이터 관리, 복잡한 데이터 유형을 처리하는 데 유리

SQL (Structured Query Language)

관계형 데이터베이스와 통신하기 위한 표준 언어로, 마치 데이터베이스와 대화하는 방법이라고 볼 수 있다. SQL은 크게 세 가지로 나뉜다.

DDL (Data Definition Language): 구조 정의하기
데이터베이스 객체(테이블, 인덱스, 뷰 등)의 구조를 정의하고 변경하는 명령어

  • CREATE: 새로운 객체 생성
  • ALTER: 기존 객체 구조 변경
  • DROP: 객체 삭제

DML (Data Manipulation Language): 데이터 다루기
데이터를 조작(입력, 조회, 수정, 삭제)하는 명령어

  • SELECT: 데이터 조회
  • INSERT: 새 데이터 추가
  • UPDATE: 기존 데이터 수정
  • DELETE: 데이터 삭제

DCL (Data Control Language): 접근 제어하기
데이터베이스 접근 권한을 관리하는 명령어

  • GRANT: 특정 사용자에게 권한 부여
  • REVOKE: 권한 취소

예시

레스토랑 주문 시스템

  1. 데이터베이스: 레스토랑의 메뉴, 고객, 주문, 직원 등에 관한 모든 정보를 저장하는 구조화된 공간
  2. DBMS(MySQL 등): 이 데이터베이스를 생성하고, 관리하고, 접근할 수 있게 해주는 소프트웨어 시스템
  3. SQL 명령어: DBMS를 통해 데이터베이스와 소통하는 언어

👩🏻‍💻💭

처음에는 데이터베이스가 생소하고 어렵게 느껴졌지만, 이번 기회로 데이터베이스에 다가갈 수 있어서 정말 좋았다. 앞으로 프론트엔드 개발자로서 프로젝트를 진행할 때, 이러한 데이터베이스 지식은 백엔드 개발자와의 효과적인 협업을 위한 중요한 기반이 될 것 같다. 비록 직접 데이터베이스를 설계하고 구현하지 않더라도, API를 통해 어떤 데이터를 어떻게 주고받는지 이해하는 데 큰 도움이 될 것 같다!

profile
💭

0개의 댓글