Picasa や Shotwell に似た、画像ファイルのデータベースを管理、検索、および表示するためのアプリケーションを作成したいと考えていますが、データベースの経験はほとんどありません。Qt フレームワークを使用して SQLite を使用するつもりです。
50,000 ファイルと仮定しましょう。次のデータで検索するのに最適なデータベース テーブル構造はどれですか? ファイルの追加と削除は比較的まれですが、クエリと編集は非常に一般的です。
- 画像ファイルへのパス
- サムネイル ファイルへのパス (このフィールドは検索できません)
- さまざまなメタ データ (作成者、作成日、サイズ、評価、ファイル タイプなど)
- タグの配列
ユーザーの入力に応じて (Picasa や Shotwell と同様に) 検索を実行したい場合、1 秒あたり最大数回のクエリが必要になります。
- 起動時に一度データベースにクエリを実行し、データをメモリに保持しますか?
- 検索ボックスが更新されるたびにデータベースにクエリを実行しますか?
- 両方の混合?
私が理解していることから、外部キーを含む一般的に繰り返されるデータ (タグ、作成者、ファイルの種類) のテーブルを作成する必要があります。これは正しい仮定ですか?作成日やファイル名など、各ファイルに固有の可能性があるデータの場合、単純にファイル テーブル全体を検索する以外に方法はありますか?
アドバイスをいただければ幸いです。ありがとうございました。