Introduction
以前、dockerでwordpressを設定したので、a5m2でDBの中を覗いてみた。
中見てみると、11個のテーブルしかないし……
ものすごいシンプルです。
wp_postsを中心に他のテーブルがkey-value storeに近い形で関連付けられてます。
テーブル一覧
テーブル | 説明 |
---|---|
wp_posts | 中心になるテーブルで、投稿データや、固定ページが保存されてます。 それだけではなく、メディア(画像データなど)も保存されてます。 画像ひとつひとつで1レコード出来てるし、保存毎に履歴データも出来てるし、 データ量大丈夫なの? |
wp_postmeta | wp_postのメタデータが保存されてます。 カスタムフィールドとかもここに保存されるようです。 そのうちカスタムフィールドも作ってみよう。 |
wp_comments | テーブル名の通りコメントが保存されます。 |
wp_commentmeta | コメントのメタ情報が保存されます。 コメントのメタ情報ってなんじゃ。って調べてみたところ、WP ULikeプラグイン(コメントにいいね!をつける)のようにコメントに情報を付随するときに使用するテーブルです。 |
wp_links | codexによるとv3.4時点で非推奨になっていますが、 Link Managerプラグインで有効になるようです。 Link Managerを使うとサイドバーにリンクを設定できます。 普通じゃね?なぜ非推奨? |
wp_options | wordpress全体の設定情報を保存するテーブル。 管理画面で設定した情報とか。 |
wp_terms | 分類の名称を保存するテーブル。 |
wp_term_relationships | wp_post、wp_link、wp_term_taxonomyなどの関連付けをするテーブル。 |
wp_term_taxonomy | 分類の階層データを保存するテーブル |
wp_users | ユーザーの情報が保存されるテーブル。ログインID、パスワード、メールアドレスなどなどが保存されています。 |
wp_usermeta | ユーザーのメタ情報を保存するテーブル。ファーストネームなど詳細データが保存されています。 |
これってEVA(エンティティアトリビュートバリュー)じゃないんだろうか
EVAとはRDBでKVSを実装しているもので有名なアンチパターンです。
詳しい説明はQiita様にお任せするとして
ダメだと言われてもwordpressの拡張性を考えたらこれしかないって感じですよね。
EVAはデータ取得するのがすごく面倒くさい作りになっているので、拡張テーブルとか作るときには注意が必要だと思います。