ほとんどのユーザーがアバターを設定しないと仮定すると、新しいユーザーを作成するときにユーザーのテーブルのアバター列に default.jpg のような値を保存するか、コントローラー/ビューに値が存在するかどうかを確認し、null の場合はデフォルトのものを表示する方がよいでしょうか?
3 に答える
空のままにして、コードでチェックを実行します。
データベースに触れることなく、たとえば後日
default.jpg
から変更するオプションが残ります。または、 SOが「デフォルト」のアバターを生成する方法などdefault.png
、他の楽しいことをします。私にはすっきりした感じがします(ユーザーがアバターを選択しなかったため、フィールドが空になります。ユーザーが年齢を入力しなかった場合は、1つ作成しますか?いいえ)。
ちなみに、さらに別のアバターを実装する前に、 gravatar.comをチェックする必要があります。アバターを1つのWebサイトに一度だけアップロードする必要があり、他のすべてのサイト(SOなど)が自動的にアバターを使用するのが気に入っています。
データベースに NULL を入れると、同一の (したがって冗長な) default.jpg BLOB を多数持つのとは対照的に、ストレージを節約できます。
もちろん、ファイル システムにイメージを保存することもできます。その場合、ストレージの節約ははるかに控えめになります (ファイル自体ではなく、ファイル パスのみが繰り返されるため)。または、BLOB をユーザー間で共有する方法を考案することもできます。しかし、これらすべての戦略はクエリを複雑にし、パフォーマンス/整合性に影響を与える可能性があります...
「新しいユーザーの作成」メソッドをdefault.jpg
データベースに入れることにします。これにより、 users テーブル内で一貫性が保たれるため、フィールドが空の場合にコードでチェックを行ったり、特殊なケースを処理したりする必要がなくなります。また、追跡する必要があるコード内の場所を 1 つだけ提供します。
ユーザーを作成しているときは、検証とチェックを行い、必要に応じて防止/修正したいときです。これを下に行けば下るほど、管理が難しくなります。