私は、ユーザーがメディアをアップロードし、メディアをフォルダーに整理できるようにするアプリに取り組んでいます。ユーザーは、作成するフォルダーの「タイプ」(フォルダー、ビデオ、画像、ドキュメントなど)を判別できます。
アプリは、特定のフォルダーの内容をそのタイプに応じて異なる方法で表示します。ビデオフォルダにはプレイリスト付きのビデオプレーヤーが表示され、画像フォルダにはギャラリーなどが表示されます。
さまざまな種類のフォルダすべてに個別のテーブルを作成するか、タイプを割り当てるための列を持つFOLDERSという1つの大きなテーブルを作成する方がよいでしょうか。
実際のメディア自体は、MEDIAと呼ばれる独自のテーブルによって処理され、media_IDを使用してフォルダーにリンクされます。
つまり、OSはこれをどのように処理しますか?FOLDERSというマスター'テーブル'が1つあり、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に追加すると、2つを接続するFOLDERS_link_MEDIAテーブルに行が作成されます。
別の方法は、私が見ているように、いくつかの「フォルダー」テーブルFOLDERS_video、FOLDERS_audio、FOLDERS_images、FOLDERS_documentsなどを用意することです。次に、フォルダータイプごとに付随するリンクテーブルを作成します。FOLDERS_video_link_MEDIAテーブル、FOLDERS_images_link_MEDIAなど。
また、ファイルの実際のデータはMEDIAテーブルに保存されません。「ファイル」列には、ファイルがAWSS3で保存されている場所を指す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';