0

これはおそらく非常に単純な質問ですが、確認するだけです。データベース スキーマを設計しており、一部のテーブルはファイル システム (PDF、PPT など) 上のファイルにリンクする必要があります。

これはどのように行うべきですか?

私の最初のアイデアは、ファイルへの絶対/相対パスを持つ varchar(255) です。これを行うより良い方法はありますか?オンラインで検索して varbinary(max) を見つけましたが、それが実際に必要かどうかはわかりません。ファイルへのポインターを保持するためだけに、実際にデータベースにバイナリーをロードしたくはありません。

4

4 に答える 4

1

これは、OS と有効なパスの最大長によって異なります。「ポインター」と呼んでいるものは、ファイル パスを含む単なるテキスト フィールドであるため、他の文字データと同じです。

通常、相対パスを保存し、アプリケーションでルート フォルダーを指定します。このようにして、たとえば、ファイルを別のドライブに移動することができ、データベース内の行を更新する必要はありません。

選択する実際のデータ型は、使用している dbms によって異なります。一部のデータベースでは、探索したいファイルの特定のデータ型も提供されています。たとえば、FileStreamSQL Server 2008 で導入されたデータ型です。

于 2012-10-03T16:47:06.507 に答える
0

ファイルのバイナリ データをデータベースに保存したくない場合は、パスを保存するしかありません。絶対パスで保存するか、相対パスで保存するかはあなた次第です。

于 2012-10-03T16:49:05.257 に答える
0

ファイルの名前とパスをデータベースに保存する必要がありますよね?次に、varchar(255) でフィールドを作成する必要があります。私はいつもそのように使用していましたが、問題はありませんでした。それが役に立ったことを願っています。

于 2012-10-03T16:47:25.397 に答える
0

ええ、それは基本的にそれです。Db のパラメーターとして構成された特定の場所からの相対パスは、通常の方法です。ラウンドの長さの制限を取得することは別として。

C:MySystem\MyData をベース パスとして指定したとします。次に、Images\MyImageFile.jpg、Docs\MyDopc.pdf などを実行できます。

ただし、バックアップと復元への影響に注意してください。データベースとファイルシステムを実行する必要があります。

もう 1 つの潜在的な考慮事項は、ファイル名が一意でなければならないことです。Fred と Wilma の両方が Picture1.jpg をアップロードした場合、データベースは問題ありませんが、ファイル システムがいっぱいになります。通常は、ユーザー ファイル名と実際のファイル名を使用します。

したがって、フレッドの Picture1.jpg は実際には p000004566.jpg です。

そこにあるはずのファイルが何かの陰謀によって削除されてしまったことに対処するためのコードを追加することを忘れないでください。

また、コーディング エラーが発生する可能性が非常に低い場合に備えて、孤立したファイルを整理するための何らかの管理タスクが必要になる場合もあります。:)

また、ファイルへのパスがソフトウェアで構成可能な場合は、作業を行うアカウントに読み取り/書き込みアクセス権があることを確認してください。また、UNC パスを使用することもできますが、マップされたドライブに悩まされないでください。

于 2012-10-03T16:59:11.553 に答える