0

私は、ユーザーがビデオ、画像、および別のガイド(テキストと画像を含む複数のステップ)を送信できるサイトに取り組んでいます。

サイトのメインページには、アップロードされた最後の5〜10個程度のアイテムのリストが表示されます。

もともと、私はそれぞれにテーブルを用意することを計画していたので、「ビデオ」、「画像」、「ガイド」です。'guides'テーブルには別のテーブル'steps'があるため、各ステップは'guide_id'を持つ独自の行になります。

メインページでは、これらの要素のそれぞれをレンダリングするために異なるコードが必要になります(ビデオの場合はiframe、画像の場合はimgタグなど)。

このためのデータベースを作成するためのより良い方法はありますか?たぶん、「タイプ」列を持つすべての異なるコンテンツを含むコンテンツアイテムテーブルですか?

そうでない場合は、3つのテーブルすべてから5〜10個を選択し、結果の各行が適切なコードでレンダリングできるようにコンテンツのタイプを判断できるクエリを作成するための最良の方法は何でしょうか。

ちなみに、それがその答えに影響を与えるのであれば、私はLaravelPHPフレームワークを使用しています。

4

2 に答える 2

0

両方を1つのテーブルの例に入れて、メディアという名前を付け、メディアタイプのような列を追加します

于 2013-02-27T01:50:27.997 に答える
0

2つのテーブルを使用します。mediaおよびmedia_type

メディアテーブル:

id       name     uploaded_at                  media_type_id
-------------------------------------------------------
1        aaa      2012-11-17 11:17:13            1
2        bbb      2012-11-17 11:20:11            2
3        ccc      2012-11-17 11:32:12            1
4        ddd      2012-11-17 11:45:10            3

media_typeテーブル:

id       name
----------------------
1        video
2        image
3        guide

これは、モデルの基本的な正規化されたデータベース構造です。メディアテーブルに必要な列の説明などを追加できます。さらに、必要に応じて、メディアタイプを追加、削除し、メディアテーブルへの参照を変更できます。この構造を持つため、次のようにクエリを実行できます。

アップロードされた最後の5つのメディア:

SELECT id, name FROM media ORDER BY uploaded_at DESC LIMIT 5;

特定のメディアタイプの最後の5つのメディア:

SELECT media.id, media.name FROM media INNER JOIN media_type ON media.media_type_id = media_type.id 
  WHERE media_type.name = 'video' ORDER BY uploaded_at DESC LIMIT 5;
于 2013-02-27T04:14:18.913 に答える