Programmers

[18일차]웹 애플리케이션 동작 원리, ERD와 관계 예시

PARKpatchnotes 2025. 9. 25. 14:41

라우팅과 데이터 모델링 보고서

1. 라우팅 (Routing)

URL, 서버, 라우팅, 핸들러의 관계

라우팅은 클라이언트가 요청한 URL(Uniform Resource Locator)에 따라 서버가 어떤 핸들러(Handler)를 실행할지 결정하는 과정이다. 이 관계는 웹 애플리케이션의 핵심 동작 원리로, 다음과 같이 설명할 수 있다.

  1. URL (클라이언트의 요청): 사용자가 브라우저 주소창에 특정 주소(https://example.com/users)를 입력하면, 클라이언트는 해당 URL로 서버에 요청을 보낸다.
  2. 서버(Server): 서버는 클라이언트의 요청을 가장 먼저 수신하는 주체이다.
  3. 라우터(Router): 서버 내에서 동작하는 라우터는 수신된 요청의 URL 경로(/users)와 HTTP 메서드(GET, POST 등)를 분석한다. 라우터는 사전에 정의된 '라우팅 맵' 또는 '라우팅 테이블'을 참조하여 이 요청을 처리할 적절한 핸들러를 찾는다.
  4. 핸들러(Handler): 핸들러는 특정 URL 요청을 실제로 처리하기 위해 작성된 함수 또는 로직이다. 라우터에 의해 선택된 핸들러는 데이터베이스 조회, 비즈니스 로직 수행, HTML 페이지 렌더링 등의 작업을 실행하고, 그 결과를 클라이언트에 응답으로 반환한다.

결론적으로, 라우팅은 URL이라는 주소지를 보고 라우터가 길을 찾아 핸들러라는 목적지에 요청을 정확히 전달하는 과정이다.

비유적 설명

라우팅과 핸들러의 관계는 내비게이션 시스템과 목적지에 비유할 수 있다.

  • URL은 우리가 내비게이션에 입력하는 상세한 목적지 주소이다 (예: 서울시 강남구 테헤란로 212).
  • 서버는 모든 도로와 건물이 포함된 도시 전체와 같다.
  • 라우터는 사용자의 요청을 받아 최적의 경로를 찾아 안내하는 내비게이션 시스템이다. 내비게이션은 목적지 주소(URL)를 분석하여 어떤 길로 가야 할지(라우팅) 결정한다.
  • 핸들러는 내비게이션이 안내한 최종 목적지 건물이다. 이 건물에 도착해야만 방문(데이터 조회), 물건 배달(데이터 생성) 등 원래 하려던 작업을 수행할 수 있다.

즉, 라우터(내비게이션)는 URL(주소)을 보고 요청을 올바른 핸들러(목적지)로 안내하며, 핸들러는 그곳에서 실제 작업을 처리한다.


2. ERD (Entity-Relationship Diagram)

ERD는 데이터베이스의 구조를 시각적으로 표현하는 다이어그램으로, 개체(Entity), 속성(Attribute), 관계(Relationship)라는 세 가지 핵심 요소로 구성된다. 이를 통해 시스템이 다루는 데이터의 종류와 데이터 간의 상호작용을 명확하게 설계하고 이해할 수 있다.

  • 개체(Entity): 저장되어야 할 데이터의 단위로, 데이터베이스의 테이블에 해당한다. (예: User, Channel)
  • 속성(Attribute): 개체가 갖는 특성으로, 테이블의 컬럼에 해당한다. (예: name, subscribers)
  • 관계(Relationship): 개체들 간의 상호 연관성을 나타낸다. (예: 1:1, 1:N, N:M)

ERD 예시: UserChannel

개체 및 속성 정의

  • User (사용자):
    • id (PK): 사용자 고유 식별자
    • userId: 로그인 시 사용하는 아이디
    • pwd: 비밀번호
    • name: 사용자 이름
  • Channel (채널):
    • id (PK): 채널 고유 식별자
    • user_id (FK): 채널을 소유한 사용자의 ID (User 테이블의 id 참조)
    • channel_title: 채널 제목
    • subscribers: 구독자 수
    • description: 채널 설명

ERD 다이어그램

다음은 Channel 테이블과 User 테이블 간의 관계를 도식화한 ERD이다:

+-------------------+        +-------------------+
|      User         |        |     Channel       |
+-------------------+        +-------------------+
| id (PK)           |<---(1)| id (PK)           |
| userId            |        | user_id (FK)      |
| pwd               |        | channel_title     |
| name              |        | subscribers       |
+-------------------+        | description       |
                             +-------------------+

설명

  1. 1:N 관계:
    • User와 Channel은 1:N 관계이다. 즉, 한 사용자는 여러 개의 채널을 가질 수 있지만, 하나의 채널은 반드시 하나의 사용자에 속한다.
  2. Primary Key와 Foreign Key:
    • User 테이블의 id 필드는 Primary Key로, 각 사용자를 고유하게 식별한다.
    • Channel 테이블의 user_id 필드는 Foreign Key로, User 테이블의 id와 관계를 맺는다.
  3. 데이터 무결성:
    • Channel 테이블의 user_id는 User 테이블에 존재하는 id 값만을 가질 수 있다. 이를 통해 데이터베이스의 참조 무결성을 유지한다.