自从我上一次数据库课程以来已经有一段时间了,我对 PHP/MySQL 应用程序的以下基本数据库设计有一些疑问,该应用程序是一个带有播放列表的视频数据库:
t_playlists
p_id (PK) | name | description
t_videos
v_id (PK) | name | description | playcount
t_mapping
v_id (FK) | p_id (FK)
我要执行的查询如下:
- 获取所有播放列表 - 包括每个播放列表中的视频数量,但不包括视频本身
- 给定 a
p_id
,获取该播放列表中的所有视频 - 给定 a
v_id
,获取该视频所属的播放列表
目前,一个视频只能属于一个播放列表。
现在我的问题:
- 你能提醒我为什么我们在这种情况下使用映射表吗?我记得这是“好习惯”,但我不记得确切的原因。使用单独的映射表比在中包含
p_id
作为另一列(FK) “更好”如何t_videos
?这不会让我的查询更简单吗? - 有没有更有效的设计可以达到同样的效果?
- 我描述的三种情况的 SQL 查询是什么?(我正在使用 MySQL)