0

私は Web プログラミングが初めてで、専門家のアドバイスが必要です。Web サイト プロジェクトの 1 つに SQL データベースを使用しています。私のウェブサイトには、好き嫌いボタン付きのトピックのリストが表示されます。ログインしたユーザーは、各トピックの「好き」または「嫌い」ボタンをクリックできます。トピックごとに好き嫌いの数を数えることができます。したがって、ユーザーが特定のトピックをクリックすると、その特定のトピックの好き嫌いの数が表示されますが、私が達成しようとしているのは、誰かが特定のユーザープロファイルをクリックすると、ユーザーが好きまたは嫌いなすべてのトピックを表示する必要があることです. たとえば、Facebook でユーザー プロファイルをクリックすると、その特定のユーザーのすべてのコメントまたはいいね! が表示されます。これを実装してデータをクエリするためのデータ構造を知りたいのですが、よろしくお願いします。

4

3 に答える 3

6

トピックのテーブルとユーザーのテーブルがある場合は、両方にリンクするいいねのテーブルを追加します。このようなもの:

User
----------
ID (int, PK)
Name (string)
etc...

Topic
----------
ID (int, PK)
Title (string)
etc...

Like
----------
ID (int, PK)
UserID (int, FK to User.ID)
TopicID (int, FK to Topic.ID)
IsLike (boolean)
etc...

したがって、ユーザーが何かを「気に入った」ときはいつでも、そのテーブル設定IsLikeにレコードを追加しますtrue。彼らが何かを「嫌う」場合は、そのテーブル設定IsLikeにレコードを追加しますfalse。用語/名前/タイプ/などを変更できます。しかし、一般的な考え方は同じです。「いいね」は、Userと の間のリンク レコードになりTopicます。

したがって、トピックを表示するときは、そのトピックに関連付けられているリンク テーブルからレコードの数を選択するだけです。ユーザーを表示するときは、そのユーザーに関連付けられているリンク テーブルからレコードを選択します。

于 2013-01-07T18:56:05.240 に答える
3

ここに画像の説明を入力

これは、使用できる単純なスキーマです。isLike はブール値で、好きな場合は true、嫌いな場合は false です。

トピックごとに好き嫌いの合計をクエリするには

    Select Count(*), Topic,isLike FROM LikesDislikes GROUP BY Topic,isLike

ユーザーが高く評価したすべてのトピック

   SELECT topic FROM likesdislikes WHERE userName = 'user' AND isLike = true;

などなど。

于 2013-01-07T19:04:44.013 に答える
0

次の 3 つの SQL テーブルを使用できます。

トピック 評価 ユーザー

次に、Ratings テーブルを介して Users テーブルを Topics テーブルにリンクし、クエリを実行できます。

select * from Topics where RatingsUserID = UsersUserID

(疑似コード)

于 2013-01-07T18:57:05.923 に答える