0

人々がスレッドを投稿する小さなフォーラム ソフトウェアを php でコーディングしました。タグをサポートしたいと考えています。

これにはいくつのSQLテーブルを作成する必要がありますか? タグシステムはどのように機能しますか?

ありがとう

4

2 に答える 2

4

基本的に、タグ(id, タグ) テーブルと、タグと投稿の M:M リレーション テーブル (tag_id,post_id) が必要です。特定のタグの投稿を選択するには

 select posts.* from posts, tags, post_tags
    where post_tags.post_id = posts.id
    and post_tags.tag_id = tags.id
    and tags.tag = "whatever_tag" 

コメントへの回答: 単一のテーブル (タグ、投稿) アプローチは「単純」に見えるかもしれませんが、正確にはスケーラブルではありません。作成日や作成者など、タグに追加情報を追加することにした場合はどうなりますか。または、ここ SO のように、ユーザーに「お気に入りのタグ」を持たせます。個別のタグ テーブルがないと、これは扱いにくくなります。

一般に、最初は「複雑」に見えても、データベースを正規化したままにしておくことをお勧めします。

于 2010-03-14T20:40:53.470 に答える
1

「タグシステム:パフォーマンステスト」の記事には、いくつかの適切な推論とパフォーマンステストがあります。

于 2010-03-14T21:57:09.087 に答える