본문 바로가기
조그만 기술로 세상을 이롭게/토정비결어때

📜 토정비결 앱은 어떻게 개발할까? SQLite 기반 운세 엔진 설계와 오늘의 운세 구현

by eplus 2026. 7. 5.

최근 운세 앱은 단순히 결과만 보여주는 수준을 넘어, 사용자 맞춤형 정보를 빠르게 제공하고 오프라인에서도 동작하는 방향으로 발전하고 있습니다.

이번에 개발한 토정비결어때 역시 이러한 방향을 목표로 설계했습니다. 특히 서버나 API에 의존하지 않고 SQLite 데이터베이스와 자체 운세 엔진을 이용하여 토정비결과 하루운세를 제공하도록 구성했습니다.


왜 SQLite를 선택했을까?

모바일 앱은 인터넷이 없는 환경에서도 안정적으로 동작하는 것이 중요합니다.

SQLite는 별도의 DB 서버가 필요 없고, 앱 내부에 하나의 파일로 저장되므로 다음과 같은 장점이 있습니다.

  • 인터넷 연결 없이 사용 가능
  • 실행 속도가 빠름
  • 앱 내부 데이터 저장
  • 개인정보 보호
  • 백업과 유지보수가 쉬움

그래서 사용자 정보와 운세 데이터를 SQLite에 저장하도록 설계했습니다.


SQLite 구성

앱 내부에는 크게 다음과 같은 테이블을 사용합니다.

① 사용자 정보

UserInfo

Name
Gender
SolarType (양력/음력)
BirthYear
BirthMonth
BirthDay
BirthHour
TargetYear
 

사용자는 한 번만 입력하면 이후 자동으로 불러옵니다.


② 토정비결 해설

TojeongFortune

FortuneCode

TotalLuck

MoneyLuck

BusinessLuck

HealthLuck

LoveLuck

Advice
 

여기에는 운세 해설이 저장됩니다.


③ 월별 운세

MonthlyFortune

FortuneCode

Month

Title

Description

ActionGuide
 

예를 들어

FortuneCode = A125

Month = 3

Description

새로운 기회가 보이는 시기입니다.
...
 

처럼 저장됩니다.


④ 하루운세

DailyFortune

FortuneGroup

Level

Description

LuckyColor

LuckyNumber

Advice
 

오늘의 운세 문구를 저장하는 테이블입니다.


토정비결은 어떻게 조회할까?

많은 사람들이

"생년월일을 DB에서 그대로 찾는 건가?"

라고 생각하지만 실제로는 그렇지 않습니다.

토정비결은

먼저

생년월일

↓

양력/음력 변환

↓

간지 계산

↓

운세 코드 생성
 

을 수행합니다.

예를 들어

1980.05.15

↓

음력 변환

↓

간지 계산

↓

운세코드

A125
 

처럼 하나의 운세 코드가 만들어집니다.

그 후

SQLite에서

 
SELECT *

FROM TojeongFortune

WHERE FortuneCode='A125'
 

를 실행하여

총운

재물운

사업운

건강운

등을 가져옵니다.


월별 운세는?

같은 코드로

 
SELECT *

FROM MonthlyFortune

WHERE FortuneCode='A125'

ORDER BY Month
 

을 조회합니다.

그러면

음력 1월

음력 2월

...

음력 12월
 

내용이 순서대로 표시됩니다.

현재 앱에서는

음력 3월

(양력 4월 16일 ~ 5월 14일)
 

처럼 양력 기간도 함께 표시하여 이해하기 쉽도록 구성했습니다.


하루운세는 어떻게 만들까?

하루운세는 토정비결과 조금 다릅니다.

토정비결이

한 해

↓

큰 흐름
 

이라면

하루운세는

오늘

↓

개인의 흐름
 

을 보여줍니다.


오늘의 운세 계산

먼저

생년월일

+

오늘 날짜

↓

오늘 운세 코드 생성
 

을 합니다.

예를 들어

1980.05.15

+

2026.07.05
 

를 이용하여

DailyGroup

15
 

가 계산됩니다.

그러면

SQLite에서

 
SELECT *

FROM DailyFortune

WHERE FortuneGroup=15
 

를 조회하여

오늘의

  • 총운
  • 재물운
  • 건강운
  • 애정운
  • 직장운

등을 표시합니다.


왜 운세 코드를 사용할까?

만약

1980년

5월

15일

남자
 

를 그대로 저장한다면

수백만 개의 데이터를 만들어야 합니다.

하지만

운세 코드를 이용하면

A125
 

같은 코드 하나로

수천 명이 동일한 기본 해설을 사용할 수 있습니다.

생년월일

↓

운세 코드

↓

SQLite 조회
 

만 수행하면 됩니다.

이 방식이 훨씬 빠르고 효율적입니다.


하루운세는 매일 바뀐다

오늘의 운세는

오늘 날짜
 

가 바뀌면

자동으로

오늘 운세 코드
 

도 변경됩니다.

따라서 사용자는

별도의 입력 없이

앱만 실행하면

새로운 하루운세를 볼 수 있습니다.


확장성도 고려

SQLite 구조를 잘 설계하면

쉽게

  • 띠별 운세
  • 혈액형 운세
  • 별자리 운세
  • 사주
  • 궁합

등도 추가할 수 있습니다.

예를 들어

ZodiacFortune

BloodFortune

StarFortune

Biorhythm

Compatibility
 

같은 테이블만 추가하면 됩니다.


개발 시 가장 중요한 부분

토정비결 앱에서 핵심은 문구를 많이 저장하는 것이 아니라, 계산 엔진과 해설 DB를 분리하는 것입니다.

즉,

사용자 정보
        │
        ▼
양력/음력 변환
        │
        ▼
운세 코드 생성
        │
        ▼
SQLite 해설 조회
        │
        ▼
토정비결 표시
 

그리고 하루운세는

사용자 정보
        │
        ▼
오늘 날짜
        │
        ▼
하루운세 코드 생성
        │
        ▼
SQLite 조회
        │
        ▼
오늘의 운세 표시
 

와 같은 구조로 동작합니다.


마무리

토정비결 앱은 단순히 운세 문구를 저장하는 것이 아니라 사용자의 생년월일과 기준 연도를 바탕으로 운세 코드를 계산하고, SQLite에 저장된 해설을 빠르게 조회하는 구조로 개발하는 것이 효율적입니다.

이러한 방식은 API 없이도 안정적으로 동작하며, 오프라인 환경에서도 빠른 응답 속도를 제공합니다. 또한 구조가 명확해 향후 사주, 궁합, 띠별 운세, 별자리 운세, AI 해설 등 다양한 기능을 자연스럽게 추가할 수 있다는 장점도 있습니다.

토정비결과 같은 전통 콘텐츠에 SQLite 기반의 데이터 구조와 모바일 기술을 결합하면, 누구나 쉽고 편리하게 사용할 수 있는 현대적인 운세 앱을 구현할 수 있습니다.

반응형