# Database Schema — slot-ss.com ## 1. 두 개의 DB | 이름 | 위치 (PG) | 크기 (MariaDB) | 테이블 | 용도 | |------|-----------|----------------|--------|------| | `inspection2` | `slot.inspection2.*` | 4 GB | 165 | **현재 운영 DB** | | `inspection` | `slot_legacy.inspection.*` | 397 MB | 107 | **구버전 (레거시)** — 일부 데이터 포함 | | `DomainCheck` | (마이그레이션 안 함) | 4 KB | — | 거의 빈 테이블, 무시 | > 모든 테이블은 PostgreSQL 의 `inspection2` schema 안에 있다 (pgloader 가 MySQL DB 이름을 schema 이름으로 사용). 접근: `psql -h localhost -d slot -c "SET search_path TO inspection2; ..."` ## 2. 카테고리별 분포 (운영 DB 기준) | 카테고리 | 테이블 수 | 사이즈 | 행 수 | |----------|-----------|--------|------| | 그누보드 코어 (`g5_*`) | 36 | 2.39 GB | 11.07M | | 커스텀 (slot/casino/chatbot/sms/등) | 27 | 713 MB | 6.07M | | 게시판 데이터 (`g5_write_*`) | 37 | 416 MB | 764K | | 이윰 빌더 (`g5_eyoom_*`) | 38 | 222 MB | 914K | | 영카트 쇼핑몰 (`g5_shop_*`) | 24 | 1.16 MB | 1.7K | | 플러그인 (`g5_plugin_*`) | 3 | 4.7 MB | 10K | ## 3. 가장 큰 테이블 Top 20 | 테이블 | 행 수 | 사이즈 | 설명 | |--------|-------|--------|------| | `g5_point` | 5,950,013 | 1380 MB | 회원 포인트 적립/사용 내역 | | `g5_visit` | 4,566,650 | 929 MB | 방문자 로그 (전체 페이지뷰) | | `game_point` | 4,383,542 | 515 MB | **게임 포인트** (슬롯/바카라/룰렛 베팅 결과) | | `g5_write_free` | 442,272 | 228 MB | 자유게시판 글+댓글 | | `g5_eyoom_attendance` | 425,540 | 116 MB | 출석체크 | | `g5_eyoom_activity` | 418,236 | 91 MB | 회원 활동 로그 | | `games_table` | 303,238 | 53 MB | **슬롯 게임 마스터 테이블** | | `g5_write_pick` | 17,189 | 44 MB | 픽게시판 | | `g5_write_review` | 120,870 | 43 MB | 슬롯 후기게시판 | | `g5_board_new` | 191,817 | 42 MB | 신규 게시글 인덱스 (캐시) | | `blacklist_table` | 193,190 | 42 MB | **먹튀 블랙리스트 검색** | | `writing_activity_bak` | 610,146 | 39 MB | 게시 활동 로그 백업 | | `writing_activity` | 184,376 | 31 MB | 게시 활동 로그 (현재) | | `check_table` | 359,644 | 26 MB | 검수/검증 로그 | | `g5_uniqid` | 322,862 | 23 MB | 그누보드 unique ID 생성기 | | `g5_write_humor` | 20,303 | 20 MB | 유머/이슈 게시판 | | `g5_write_rear` | 18,022 | 20 MB | 후방게시판 | | `g5_write_mukti` | 37,325 | 15 MB | 먹튀사이트 게시판 | | `g5_write_lottery_ticket` | 45,724 | 13 MB | 슬생복권 응모 | | `g5_write_fakesite` | 33,126 | 10 MB | 가품사이트 게시판 | ## 4. 운영 게시판 전체 (g5_board → 36개 + 게시판별 g5_write_* 테이블) | bo_table | 제목 | 글 수 | 댓글 수 | |----------|------|------|---------| | free | 자유게시판 | 90,591 | 351,685 | | lottery_ticket | 슬생복권 | 45,724 | 0 | | humor | 유머/이슈 | 19,209 | 1,094 | | rear | 후방게시판 | 17,650 | 374 | | pick | 픽게시판 | 17,171 | 23 | | review | 후기게시판 | 8,399 | 112,462 | | gift_coupons | 기프티콘교환 | 4,693 | 0 | | webtoon | (19금)번역망가 | 1,987 | 0 | | mukti | 먹튀사이트 | 1,824 | 35,501 | | fakesite | 가품사이트 | 1,517 | 31,609 | | gift_exchanges | 기프티콘현황 | 1,404 | 1,398 | | news | 카지노뉴스 | 1,055 | 3 | | complaint | 먹튀신고 | 1,052 | 17 | | ai | (19금)AI 사진 | 984 | 0 | | slotche2 | 프라그마틱 | 614 | 0 | | slotreview | 슬롯 리뷰 | 544 | 1 | | slotche4 | 플레이엔고 | 394 | 0 | | slotche6 | 하바네로 | 176 | 0 | | slotche5 | 릴랙스게이밍 | 151 | 0 | | slotche7 | CQ9 | 146 | 0 | | slotche3,8,9,10,11,12 | (기타 슬롯제작사) | < 100 each | — | | dividend, guarantee, event, notice, qa, column, reservation, inspection, guide | (각종 보조게시판) | — | — | ## 5. 회원 (g5_member) 핵심 컬럼 | 컬럼 | 타입 | 설명 | |------|------|------| | `mb_no` | bigint PK | 회원 일련번호 | | `mb_id` | varchar | 로그인 ID | | `mb_password` | varchar | bcrypt + (gnuboard 전용) salt 해시 | | `mb_password2` | varchar | (구버전 호환) | | `mb_nick` | varchar | 닉네임 | | `mb_email` | varchar | 이메일 | | `mb_level` | smallint | 권한 레벨 (1-12). **12 = 최고관리자** | | `mb_point` | int | 보유 포인트 | | `mb_today_login`, `mb_login_start`, `mb_login_ip` | — | 로그인 기록 | | `mb_certify`, `mb_adult`, `mb_dupinfo` | — | 본인인증 (KCP / okname) | | `mb_signature` | text | 회원 서명 | | `mb_open` | smallint | 정보공개 여부 | **현재 회원 수**: 3,064 명 / 관리자 4명 (`admin`, `admin2`(먹튀판사), `admin3`(슬생검증팀), `admin4`(슬생운영팀)) ## 6. 핵심 테이블 카테고리 별 정리 ### 6.1 그누보드 코어 (`g5_*`) - `g5_member`, `g5_member_social_profiles`, `g5_member_cert_history` - `g5_board`, `g5_board_file`, `g5_board_good`, `g5_board_new` - `g5_group`, `g5_group_member` - `g5_point` (포인트 원장), `g5_login` (현재 로그인), `g5_visit` / `g5_visit_sum` (방문통계) - `g5_qa_config`, `g5_qa_content` (1:1문의) - `g5_content`, `g5_faq`, `g5_faq_master`, `g5_menu`, `g5_new_win`, `g5_poll`, `g5_poll_etc`, `g5_popular`, `g5_scrap`, `g5_memo`, `g5_mail`, `g5_autosave`, `g5_uniqid`, `g5_auth`, `g5_config`, `g5_cert_history` ### 6.2 게시판 데이터 (`g5_write_*`) 한 게시판당 한 테이블 — 위 §4 표의 36개 게시판 × 각 `g5_write_` ### 6.3 이윰 빌더 (`g5_eyoom_*`) 대표: - `g5_eyoom_member` (확장 회원정보), `g5_eyoom_attendance` (출석), `g5_eyoom_activity` (활동), `g5_eyoom_respond` (반응/공감) - `g5_eyoom_banner`, `g5_eyoom_banner_item`, `g5_eyoom_banner_hit` - `g5_eyoom_slider`, `g5_eyoom_slider_ytitem` - `g5_eyoom_yellowcard` (경고/제재), `g5_eyoom_manager` (운영진) - `g5_eyoom_tag`, `g5_eyoom_tag_write` (태그) - `g5_eyoom_bbspoll`, `g5_eyoom_counsel`, `g5_eyoom_goods`, `g5_eyoom_rating`, `g5_eyoom_mbmemo`, `g5_eyoom_yellowcard` ### 6.4 영카트 쇼핑몰 (`g5_shop_*`) - 거의 비어있음 (운영 미가동) — 현재 데이터 1.7K 행, 1MB - `g5_shop_default`(설정), `g5_shop_item`(상품), `g5_shop_item_option`, `g5_shop_cart`(1559건), `g5_shop_order`, `g5_shop_order_data`, `g5_shop_coupon*`, `g5_shop_event*`, `g5_shop_personalpay`, `g5_shop_inicis_log` ### 6.5 커스텀 — 슬롯/카지노 도메인 | 테이블 | 용도 | |--------|------| | `game_point` | 게임 포인트 (슬롯/바카라/룰렛 베팅 결과 적립) | | `games_table` | 슬롯 게임 마스터 (303K 게임 회차 추정) | | `bacara_betting` | 바카라 베팅 로그 (7.9K건) | | `swiun_betting` | Swiun 슬롯 API 베팅 로그 | | `lottery_history` | 복권 응모/당첨 이력 | | `event_point_exchange`, `point_exchange` | 포인트 환전/이벤트 | | `slotbuff`, `slotbuff-category` | "슬롯버프" 기능 | | `blacklist_table`, `blacklist_search` | 먹튀 블랙리스트 | | `check_table`, `writing_activity*`, `writing_today` | 검증/활동 로그 | | `chatbot_conversations`, `chatbot_feedback` | 챗봇 (AI 대화) | | `officecon_products` | 기프티콘 | | `ask_seo`, `ask_seo_url` | SEO 메타 | | `sms5_book`, `sms5_book_group`, `sms5_config`, `sms5_form`, `sms5_form_group`, `sms5_history`, `sms5_write` | SMS 발송 시스템 | ## 7. 마이그레이션 시 주의사항 ### 7.1 인덱스 손실 - pgloader 의 `preserve index names` 옵션과 **MySQL 의 동일-인덱스명 across-table 허용** 차이로 211개 인덱스 생성 실패 (PostgreSQL 은 schema 내 인덱스 이름 unique 필수). - 다음 단계로 인덱스 이름을 `_` 형태로 자동 rename 후 재생성 필요. → `db/regen_indexes.sql` 스크립트로 작성 예정. ### 7.2 비밀번호 해시 - 그누보드5 `mb_password` 는 PHP `password_hash($pw, PASSWORD_BCRYPT)` 형식 - Node.js 신규 시스템에서 `bcrypt.compare()` 호환 가능 (즉, 회원 비밀번호 그대로 사용 가능) ### 7.3 한글 인덱스 이름 / 특수 컬럼 - `lottery_history` 테이블의 `복권 게시판 주키` 같이 한글 이름의 인덱스가 있음 — pgloader 가 quoting 실패. 신규 스키마에서는 영어로 rename. ### 7.4 BLOB / 첨부 메타 - 본문 첨부파일 메타는 `g5_board_file` 에 있고 실파일은 서버의 `/var/www/slot-ss.com/data/file///` 에 저장 - 에디터 이미지: `data/editor//` — 74GB - 신규 시스템에서는 S3 호환 오브젝트 스토리지로 이전 권장 (Cloudflare R2 / AWS S3 / MinIO) ### 7.5 ENUM/SET - pgloader 는 `enum`/`set` → `text` 로 변환. 검증 로직은 신규 스키마에서 CHECK 제약 또는 PostgreSQL native enum 으로 재정의 권장 ### 7.6 datetime/zerodate - MySQL 의 `'0000-00-00 00:00:00'` 은 `using zero-dates-to-null` 로 NULL 변환됨. NOT NULL 제약은 모두 제거된 채로 들어왔음. 비즈니스 로직에서 NULL 허용을 검토할 것.