前回のデータベース クラスからしばらく経ちましたが、プレイリストを含むビデオ データベースである 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)
実行したいクエリは次のとおりです。
- すべてのプレイリストを取得します - 各プレイリスト内のビデオの数を含みますが、ビデオ自体は含みません
- を指定すると
p_id
、そのプレイリスト内のすべての動画を取得します - が与えられた
v_id
場合、このビデオが属するプレイリストを取得します
現在、1 つの動画は 1 つのプレイリストにのみ属することができます。
今私の質問に:
- このような場合に、なぜマッピング テーブルを使用するのか思い出していただけますか? それが「良い習慣」であることは覚えていますが、その理由は正確には思い出せません。
p_id
に別の列 (FK)を含めるよりも、別のマッピング テーブルを使用する方が「優れている」のはt_videos
なぜですか? それは私のクエリをもっと簡単にしないでしょうか? - 同じことを達成するより効率的な設計はありますか?
- 説明した 3 つのケースの SQL クエリは何ですか? (私はMySQLを使用しています)