人々がスレッドを投稿する小さなフォーラム ソフトウェアを php でコーディングしました。タグをサポートしたいと考えています。
これにはいくつのSQLテーブルを作成する必要がありますか? タグシステムはどのように機能しますか?
ありがとう
基本的に、タグ(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 のように、ユーザーに「お気に入りのタグ」を持たせます。個別のタグ テーブルがないと、これは扱いにくくなります。
一般に、最初は「複雑」に見えても、データベースを正規化したままにしておくことをお勧めします。
「タグシステム:パフォーマンステスト」の記事には、いくつかの適切な推論とパフォーマンステストがあります。