4

MySQL DB 内に次のデータを格納する正しい方法は何だろうと思っています。

ビデオなどのオブジェクトを考えてみましょう。他のユーザーから与えられた評価を保存したいので、オプションで列を作成し、ユーザーの ID とその評価を次のように複雑な方法で保存します。

| ID | video_name | rating (usrID,rating)    |
| 5  | cool video | (158,4),(5875,1),(585,5) |

そうするのが最も効率的な方法ではないと思います。行の中にテーブルを格納する方法はありますか? PHPコードを介してデータを処理せずに評価でSQLクエリを使用できるようにする最も効率的な方法は何ですか?

4

3 に答える 3

12

2 番目のテーブルを作成しますratings

+------------+---------+--------+
| | ビデオ ID | ユーザー ID | 評価 |
+------------+---------+--------+
| | 5 | 158 | 4 |
| | 5 | 5875 | 1 |
| | 5 | 585 | 5 |
+------------+---------+--------+

その後、必要に応じて、クエリでこのテーブルをグループ化および/または結合できます。例えば:

SELECT   videos.*, AVG(ratings.rating)
FROM     videos JOIN ratings ON videos.id = ratings.video_id
GROUP BY videos.id
于 2012-09-07T08:51:22.523 に答える
6

正規化する

2つのテーブルがあります。

いえ

ID   Video_name
5    Cool Video

2つ目は

vid_id    userid   rating
5         158      4
5         5875     1
5         585      5
于 2012-09-07T08:51:36.257 に答える
2

通常の方法は、実体関連図です。

その後、あなたは持っています

評価*---1本のビデオ

つまり、テーブル「ビデオ」があります

ID | Name
5  | cool video

そして、テーブルの「評価」

ID | value | USERID | video_ID
1  |  4    | 158    |  5
2  |  1    |  5875  |  5
3  |  5    |  585   |  5 
于 2012-09-07T08:54:34.983 に答える