-1

我正在开发一个允许用户上传媒体并将他们的媒体组织到文件夹中的应用程序。用户可以确定他们创建的文件夹的“类型”:文件夹、视频、图像、文档等。

该应用程序将根据其类型以不同方式显示任何给定文件夹的内容;视频文件夹将显示带有播放列表的视频播放器,图像文件夹将显示画廊等。

为所有不同类型的文件夹创建单独的表,还是创建一个名为 FOLDERS 的大表并使用一列来分配类型会更好吗?

实际媒体本身由其自己的名为 MEDIA 的表处理,然后使用 media_ID 链接到文件夹中。

简而言之:操作系统如何处理这个问题?是否有一个名为 FOLDERS 的主“表”,然后使用 file_ID 将各种文件链接到一个文件夹?

编辑:为了澄清,这里是“单文件夹表”方法将如何分解:

FOLDERS
...................
id
user_ID
parent_ID
type
date

MEDIA
...................
id
type
file
date

FOLDERS_link_MEDIA
...................
id
folder_ID
media_ID

因此,当用户将 MEDIA 添加到 FOLDER 时,会在 FOLDERS_link_MEDIA 表中创建连接两者的行。

在我看来,另一种选择是有几个“文件夹”表 FOLDERS_video、FOLDERS_audio、FOLDERS_images、FOLDERS_documents 等。然后是每个文件夹类型的随附链接表;FOLDERS_video_link_MEDIA 表、FOLDERS_images_link_MEDIA 等。

此外,文件的实际数据不会存储在 MEDIA 表中,“文件”列只存储一个 URL,该 URL 指向文件在 AWS S3 上的存储位置。

谢谢。

编辑 2:SQL

这就是我将如何遍历表。如果我要提取文件夹的内容,我将首先确定是否有任何子文件夹属于当前文件夹:

SELECT id FROM FOLDERS WHERE parent_ID='$this_folder_ID';

然后我会将这些文件夹显示给用户(顶部的文件夹!)。然后我会继续获取任何媒体内容:

SELECT media_ID FROM FOLDERS_link_MEDIA WHERE folder_ID='$this_folder_ID';
4

1 回答 1

1

一种方法当然是 FAT - 文件分配表。(存在变化)这告诉磁盘上文件的位置。

你所描述的听起来更像是一种“类型”而不是文件夹。您的 MEDIA 条目应该只有一个枚举类型 - 然后在您查询时它们都会被组合在一起。

例如,您没有描述是否可能有一个不在视频文件夹中的视频。

如果必须,则创建另一个类似于此的表“文件夹”:

FOLDER
------------
folder_id
type_id
name

然后使用与 MEDIA 相同的 type_id 值。

制作文件夹树,如下所示:

FOLDER_TREE
-------------
parent_folder_id
child_folder_id

将 MEDIA 添加到文件夹中,如下所示:

FOLDER_CONTENT
-----------------
folder_id
media_id
于 2013-03-12T20:24:35.223 回答