たとえば、Zip ファイルから、ファイルと共にファイル構造を保存する最良の方法は何ですか? 現在、各ファイルは MySQL データベースの行ですが、明らかにそこから構造を読み取ることはできません。バイナリ ファイルの保存を避けたい。すべてのファイルはプレーン テキストである必要があります。各 zip/ファイル構造は、それを送信したユーザーに非公開です。
4 に答える
構造が必要な場合は、ディレクトリテーブルとファイルテーブルを作成できます。次に、ルート内の各ディレクトリの親IDは0になります。次に、その下の各ディレクトリには、その親の親IDがあります。
次に、ファイルのディレクトリIDを指定して、ファイルの場所を示します。
私の推奨事項は Ólafur Waage の推奨事項に似ていますが、レコードの「タイプ」を示す指標列を含む単一のテーブルを使用します。
id - Primary Key
parent_id - FK to self (id)
type - enum('D', 'F')
name - varchar
content - BLOB (if you wanted to ever store the file contents).
これは階層ツリー構造に従います。MySQL については、http: //mikehillyer.com/articles/managing-hierarchical-data-in-mysql/で追加情報を見つけることができます。
最も簡単な方法 (おそらく最善ではない) は、目的のディレクトリ ツリーの「ルート」フォルダーを特定し、各ファイルでそのフォルダーからの相対パスを取得し、別の列 (「パス」など) としてデータベースに保存することです。テーブル。後でこれらの値を調べて、同じディレクトリ構造を構築できます。
ベストは文脈です。しかし、額面どおりに考えると、ファイル構造を格納する最良の方法はファイル システムにあると言えます。エントリを他のレコードと一緒にリンクしたり、エントリに対してクエリを実行したりする必要がない限り、リレーショナル データベースは、任意の階層データに最適な選択肢ではありません。また、ハイブリッド ソリューションを使用することもできます。この場合、データベースにインデックスを保持し、ファイル パスとおそらくいくつかのメタ データを使用しますが、それでもファイル システムに格納します。