Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WordPressのデータベース構造を見てみよう
Search
*you
November 23, 2017
1
2.5k
WordPressのデータベース構造を見てみよう
WordBench 長野 vol.13 でお話した内容です。
*you
November 23, 2017
Tweet
Share
More Decks by *you
See All by *you
「ブログを1年継続する」という壁を越えるために
ateitexe
1
2.6k
超雑記ブログならではの運営の裏側について
ateitexe
1
1.5k
WordPressで個人ブログを運営しよう! -アウトプットのススメ-
ateitexe
4
2.8k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
430
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Building an army of robots
kneath
302
43k
Making Projects Easy
brettharned
115
5.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
BBQ
matthewcrist
85
9.3k
The Pragmatic Product Professional
lauravandoore
31
6.3k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Transcript
WordPressの データベース構造を見てみよう
*you 非IT企業のWeb担で、 業務アプリ作ってる人 娘がふたり( 7歳 & 2歳 ) ateitexe.com @ateitexe
私の仕事 Via: http://www.iconsdb.com/ 出荷管理 業務アプリ DB 生産管理システム 帳票出力 生産計画 工場
ゴリッゴリの Winユーザー! 製造部
WordPressとのかかわり • 会社のコーポレートサイト(一部WP)の保守 • 社内ネットワークにて社員向け情報ページの運営 • 自分のブログ(現在6年目) 個人ブログ コーポレートサイト 社内サイト
MS Office系の書籍を執筆しています • ブログがきっかけで、執筆業をはじめました • 2018年1月ごろ、「Access レポート&フォーム徹底解説(仮)」発売します
今日おはなしすること 1. データベースとは? 2. リレーションシップのおはなし 3. WPのデータベース構造 4. どんないいことがあるの? できるだけ
むずかしくないように がんばります… _(:3 」∠)_
1データベースとは? • WordPressは、2つの要素から成り立っている • テーマ群 … 「見た目」の構築 • テンプレートファイル •
画像 • データベース … 「情報」を格納 • タイトル、記事の中身などのテキスト情報 今日はこっちのお話
買ってきた食材、どうしますか? おなじところに ぜんぶ 入れちゃう?
それぞれ適切な場所に保管しますよね? すっごく データベース! にんじん じゃがいも たまねぎ レトルト類 カップラーメン 缶詰 おにく
さかな アイス 冷凍食品 キャベツ レタス
テキストで表現してみる 種類 グラム 数 牛 200 2 豚 200 3
鮭 100 3 冷蔵室 種類 数 キャベツ 2 レタス 3 野菜室 種類 箱入数 数 バニラアイス 6 1 チョコアイス 6 2 冷凍グラタン 3 1 冷凍室 種類 数 にんじん 2 じゃがいも 6 たまねぎ 5 根菜棚 種類 数 レトルトカレー 6 カップラーメン 3 保存食棚
ざっくりいうと • 情報を整理・グループ化してあるべきところにきれいに収める • さがしやすい! • いっぱいはいる!!
データベースの基礎用語 テーブル 縦方向: フィールド 横方向: レコード 見出し: フィールド名 テーブルが 集まったものが
データベース レコード 単位で 増減
主キー と データ型 ID 入社日 名前 性別 1 2017-11-01 鈴木一郎
35 2 2017-11-05 山田太郎 28 3 2017-11-05 山田太郎 28 社員情報 数値型 (自動連番) 日付/ 時刻型 テキスト型 数値型 • データ型 • 誤登録を防ぐ • 無駄な容量を使わない • 並び替えしやすい • 計算に強い 主キー レコードの 識別
2リレーションシップのおはなし • ただ保管するだけじゃない、データベースのスゴイところ • テーブルとテーブルを「関連付ける」 • 少ないデータ量でたくさんの情報を扱える
1つのテーブルで管理すると ID 日時 区分 名前 部門 1 2017-11-10 07:50:00 出勤
鈴木一郎 営業 2 2017-11-10 07:55:00 出勤 山田太郎 総務 3 2017-11-10 18:00:00 退勤 山田太郎 総務 出退勤管理 ちょっと 無駄が多い…
複数テーブルで管理すると 出退勤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 総務 社員情報 主キーを使って 関連づけると、 無駄なデータを 持たなくて済む リレーションシップ
3WordPressのデータベース構造 • テーブル数は、12個(4.8.3現在) • たいてい、インストール時に設定するだけで見たことない人が多い…? • ざっくりした概要だけでも知ってると便利(だと思う)! • バックアップへの理解も進むんじゃないかな
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 メタデータ ↓ データについての データ カテゴリー タグ ユーザー情報 投稿 コメント ピンバック
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
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 知らずに溜まるので注意
wp_terms テーブルのフィールド term_id name slug term_group 1 WordPress wordpress 2
イラスト illustration 3 日記 diary 名称 カテゴリID or タグID スラッグ
wp_term_relationships テーブルのフィールド object_id term_taxonomy_id term_order 1 3 2 1 2
2 リンク先ID (記事ID) カテゴリID or タグID
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 イラスト リレーションシップのイメージ
データベースの最適化と修復 プラグイン ・WP-DBManager ・WP-Optimize 削除した ・コンテンツ ・リビジョン ・スパムコメント 最適化/修復 ※容量は自動で減らない
4 • テンプレートタグで出力される元がわかる! • <?php the_title(); ?> • <?php the_content();
?> どんないいことがあるの? 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 データベースから、 このフィールドの データを持ってきてる!
• 検索結果を投稿記事のみにする(固定ページなどを除外) カスタマイズの意味がわかる! さっきみたやつ! via: http://notnil-creative.com/blog/archives/1996
• 指定の投稿者の年間投稿数(公開済み)だけほしい! <?php echo get_archives_num( 2017, 1 ); ?> で呼び出せる関数を自作したり
ピンポイントでほしいデータだけひっぱれる!(力技) さっきみたやつ! こういうことも できるぞっていう 例なだけなので、 タグがあるなら そっち使おう!
★ さいごに • データベースは、WordPressの「中身」 • ファイル群ももちろん大事だけど、ないと成り立たないモノ • 知らなくても使えるけど、知っていたほうがより理解が深まる! • バックアップ大事!
• データベースの中身もちゃんとバックアップしておこうね!
ありがとうございました!