From 8f51391e62eff95a773510e51ce5142b1db00397 Mon Sep 17 00:00:00 2001 From: 0914eagle <0914eagle@gmail.com> Date: Sat, 23 Aug 2025 13:04:17 +0900 Subject: [PATCH] =?UTF-8?q?=EB=94=94=EB=B9=84=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 300_architecture/database/tables.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/300_architecture/database/tables.md b/300_architecture/database/tables.md index 87d557f..97bf8b2 100644 --- a/300_architecture/database/tables.md +++ b/300_architecture/database/tables.md @@ -1,6 +1,7 @@ # PostgreSQL 테이블 구조 ## 작성일: 2025-08-20 +## 최종 수정일: 2025-08-23 ## 데이터베이스: main_db --- @@ -112,12 +113,14 @@ | 컬럼명 | 타입 | NULL | 기본값 | 설명 | |--------|------|------|--------|------| | id | SERIAL | NO | | 토큰 ID | -| user_id | UUID | NO | | 사용자 ID (FK → users) | +| user_id | UUID | NO | | 사용자 ID (FK → users) (UNIQUE) | +| username | VARCHAR(50) | YES | | 사용자명 (users.username과 동일) | +| slack_id | VARCHAR(50) | YES | | Slack User ID (U로 시작) | | robeing_id | VARCHAR(50) | YES | | 로빙 ID | -| token_data | JSONB | NO | | access_token, refresh_token | +| token_data | JSONB | NO | | access_token, refresh_token, token_type 등 | | oauth_config | JSONB | YES | | client_id, client_secret, token_uri | | scopes | JSONB | YES | | Gmail API 권한 목록 | -| metadata | JSONB | YES | | email, imported_at 등 | +| metadata | JSONB | YES | | email, name, picture, verified_email 등 | | expiry | TIMESTAMP | YES | | 토큰 만료 시각 | | is_equipped | BOOLEAN | YES | false | 장착 상태 | | equipped_to | VARCHAR(50) | YES | | 장착된 로빙 ID | @@ -233,7 +236,7 @@ ### 주요 인덱스 - users: email (UNIQUE), username (UNIQUE) -- gmail_tokens: user_id, robeing_id, oauth_config (GIN), token_data (GIN) +- gmail_tokens: user_id (UNIQUE), username, slack_id, robeing_id, oauth_config (GIN), token_data (GIN) - slack_user_mapping: slack_user_id, user_id - workspace_members: workspace_id, user_id - conversation_logs: user_id, robeing_id, created_at @@ -263,6 +266,15 @@ - **robeing_id**: VARCHAR(50) 통일 - **timestamp**: TIMESTAMP WITHOUT TIME ZONE 사용 +### 최근 변경사항 (2025-08-23) +1. gmail_tokens 테이블 구조 변경: + - user_id: VARCHAR(100) → UUID로 변경 (users.id 외래키) + - username: VARCHAR(50) 컬럼 추가 (빠른 조회용) + - slack_id: VARCHAR(50) 컬럼 추가 (Slack 연동용) +2. 외래키 관계 정립: + - gmail_tokens.user_id → users.id + - 데이터 무결성 보장 + ### 개선 필요 사항 1. 일부 테이블의 소유자가 postgres로 되어있어 권한 조정 필요 2. auth_db → main_db로 마이그레이션 완료