コンテンツにスキップ
hocg-analyze
Esc
navigateopen⌘Jpreview
このページの内容

DB スキーマ

hocg-analyze が使用するデータベーススキーマのリファレンス

hocg-analyze は Cloudflare D1(SQLite)上に 5 つのテーブルを持ちます。データは ブシナビ APIdecklog API から日次同期されます。

ER 図

Event 1──* TournamentResult *──? Deck 1──* DeckCard *──1 Card
  • EventTournamentResult: 1 つの大会に複数の入賞結果
  • TournamentResultDeck: 入賞者がデッキレシピを公開している場合のみ紐付く
  • DeckDeckCard: 1 つのデッキに複数のカードエントリ(レアリティ別)
  • DeckCardCard: カードマスタへの参照

Event(大会)

ブシナビ API から取得した大会情報。

カラム 説明
id Int (PK) 内部 ID
source_event_id Int (UNIQUE) ブシナビ側の大会 ID
event_series String 大会シリーズ名(例: エントリーカップ)
event_title String? 大会タイトル
organizer_name String 主催店舗名
place String? 開催場所
pref_code Int? 都道府県コード
series_type Int? シリーズ種別
organizer_id Int? 主催者 ID
publish_rank_lower_limit Int? 公開順位の下限
publish_rank_upper_limit Int? 公開順位の上限
date String 開催日
participants Int 参加者数

TournamentResult(入賞結果)

大会ごとの入賞者情報。1 大会・1 順位・1 ユーザ名でユニーク。

カラム 説明
id Int (PK) 内部 ID
event_id Int (FK → Event) 大会 ID
rank Int 順位
username String プレイヤー名
oshi_holomen String 推しホロメン名
deck_image_url String? デッキ画像 URL
reward_image_url String? 報酬画像 URL
friend_code String? フレンドコード
team_id Int? チーム ID
deck_id Int? (FK → Deck) デッキ ID(レシピ公開時のみ)

ユニーク制約: (event_id, rank, username)

Deck(デッキ)

decklog に登録されたデッキレシピのメタデータ。

カラム 説明
id Int (PK) 内部 ID
deck_recipe_id String (UNIQUE) decklog 上のレシピ ID(例: 4Z7PT
title String? デッキタイトル
fav_count Int? decklog 上のお気に入り数
has_recipe_error Int? decklog 側のレシピ不整合フラグ
decklog_url String? decklog URL

DeckCard(デッキ内カード)

デッキに含まれるカードのエントリ。同一カード番号でもレアリティが異なれば別行として保持されます。

カラム 説明
id Int (PK) 内部 ID
deck_id Int (FK → Deck) デッキ ID
card_id String (FK → Card) カード番号
rarity String 印刷ごとのレアリティ(例: C, SR, UR
card_count Int 採用枚数

ユニーク制約: (deck_id, card_id, rarity)

:::note rarity は印刷ごとのレアリティです。同一カードを複数レアリティで採用しているデッキ(例: フロンティアスピリット U×2 + P×2)では、カード番号が同じでも別行として記録されます。Card.rarity は代表レアリティを示す別の値です。 :::

Card(カードマスタ)

decklog API から取得したカード情報。カード番号が主キー。

カラム 説明
card_number String (PK) カード番号(例: hBP07-100
card_name String カード名
card_kind String カード種別(ホロメン / サポート・アイテム 等)
card_type Int? decklog 内部タイプ(1=メイン, 2=エール, 3=推しホロメン)
is_limited Boolean? LIMITED カードフラグ
card_image_url String? カード画像 URL
rarity String? 代表レアリティ(最初に観測された値を保持)
bloom_level String? Bloom レベル(Debut / 1st 等)

データソースと同期

テーブル データソース 同期タイミング
Event, TournamentResult ブシナビ API 毎日 JST 12:00(Sync Data ワークフロー)
Deck, DeckCard, Card decklog API 毎日 JST 13:00(Sync Data ワークフロー)
DeckCard(全件再構築) decklog API 手動(Backfill Deck Cards ワークフロー)

このページは役に立ちましたか?