Slide 1

Slide 1 text

WordPressの データベース構造を見てみよう

Slide 2

Slide 2 text

*you 非IT企業のWeb担で、 業務アプリ作ってる人 娘がふたり( 7歳 & 2歳 ) ateitexe.com @ateitexe

Slide 3

Slide 3 text

私の仕事 Via: http://www.iconsdb.com/ 出荷管理 業務アプリ DB 生産管理システム 帳票出力 生産計画 工場 ゴリッゴリの Winユーザー! 製造部

Slide 4

Slide 4 text

WordPressとのかかわり • 会社のコーポレートサイト(一部WP)の保守 • 社内ネットワークにて社員向け情報ページの運営 • 自分のブログ(現在6年目) 個人ブログ コーポレートサイト 社内サイト MS Office系の書籍を執筆しています • ブログがきっかけで、執筆業をはじめました • 2018年1月ごろ、「Access レポート&フォーム徹底解説(仮)」発売します

Slide 5

Slide 5 text

今日おはなしすること 1. データベースとは? 2. リレーションシップのおはなし 3. WPのデータベース構造 4. どんないいことがあるの? できるだけ むずかしくないように がんばります… _(:3 」∠)_

Slide 6

Slide 6 text

1データベースとは? • WordPressは、2つの要素から成り立っている • テーマ群 … 「見た目」の構築 • テンプレートファイル • 画像 • データベース … 「情報」を格納 • タイトル、記事の中身などのテキスト情報 今日はこっちのお話

Slide 7

Slide 7 text

買ってきた食材、どうしますか? おなじところに ぜんぶ 入れちゃう?

Slide 8

Slide 8 text

それぞれ適切な場所に保管しますよね? すっごく データベース! にんじん じゃがいも たまねぎ レトルト類 カップラーメン 缶詰 おにく さかな アイス 冷凍食品 キャベツ レタス

Slide 9

Slide 9 text

テキストで表現してみる 種類 グラム 数 牛 200 2 豚 200 3 鮭 100 3 冷蔵室 種類 数 キャベツ 2 レタス 3 野菜室 種類 箱入数 数 バニラアイス 6 1 チョコアイス 6 2 冷凍グラタン 3 1 冷凍室 種類 数 にんじん 2 じゃがいも 6 たまねぎ 5 根菜棚 種類 数 レトルトカレー 6 カップラーメン 3 保存食棚

Slide 10

Slide 10 text

ざっくりいうと • 情報を整理・グループ化してあるべきところにきれいに収める • さがしやすい! • いっぱいはいる!!

Slide 11

Slide 11 text

データベースの基礎用語 テーブル 縦方向: フィールド 横方向: レコード 見出し: フィールド名 テーブルが 集まったものが データベース レコード 単位で 増減

Slide 12

Slide 12 text

主キー と データ型 ID 入社日 名前 性別 1 2017-11-01 鈴木一郎 35 2 2017-11-05 山田太郎 28 3 2017-11-05 山田太郎 28 社員情報 数値型 (自動連番) 日付/ 時刻型 テキスト型 数値型 • データ型 • 誤登録を防ぐ • 無駄な容量を使わない • 並び替えしやすい • 計算に強い 主キー レコードの 識別

Slide 13

Slide 13 text

2リレーションシップのおはなし • ただ保管するだけじゃない、データベースのスゴイところ • テーブルとテーブルを「関連付ける」 • 少ないデータ量でたくさんの情報を扱える

Slide 14

Slide 14 text

1つのテーブルで管理すると ID 日時 区分 名前 部門 1 2017-11-10 07:50:00 出勤 鈴木一郎 営業 2 2017-11-10 07:55:00 出勤 山田太郎 総務 3 2017-11-10 18:00:00 退勤 山田太郎 総務 出退勤管理 ちょっと 無駄が多い…

Slide 15

Slide 15 text

複数テーブルで管理すると 出退勤ID 日時 区分 社員ID 1 2017-11-10 07:50:00 出勤 1 2 2017-11-10 07:55:00 出勤 3 3 2017-11-10 18:00:00 退勤 3 出退勤管理 社員ID 入社日 名前 性別 部門 1 2011-11-01 鈴木一郎 35 営業 2 2017-11-05 山田太郎 28 総務 3 2017-11-05 山田太郎 28 総務 社員情報 主キーを使って 関連づけると、 無駄なデータを 持たなくて済む リレーションシップ

Slide 16

Slide 16 text

3WordPressのデータベース構造 • テーブル数は、12個(4.8.3現在) • たいてい、インストール時に設定するだけで見たことない人が多い…? • ざっくりした概要だけでも知ってると便利(だと思う)! • バックアップへの理解も進むんじゃないかな

Slide 17

Slide 17 text

WordPress (4.8.3) のテーブル • wp_commentmeta • wp_comments • wp_links • wp_options • wp_postmeta • wp_posts • wp_termmeta • wp_terms • wp_term_relationships • wp_term_taxonomy • wp_usermeta • wp_users メタデータ ↓ データについての データ カテゴリー タグ ユーザー情報 投稿 コメント ピンバック

Slide 18

Slide 18 text

wp_posts テーブルのフィールド • ID • post_author • post_date • post_date_gmt • post_content • post_title • post_excerpt • post_status • comment_status • ping_status • post_password • post_name • to_ping • pinged • post_modified • post_modified_gmt • post_content_filtered • post_parent • guid • menu_order • post_type • post_mime_type • comment_count … 記事/添付ファイルID … 投稿者ID … 投稿日時 … 本文 … タイトル … 抜粋オプション … 投稿ステータス … コメントステータス … ピンバックステータス … 投稿スラッグ … 更新日時 … 親ID … 投稿タイプ … コメント数 post … 投稿ページ page … 固定ページ attachment … 添付ファイル etc publish … 公開 draft … 下書き private … 非公開 inherit … 添付ファイル etc

Slide 19

Slide 19 text

wp_posts イメージ ID post_author post_date post_title post_content post_status post_type … 1 2 2017-11-01 00:00:00 投稿テスト 本文テキスト draft post … 2 2 2017-11-10 00:00:00 filename inherit attachment … 3 1 2017-11-19 00:00:00 固定テスト 本文テキスト publish page … 投稿ステータス 投稿タイプ 記事/添付ID 投稿者ID 投稿日時 本文 タイトル リビジョンの場合は post_status: inherit post_type: revision 知らずに溜まるので注意

Slide 20

Slide 20 text

wp_terms テーブルのフィールド term_id name slug term_group 1 WordPress wordpress 2 イラスト illustration 3 日記 diary 名称 カテゴリID or タグID スラッグ

Slide 21

Slide 21 text

wp_term_relationships テーブルのフィールド object_id term_taxonomy_id term_order 1 3 2 1 2 2 リンク先ID (記事ID) カテゴリID or タグID

Slide 22

Slide 22 text

ID post_author post_date post_title post_content post_status post_type … 1 2 2017-11-01 00:00:00 記事1 本文テキスト1 publish post … 2 2 2017-11-10 00:00:00 記事2 本文テキスト2 publish post … 3 1 2017-11-19 00:00:00 記事3 本文テキスト3 draft post … wp_posts object_id term_taxonomy_id term_order 1 3 2 1 2 2 term_id name slug term_group 1 WordPress wordpress 2 イラスト illustration 3 日記 diary wp_term_relationships wp_terms 日記 WordPress イラスト リレーションシップのイメージ

Slide 23

Slide 23 text

データベースの最適化と修復 プラグイン ・WP-DBManager ・WP-Optimize 削除した ・コンテンツ ・リビジョン ・スパムコメント 最適化/修復 ※容量は自動で減らない

Slide 24

Slide 24 text

4 • テンプレートタグで出力される元がわかる! • • どんないいことがあるの? ID post_author post_date post_title post_content post_status post_type … 1 2 2017-11-01 00:00:00 記事1 本文テキスト1 publish post … 2 2 2017-11-10 00:00:00 記事2 本文テキスト2 publish post … 3 1 2017-11-19 00:00:00 記事3 本文テキスト3 draft post … wp_posts データベースから、 このフィールドの データを持ってきてる!

Slide 25

Slide 25 text

• 検索結果を投稿記事のみにする(固定ページなどを除外) カスタマイズの意味がわかる! さっきみたやつ! via: http://notnil-creative.com/blog/archives/1996

Slide 26

Slide 26 text

• 指定の投稿者の年間投稿数(公開済み)だけほしい! で呼び出せる関数を自作したり ピンポイントでほしいデータだけひっぱれる!(力技) さっきみたやつ! こういうことも できるぞっていう 例なだけなので、 タグがあるなら そっち使おう!

Slide 27

Slide 27 text

★ さいごに • データベースは、WordPressの「中身」 • ファイル群ももちろん大事だけど、ないと成り立たないモノ • 知らなくても使えるけど、知っていたほうがより理解が深まる! • バックアップ大事! • データベースの中身もちゃんとバックアップしておこうね!

Slide 28

Slide 28 text

ありがとうございました!