0

画像ギャラリーが必要で、各ギャラリーには一連のタグが付けられます。ユーザーがこれらのタグをいくつでも検索できるようにしたいのですが、それがある程度効率的であるといいのですが。どこから始めたらいいのかよくわかりません。

各カテゴリには、「categories」テーブルに次のようなエントリがあります。

id | name | description
---+------+------------------------------------
0  | cats | This is a gallery full of cats
1  | dogs | This is a gallery full of dogs

「ギャラリー」テーブルの各エントリには、属するカテゴリごとに複数のカテゴリ ID が格納されます (ただし、現時点ではそれらを格納またはクエリする方法はわかりません)。

計画していた検索機能がなければ、カテゴリ配列をシリアル化するだけですが、クエリを実行するのはまったく効率的ではありません。

4

1 に答える 1

1

第 3 正規形に進みます

 gallery 
 id | desc
----+---------
1   | dogs
2   | cats
3   | cats and dogs playing 

.

gallery_category
gallery_id | category_id 
-----------+-------------
 1         | 1
 2         | 0
 3         | 0
 3         | 1

次に、ユニオンインターセクトを使用します

 select gallery_id from gallery_category where category_id=1
 INTERSECT 
 select gallery_id from gallery_category where category_id=0

gallery_category の両方の列にインデックスを使用すると、これはかなり高速になるはずです。

残念ながら、mysql は交差しませんが、join で同じ効果を得ることができます。

select a.gallery_id 
  from  gallery_category as a 
  join  gallery_category as b on a.gallery_id = b.gallery_id
  where a.category_id=1 and b.category_id=0
于 2012-05-17T00:43:12.410 に答える