おーしまブログ

プログラミングやってます

自動車レビューアプリのタグ付けに関して問題が発生した

こんにちは、おーしまです。

今回は、現在作っている自動車レビューアプリのタグ付けについてですが、一つ問題が発生しました。


タグって何?笑


私は、この自動車レビューアプリで、例えば

  • TOYOTA」で調べると、TOYOTAの自動車のレビューが出てくる
  • 「コンパクトカー」で調べると、コンパクトカーのレビューが出てくる
  • プリウス」と調べると、プリウスのレビューが出てくる

ようにしたくて、このことをタグ付けだと思っていたのですが、どうやら違ったみたいです。


タグ付けとは、例えばレビューに「TOYOTA」とタグを付けると、「TOYOTA」というタグがTagsテーブルに保存され、「TOYOTA」一つに対してたくさんレビューが紐付くというものらしいです。つまり私はレビューごとにメーカーやらを入力させて、それをそのままtagsテーブルに保存しようとしていたので、それだったらもうcarsテーブル(レビューのテーブル)に入れたほうがいいやんって事です。

画像で説明します。

おーしまのタグの考え方

f:id:tomo_bb_aki0118115:20201026224936p:plain

本来のタグの考え方を考慮

f:id:tomo_bb_aki0118115:20201026230012p:plain

おーしまのタグの考え方だと、レビューとタグが、多対多ではなく、一対一の関係になっていることが分かります。本来のタグの考え方では、多対多の関係性ができるので、一つのタグに対していくつかのレビューが結びつかなくてはおかしいです。

そして、私が実装しようとしていた「TOYOTAだけのレビューを表示」などは、レビュー自体にメーカーカラムを保存しても、おそらく実装できます。(makerカラムが「TOYOTA」のものだけうまく取り出せばできるはず)

よって、maker, car_name, body_type の3つのカラムはレビューのテーブルに保存して、その横にその他のタグ付けができるフォームを設置することにしました。

ER図は、このようになります。
f:id:tomo_bb_aki0118115:20201026231542p:plain

これで、変更をかけて自動車レビューアプリを作っていきたいと思います。

ちなみに、テーブルのカラムの名前変更や、追加、削除に関してネットにたくさん載っているので、そちらを参考にしてください。


今回はここまでです。
それでは、また〜

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}