0

私は現在、ファイルシステムに保存されている画像の情報を含む単一のDBテーブルを維持しています。この設定は、私が現在記録している数十万枚の写真でうまく機能します。

ユーザーのデフォルト画像の場合、写真を含む別のフォルダーを維持しますが、これはメンテナンスの悪夢になっています。テーブル1のデフォルトの写真への参照を格納する2番目のテーブルを作成する必要がありますか、それともデフォルトの写真を示すために設定できるブール値である新しいフィールドをテーブル1に追加する方がよいでしょうか。

私のテーブルは次のようになります。

image_table
id  user_id  file_name 
1   6        xvy.jpeg  
2   6        abc.jpeg  
3   6        def.jpeg

提案された解決策:

image_table
id  user_id  file_name default
1   6        xvy.jpeg  0
2   6        abc.jpeg  1
3   6        def.jpeg  0

この提案されたソリューションでは、デフォルトをリセットするために2回のSQL呼び出しを行い、次にユーザーが変更した場合に新しいデフォルトの写真を設定するために2回目の呼び出しを行う必要があるようです...

4

2 に答える 2

1

そのアプローチを行った場合に2番目のテーブルに最初のテーブルと同じ列がある場合は、新しいテーブルを追加するのではなく、新しいフィールドを追加することをお勧めします。

理由:両方のテーブルから値を取得する必要がある場合は、面倒なUNIONを実行する必要があります。同じ種類のデータを持つテーブルが3つ以上あり、それらすべてを一度に必要とした場合はどうなりますか?それはただ不格好になり、コーディングがより厄介になります。

于 2013-03-14T23:56:04.867 に答える
0

SQLデータベースを使用していることはわかりますが、MongoDBなどのNoSQLデータベースを試してはいけない理由を誤解しないでください。フィールドをフラグとして作成したり、新しいテーブルを作成したりするのは良いデザインではないようです。

于 2013-03-15T00:03:24.567 に答える