반응형
Spring Boot 기반 웹 푸시 알림 서비스 - DB 테이블 설계
1. DB 테이블 설계
아래와 같은 요구사항 충족을 위해 푸시 발송 로직보다 먼저 DB 구조를 설계했다.
- 누가 알림을 받았는지
- 어떤 메시지가 언제 발송되었는지
- 발송 성공/실패 여부
- 특정 사용자 또는 전체 발송 이력 조회
- 향후 재발송, 통계, 로그 관리
2. 전체 테이블 구성 개요
4개의 핵심 테이블로 구성 (테이블명은 대외비)
| 테이블명 | 역할 |
| A | 알림 대상 사용자 정보 |
| B | 웹 푸시 구독 정보 |
| C | 발송할 알림 메시지 |
| D | 알림 발송 이력 |
각 테이블은 역할을 명확히 분리하여 확장성과 유지보수성을 고려하여 설계했다.

3. 알림 대상 사용자 테이블(A)
알림을 받을 수 있는 사용자 정보를 관리하는 테이블
설계 포인트
- USER_NUMB를 기준 키로 사용
- 학생 / 직원 / 일반 등 사용자 유형 확장 가능
- 공통 관리 컬럼을 포함하여 이력 관리 용이
4. 웹 푸시 구독 정보 테이블(B)
사용자가 브라우저에서 푸시를 허용하면 생성되는 실제 푸시 발송에 필요한 핵심 정보를 저장하는 테이블
설계 포인트
- 한 사용자가 여러 기기/브라우저를 가질 수 있도록 분리
- 브라우저 종류, OS 정보 저장
- 향후 특정 브라우저만 발송하는 구조로 사용 가능
5. 발송 메시지 테이블(C)
관리자가 작성한 발송 대산 메시지를 저장하는 테이블
설계 포인트
- 메시지 내용과 발송 상태 분리
- 실제 발송 대상과는 독립적으로 관리
- 동일 메시지 여러 사용자에게 발송 가능
6. 알림 발송 이력 테이블(D)
실제 어떤 사용자에게 어떤 메시지가 발송되었는지를 관리하는 테이블
설계 포인트
- 발송 성공/실패 여부 기록
- 실패 사유 저장(가능하다면..)
- 재발송, 통계, 로그 활용
7. 시퀀스 설계
DB가 Oracle 10g라는 환경을 고려하여 별도 시퀀스 생성
CREATE SEQUENCE SEQ_SUBS_NUMB START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_MESG_NUMB START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_SEND_NUMB START WITH 1 INCREMENT BY 1;
8. 마무리
이번 포스팅에서는 웹 푸시 알림 서비스 개발에 앞서 설계한 DB 구조를 정리했다.
다음 단계로는
- Spring Boot + MyBatis 기반 비즈니스 로직 구현
- 실제 메시지 생성 및 발송 이력 처리
- Web Push 연동
순서로 개발 진행 예정이다.
반응형
'SideProject' 카테고리의 다른 글
| Docker 기반 웹 푸시 알림 시스템 - 4 (0) | 2026.02.02 |
|---|---|
| Docker 기반 웹 푸시 알림 시스템 - 3.5 (0) | 2026.01.29 |
| Docker 기반 웹 푸시 알림 시스템 - 2 (0) | 2026.01.19 |
| Docker 기반 웹 푸시 알림 시스템 - 1 (0) | 2026.01.14 |
| 단축URL 구현하기 (네이버 me2.do 서비스 종료) (2) | 2025.01.20 |