1

私は評価システムについて多くの検索と読書を行ってきましたが、私が達成しようとしていることに対する解決策を見つけることができませんでした...

ユーザーがログインすると、製品を送信できる Web サイトがあります。ここで、他のユーザーがこれらの製品を 3 つの異なる基準に従って評価できるようにしたいと考えています。私はphpとmySQLデータベースを使用して、うまく機能しているすべての情報を保存しています。現在、評価を組み込む方法がわかりません.

現時点では、カテゴリに応じてさまざまなテーブルを保持する PRODUCTS データベースがあります。テーブルの例を次に示します。

TOASTERS
---
ID (auto-incrementing)
Brand
Set
Number
Name
Edition
Image (stores the location of the image the user uploads)

任意のユーザーは、3 つの基準 (品質、価格、美学) について 10 点満点で表のその行を評価できます。各基準のユーザー平均は各製品ページに表示されますが、各ユーザーの個々の評価を保存して、プロファイル ページに評価の短い履歴を表示できるようにしたいと考えています。または、ホームページで最新のユーザー評価のライブ フィードをご覧ください。

私がやろうとしていることは、awwwwards.comによく似ています。(私が話しているライブフィードを見るには、ページの右下を参照してください)

前もって感謝します!

4

2 に答える 2

1

単一の PRODUCTS テーブルを使用するか、少なくとも PRODUCTS テーブルを作成して、それとカテゴリ テーブル間の継承をエミュレートする必要があると思います。

カテゴリごとにテーブルを用意すると、各カテゴリに特定のプロパティがある場合にいくつかの利点が得られますが、各テーブルを操作するために個別のコードを記述する必要が生じる可能性があります。または、2 つのテーブルを使用して、すべてのカスタム プロパティを「垂直に」格納することもできます: PROPERTIES(propertyID,PropertyName)PROPVALUES(productID,propertyID,PropertyValue).

複数のテーブルを持ち、継承をエミュレートすることを選択した場合、次のように実現できます。

PRODUCTS
---
ID (auto-incrementing)
Brand
Set
Number
Name
Edition
Image
VoteCount    <+
SumQuality    +-updated by trigger
SumPrice      |
SumAesthetic <+

TOASTERS
---
productID (PK and FK to PRODUCTS)
(toaster specific fields go here, if any)

テーブル VOTES を作成し、テーブル PRODUCTS を参照できるようになります。

VOTES
---
productID (FK to PRODUCTS)
userID (FK to USERS)
Quality    
Price     
Aesthetic
VoteDateTime

全体的な製品評価が投票履歴よりもはるかに頻繁に照会されることが事実である場合、最適化として、フィールド VoteCount、AvgQuality、AvgPrice、AvgAesthetic を PRODUCTS テーブルに追加できます。この追加フィールドは、テーブル VOTES でトリガーするか、PHP コードで手動で更新できます。

于 2013-10-29T14:38:33.033 に答える
0

ユーザーの個別の評価 (主キー、ユーザー ID、製品 ID、および評価) を格納するための別のテーブルを作成します。「製品」に追加のフィールドを作成して、平均を保存します。一部のユーザーが製品を評価するたびに、「評価」テーブルにレコードを挿入し、特定の製品の平均を再度計算して、製品の行を更新します。これを行うと、評価に簡単にアクセスでき、ユーザーの個々の評価を分析することもできます。

Ps - 何人のユーザーが製品を評価したかを保存したい場合もあります。

于 2013-10-29T14:28:21.790 に答える