2011-12-24 38 views
2

ユーザーが画像をアップロードするときに、その画像を3種類のサイズでリサイズします。別の列でUser9876/ImageNameと拡張子:などのデータベースに1列に
画像のパスをデータベースに保存する

1)保存画像パス:私は何であるか、より良い選択肢を決定することはできません。データベースからユーザープロファイルデータを取得すると、異なるイメージサイズの3つのプロパティを持つビジネスオブジェクトがあります。そして、コードで私のようなデータベースから画像のパスに拡張子を追加することで、このプロパティを埋める:

User9876/ImageName_Original.jpg 
User9876/ImageName_Small.jpg 
User9876/ImageName_Smallest.jpg 

2)それとも各サイズのために、データベース内の3つの列を持って良いですか?勧告の

答えて

2

カップル:あなたは、特定の拡張子を照会することを計画していない限り

  1. は、別途延長を保管しないでください。本当の利益が得られないほど複雑さが増します。

  2. イメージサイズコードをIDとしてイメージテーブルに保存します。これにより、テーブル全体で更新ステートメントを実行することなく、イメージコードを更新/編集することができます。

    エンジン= MyISAMテーブルのデフォルトの文字セット(AUTO_INCREMENT、 path VARCHAR(255)NOT NULL、 size_code_id SMALLINT(3)NOT NULL、 PRIMARY KEY(id) を符号なし id INT(11)nullでない)表画像を作成します= utf8;

例行:

1 | user9876/imagename_og.jpg | 1 
2 | user9876/imagename_me.jpg | 2 
3 | user9876/imagename_sm.jpg | 3 

この設計では、ファイル名を解析することなく、「小さな」画像を照会することができます、まだあなたはまだ媒体から小さな画像の区別を行うことができますファイルシステム上の元の画像。

1

あなたの質問に対する答えは、別の質問をすることで見つけることができます:後で3つではなく4つの異なるイメージサイズを選択するとどうなりますか?明らかに、データベース全体を再編成する必要がないソリューションが優れています。

関連する問題