データベースにコメントといいね!を実装する
私はソフトウェア開発者です。私はコードを愛して、私は現在、私のように、ユーザがエンティティをマークするために許可されるには、ウェブサイト作成しています...データベースを嫌い言っています(FBでのように)、タグ、それをしてコメントを。 この機能を処理するためのデータベーステーブルの設計に行き詰まっています。1つのタイプ(写真など)に対してのみこれを実行できる場合、解決策は簡単です。しかし、私はこれを5つの異なるものに対して有効にする必要があります(現時点では、サービス全体が成長するにつれて、この数が増える可能性があることも想定しています)。 ここで似たような質問をいくつか見つけましたが、どれも満足のいく答えはありません。そのため、もう一度この質問をします。 質問は適切、方法、である効率的かつ弾力それが異なるため、コメント保存することができるように、データベースを設計テーブルを、好き異なるため、テーブルやタグ彼らのために。回答としてのいくつかのデザインパターンが最良です;) 詳細な説明:私はテーブル User一部のユーザーデータ、および3つの以上とテーブルを:Photoで撮影、Articlesとの記事、Placesと場所。ログインしたユーザーが次のことをできるようにしたい: これら3つのテーブルのいずれかにコメントする それらのいずれかを好きとしてマーク それらのいずれかにいくつかのタグを付けます また、すべての要素のいいねの数と、特定のタグが使用された回数をカウントしたいと思います。 1 回目のアプローチ: a)のためのタグ、私が作成するテーブルを Tag [TagId, tagName, tagCounter]、そして私が作成する多対多の関係のテーブルをするために:Photo_has_tags、Place_has_tag、Article_has_tag。 b)コメントも同じです。 C)私が作成するテーブルを LikedPhotos [idUser, idPhoto]、LikedArticles[idUser, idArticle]、LikedPlace [idUser, idPlace]。多くの同類をして算出されたクエリ(私が悪いと仮定し、)。そして... 私は最後の部分のこのデザインが本当に好きではありません、それは私にとってひどいにおいがします;) 2 番目のアプローチ: 私は、テーブルが作成されますElementType [idType, TypeName == some table name]の名前を持つ管理者(私)によって移入されたテーブルすることができます言っています、コメントやタグ付けを。次に、テーブルを作成します。 a)LikedElement [idLike, idUser, idElementType, idLikedElement]それぞれに適切な列があるコメントとタグについても同じです。今、私は写真を好きにしたいときに挿入します: typeId = SELECT id FROM ElementType WHERE TypeName == 'Photo' …