0

我正在开发一个允许用户提交视频、图像和其他指南(包括文本和图像的多个步骤)的网站。

在网站的主页上,将列出最近上传的 5-10 个左右的项目。

最初,我打算为每个人准备一张桌子,所以“视频”、“图像”和“指南”。“guides”表将有另一个表“steps”,因此每个步骤都是它自己的行,带有“guide_id”。

在主页上,这些元素中的每一个都需要不同的代码来呈现(视频的 iframe,图像的 img 标签等......)。

有没有更好的方法来为此创建数据库?也许是一个内容项表,其中包含所有不同的内容以及“类型”列?

如果不是,那么编写查询以从所有三个表中选择 5-10 件并能够判断结果的每一行是什么类型的内容以便可以使用正确的代码呈现它的最佳方法是什么?

顺便说一句,如果这会影响答案,我正在使用 Laravel PHP 框架。

4

2 回答 2

0

将两者放在一个表示例中,将其命名为media并添加诸如 media type之类的列

于 2013-02-27T01:50:27.997 回答
0

使用 2 张桌子。媒体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 回答