MySQL 表内嵌表

5

我想知道在MySQL数据库中存储以下数据的正确方式。

比如说一个视频对象,我想存储其他用户给它的评分,所以一种选择是创建一个列,在其中用复杂的方式存储用户的ID和他们的评分,例如:

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

我认为这不是最有效的方法。 是否有一种方法可以在行内存储表格?最有效的方式是什么,这样我就可以使用SQL查询对评分进行操作,而无需通过PHP代码处理数据?

3个回答

13

创建第二个表,ratings

+----------+---------+--------+
| video_id | user_id | rating |
+----------+---------+--------+
|        5 |     158 |      4 |
|        5 |    5875 |      1 |
|        5 |     585 |      5 |
+----------+---------+--------+

然后你可以在需要的查询中使用 group 和/或 join 这张表;例如:

SELECT   videos.*, AVG(ratings.rating)
FROM     videos JOIN ratings ON videos.id = ratings.video_id
GROUP BY videos.id

6

标准化它

有两个表格。

例如:

ID   Video_name
5    Cool Video

第二点是:
vid_id    userid   rating
5         158      4
5         5875     1
5         585      5

2

常规方式是实体关系图。

然后您有

评级 * --- 1 视频

也就是说,您有一个名为“video”的表格。

ID | Name
5  | cool video

还有一个名为"ratings"的表

ID | value | USERID | video_ID
1  |  4    | 158    |  5
2  |  1    |  5875  |  5
3  |  5    |  585   |  5 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接