0

私は自分のウェブサイトにお気に入りセクションを作成することに取り組んでおり、ユーザーは簡単にアクセスできるように特定のアイテムをお気に入りセクションに保存できます。各項目はすでに明確に定義されており、複数の属性を持っています。私の質問は、10,000 人のユーザーがいて、「お気に入り」システムを実装したいと思います。各ユーザーが追加したお気に入りのアイテムを追跡する最良の方法は何でしょうか?

これを次の方法で実装することを考えていました:各お気に入りアイテムIDをユーザー名にリンクし、特定のユーザー名を持つユーザーがログインしているかどうかのクエリを実行し、そのユーザー名ですべてのお気に入りアイテムを取得します。

これを行うための良い方法を考え出すための助けに感謝します。私の目標は、後で簡単にデータを取得して使用できるように保存し、冗長な情報を最小限に抑えることです。

4

2 に答える 2

2

とても簡単です。3 つのフィールドを持つ新しいテーブルを作成する必要があります。

id
favoriteID
userID

ユーザーが新しいお気に入りを追加するたびに、このテーブルに新しいレコードが追加され、お気に入りの ID とユーザーの ID の両方が格納されます。join冗長な情報はなく、クエリを実装することで、お気に入りまたはユーザーの詳細を簡単に取得できます。これがリレーショナル データベースの目的です。

于 2012-06-22T00:46:37.517 に答える
1

RDBMS 内には、おそらくユーザー ID と記事 ID を持つ多対多のテーブルがあります。独立した id 列は必要ありません:

テーブルを作成しますfavourites(user_id int, article_id int);

もちろん、これらはユーザーテーブルと記事テーブルを参照します。(または、記事の代わりにあるものは何でも。)

1 人のユーザーのお気に入りを表示するには、そのユーザーのすべての行を取得する必要があります。重複を防ぐために、列に結合された UNIQUE インデックスを作成することもできます。

user_id のキーに基づいて単純に取得し、すべてのお気に入りを 1 つの簡単な場所で取得できる cassandra のようなものを使用すると、応答が速くなる場合があります。しかし、あなたは複数のシステムを扱っています。

MySQL が Cassandra に似た Key-Value システムをサポートできるようになったと聞いたことがありますが、調べる機会はありませんでした。これが最善の策かもしれません。

于 2012-06-22T00:51:55.397 に答える