写真にタグを付けることができるデータベースを構築しようとしています.写真にタグを表示し、クリックすると同じタグを持つ他のすべての写真が表示されるようにしたい.それを行う1つの方法は、タグと写真の両方のIDですが、これには、写真がアップロードされるときに、少なくとも3つのテーブル(写真テーブル、タグテーブル、ルックアップテーブル、およびタグが既に存在するかどうかを最初に検索する必要があります)に挿入する必要があります。また、特定のタグに関連する画像を表示するときにも時間がかかります.2番目の方法は、タグテーブルを作成することであり、写真テーブルのIDを外部キーとタグ名として保存します.ここに検索せずに2つのテーブルだけで更新し、表示するときに、特定のタグエントリに一致するために2つのテーブルのみを使用しています。問題の解明を手伝ってください。また、他の解決策が可能かどうかも提案してください。挿入と表示の速度は重要です
2 に答える
0
3 つのテーブルを作成する必要があります。
写真、タグ、photo_tags。photo_tags は参照テーブルです。
これにより、写真とタグを多対多の関係にすることができます。
3 つのテーブルを使用しても問題ありません。実生活では、多くのテーブルを使用しており、適切な結合を使用して選択ステートメントを作成すると、データベースは非常に高速になります。
于 2012-06-18T03:43:57.417 に答える
0
あなたの写真とタグは、いわゆる多対多の関係にあるようです。写真には多くのタグを付けることができ、タグには多くの写真を含めることができます。
このため、この関係を表す 3 番目のテーブルが実際に必要になります。これは、クエリで 2 つの適切なテーブルを ing する際に使用されるため、一般に結合テーブルと呼ばれます。JOIN
これは維持するテーブルがもう 1 つあることを意味しますが、これがそのような関係をモデル化する唯一の方法です (MySQL を含むほとんどの DBMS で)。
タグが写真に追加されたら、そのタグを検索し、存在しない場合は作成します。次に、そのタグの ID と写真 ID を含む行を結合テーブルに挿入します。
于 2012-06-18T03:44:17.907 に答える