• WordPress のテーブル構成について質問です。

    wp_terms と wp_term_taxonomy の2つのテーブルですが、これらが分かれている理由をご存知の方いらっしゃったら教えて下さい。

    http://codex.wordpress.org/Image:WP3.0-ERD.png を見ると、wp_term_taxonomy(多)–(1)wp_terms に 多:1 のリレーションが設定されていますが、スキーマを眺めていても、この2つのテーブルが分割されている理由が理解できません。ひとつのテーブルでも良かったのではないかと思ってしまいます。

    正規化というにも必然性が無いような気がしています。
    運用間もない僕のサイトのデータではこれが1対1の対応となっています。

    何かうっかりな事を質問していたらすみませんが、
    WordPress の理解の為に是非知りたいと思っています。
    どうぞよろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    yuka2pyさん

    複数のtaxonomyで1つのtermを共有する可能性があるためです。
    たとえば、リンクで未分類というリンクカテゴリーを作ると、termsの未分類を共有し、term_taxonomyでは、categoryとlink_cateoryと異なるレコードとなります。

    最もカスタム分類では、そうならないみたいですが。。

    こんにちは

    参考になりますか?
    http://mori.moripower.jp/eqwip/wordpress/2191.html

    トピック投稿者 yuka2py

    (@yuka2py)

    jim912さん、nobita さん、

    ご回答をありがとうございました!!!!!
    いずれのご回答についても、その可能性があることは考えていました。
    ただ、その必然性が良く分からないでいます。
    つまり、それが実際に発生する状況、そしてそのメリットが想像できないでいます。

    jim912 wrote:
    > たとえば、リンクで未分類というリンクカテゴリーを作ると、termsの未分類を共有し、
    > term_taxonomyでは、categoryとlink_cateoryと異なるレコードとなります。

    ご呈示いただい↑の例ですが、実際にそうなりますよね。
    ただ、そうなるメリット … つまり、terms の1つのレコードを、異なる term_taxonomy で共用するメリット、あるいは必然性が感じられないでいます…。
    つまり、term_taxonomy が slug も name も持つ方が合理的ではないか?と思っています。

    僕なんかの想像では、その理由としては name や slug の正規化目的ぐらいしか思いつきませんでした。
    ただ、terms において一般に想像される範囲のレコード数と name/slug のデータ量、そして terms と term_taxonomy の join コスト、またそれに伴うソフトウェアの複雑性の増加などを考え合わせると、この場面で正規化を目的とするには少々バランスが悪いような…つまり、あまり僕には合理性が感じられないなぁー、という印象でいます。

    ただ、この「正規化目的には合理性を感じにくい」というのはあくまでも僕の感想なので「いやこれは正規化目的ですよ」と言われればそれはそれで納得できます。

    しかしもっと別の観点や、ユースケースが想定されていたのかな?とも思います。それは例えば、「terms を共有することで、なにがしかの検索の際に便利である」とか、「そういうスキーマになっていないと●●の機能が実現できないなど」何か理由があるのかな?、と。ということで、今回の質問をさせて頂いた次第です。

    めんどくさい質問になっているような気がしますが、よろしくお願いいたします!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「wp_terms と wp_term_taxonomy が分かれている理由」には新たに返信することはできません。