我正在制作一款应用,允许用户上传媒体并将媒体整理到文件夹中。用户可以确定他们创建的文件夹的“类型”:文件夹,视频,图像,文档等
应用程序将根据其类型以不同方式显示任何给定文件夹的内容;视频文件夹将显示带有播放列表的视频播放器,图像文件夹将显示图库等
为所有不同类型的文件夹创建单独的表是否更好?或创建一个名为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添加到文件夹时,会在连接两者的FOLDERS_link_MEDIA表中创建一行。
另外,正如我所看到的那样,将有几个'文件夹'表FOLDERS_video,FOLDERS_audio,FOLDERS_images,FOLDERS_documents等。然后是每个文件夹类型的附带链接表; FOLDERS_video_link_MEDIA表,FOLDERS_images_link_MEDIA等。
此外,文件的实际数据不会存储在MEDIA表中,“文件”列只会存储指向文件存储在AWS S3上的URL。
感谢。
编辑2:SQL
以下是我如何遍历表格。如果我要提取文件夹的内容,我首先要确定是否有属于当前文件夹的子文件夹:
SELECT id FROM FOLDERS WHERE parent_ID='$this_folder_ID';
然后我会将这些文件夹显示给用户(顶部的文件夹!)。然后我会继续获取任何MEDIA内容:
SELECT media_ID FROM FOLDERS_link_MEDIA WHERE folder_ID='$this_folder_ID';
答案 0 :(得分:1)
你所描述的听起来更像是'类型'而不是文件夹。您的MEDIA条目应该只有一个枚举类型 - 然后在您查询时它们将全部组合在一起。
例如,您尚未描述是否可以使视频不在视频文件夹中。
如果必须,则创建另一个类似于此的表'Folder':
FOLDER
------------
folder_id
type_id
name
然后使用与MEDIA相同的type_id值。
制作文件夹树,如下所示:
FOLDER_TREE
-------------
parent_folder_id
child_folder_id
将MEDIA添加到这样的文件夹:
FOLDER_CONTENT
-----------------
folder_id
media_id