# 00_09 データベース操作マニュアル(真柴さん用) | 項目 | 内容 | |---|---| | 版 | v0.1 | | 作成 | 全体管理者 14代目(2026-10-29) | | 対象 | サーバーパネルの phpMyAdmin で、DBの中身を確認する人 | | 保存先 | `public_html/docs/` には置かない(DBの構造・操作を含むため)。00_07・00_08 と同じ扱い | --- ## 1. いまのDBの状態(2026-10-29) - DBに移行済みなのは、**会計の仕訳だけ**です(`journals`、`journal_entries`)。 - 仕訳帳(journal.html)の読込・保存は、DBを使っています。 - 従事者、顧客、案件、マスタは、まだJSONファイルです(移行はこれから)。 - 保存のたびに、保存前の状態が、JSONで `data/backups/accounting/private/2026/`(年ごとのフォルダ)に残ります。 ## 2. 表の意味 | 表 | 意味 | 1行が表すもの | |---|---|---| | `journals` | 仕訳 | 仕訳1件(日付、摘要、会社、案件番号、ロック状態、領収書のパス など) | | `journal_entries` | 仕訳の明細 | 借方・貸方の1行(科目、金額、税区分)。1件の仕訳に、2〜3行 | - `journal_entries.row_id` は、`journals.row_id` と対応します。 - `journals.source_file` は、取込元の年(例 `private/2026`)です。画面の年の切り替えは、この値で分けています。 - `journal_id` は、画面が使う仕訳のIDです。同じ値が2件あることがあります(2024年に10組。今は修正しない方針)。 ## 3. phpMyAdmin の開き方 1. サーバーパネルにログインし、「データベース」→「phpMyAdmin」を開く。 2. DBのユーザー名とパスワードで、ログインする。 3. 左の一覧から `xs418819_spsdb` をクリックする。 ## 4. 見る(安全な操作) - 表の中身:表の名前をクリック →「表示」タブ。 - 件数:表の一覧の「行」の列(目安の数字)。正確な数は、5節の1つ目のSQLを使う。 - 検索:「検索」タブで、条件を入れる。 - SQLで調べる:「SQL」タブに、5節のSQLを貼って「実行」を押す。**DBを選んだ状態で**開くこと(サーバー全体の「SQL」だと「データベースが選択されていません」になる)。 ## 5. よく使うSQL(調べるだけ。データは変わりません) `SELECT` で始まるものだけを使います。 **仕訳の件数(年ごと)** ```sql SELECT source_file, COUNT(*) AS 件数 FROM journals GROUP BY source_file; ``` **貸借が一致しない仕訳** ```sql SELECT j.row_id, j.journal_id, j.date_raw, j.description, SUM(e.debit) AS 借方, SUM(e.credit) AS 貸方 FROM journals j JOIN journal_entries e ON e.row_id = j.row_id GROUP BY j.row_id, j.journal_id, j.date_raw, j.description HAVING SUM(e.debit) <> SUM(e.credit); ``` **IDが重複している仕訳** ```sql SELECT journal_id, COUNT(*) AS 件数 FROM journals GROUP BY journal_id HAVING COUNT(*) > 1; ``` **科目ごとの借方・貸方の合計(年を指定)** ```sql SELECT e.account AS 科目, SUM(e.debit) AS 借方, SUM(e.credit) AS 貸方 FROM journals j JOIN journal_entries e ON e.row_id = j.row_id WHERE j.source_file = 'private/2026' GROUP BY e.account ORDER BY e.account; ``` **摘要で探す** ```sql SELECT row_id, journal_id, date_raw, description FROM journals WHERE description LIKE '%タイムズ%'; ``` **1件の仕訳の明細**(`295` は、`journals` の `row_id`) ```sql SELECT * FROM journal_entries WHERE row_id = 295 ORDER BY line_no; ``` ## 6. やってはいけない操作 次の操作は、DBが直接変わります。画面の保存を通さないので、元に戻せないことがあります。**必ず私に相談してから**行ってください。 - 行の「編集」「削除」「コピー」 - 表の「空にする」「削除」 - 「構造」タブでの、列の変更・削除 - 「インポート」 - `INSERT`、`UPDATE`、`DELETE`、`DROP`、`TRUNCATE`、`ALTER` で始まるSQL 仕訳を直す・消すときは、仕訳帳の画面から行ってください(保存前の状態が、バックアップに残ります)。 ## 7. バックアップと、戻し方 - 画面で保存するたびに、保存前の状態が、`data/backups/accounting/(private または corporate)/年/journals_日付_時刻.json` に、JSONで残ります。 - 間違えて保存した場合は、保存前のバックアップのファイルを、私に送ってください。DBに戻す手順を、私が作ります(戻しは、現時点では、手動の作業です)。 - **DB全体の自動バックアップ(サーバー側、または定期的なダンプ)は、未確認・未設定です**(00_07 7節)。確認してから、このマニュアルに追記します。 ## 8. 困ったとき - エラーが出たら、画面の文字を、そのまま私に送ってください。 - 勝手に直そうとせず、そのままにしてください。 ## 改訂履歴 | 日付 | 版 | 担当 | 内容 | |---|---|---|---| | 2026-10-29 | v0.1 | 全体管理者14代目 | 新規作成。会計(仕訳)のDBについて |