##<前提>
掲示板にタグがついています。
そしてそのタグを元にして、掲示板へのコメントが検索できるようになっています。
######テーブル構成
mysql > posts
post_id | parent_thread_id | post_type | text |
---|---|---|---|
1 | 0 | thread | #海 と #山 についての掲示板 |
2 | 0 | thread | #空 についての掲示板 |
3 | 1 | comment | 槍ヶ岳について #優しく 教えてください |
mysql > tags
tag_id | tag_name |
---|---|
1 | 海 |
2 | 山 |
3 | 空 |
4 | 優しく |
mysql > tag_relations
relation_id | post_id | tag_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 3 |
4 | 3 | 4 |
######検索機能
検索機能は、上の3つのテーブル構成のとき、「#山」で検索すると以下2つが取得できるような機能です。
post_id | parent_thread_id | post_type | text |
---|---|---|---|
1 | 0 | thread | #海 と #山 についての掲示板 |
3 | 1 | comment | 槍ヶ岳について #優しく 教えてください |
「#山」は「post_id=1」が持っているのでまず取得します。
さらに「parent_thread_id」によって「post_id=1」へのコメントとして「post_id=3」も取得されます。
##<質問>
tag_relationsのテーブルに、以下のように「relation_id=5」と「relation_id=6」も追加すべきでしょうか?
mysql > tag_relations
relation_id | post_id | tag_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 3 |
4 | 3 | 4 |
5 | 3 | 1 |
6 | 3 | 2 |
「relation_id=5」は、「post_id=3」が「#海(tag_id=1)」を持っているという意味です。
実際には「post_id=3」は「#優しく(tag_id=4)」しか持っていないので、前提のテーブル設計はそうなっていました。
ですが、このコメントの投稿先掲示板は「#海(tag_id=1)」と「#山(tag_id=2)」を持っているので、tag_relationsのテーブルにそのことを追加すべきかどうかというのが質問になります。
それがなくても検索はできるので不要でしょうか?
それともきちんと追加した方がいいのでしょうか?
回答1件
あなたの回答
tips
プレビュー