2011-07-29 7 views
1

父親は子供やその逆について知っていなければなりませんか? 、私はオブジェクト(アイテムやカテゴリ)の2種類を持っている状況で、それぞれが独自の特性やフィールドがあり、我々はすべての項目は、彼が中にあるカテゴリを持っていることを、それらの間の関係を持っている父親は子供やその逆について知っていますか?

私は何が起こるべきかについて、理論的にもphp + mysqlでも、2つの方法で質問したいと思います。

カテゴリには、その中にあるすべてのアイテムについて知っているか、またはすべてのアイテムがそのカテゴリについて知っている必要がありますか?

php + mysqlで、その行のすべてのアイテムがそのカテゴリのidを保存するかどうか、またはこの関係のために特別なテーブルを作成する必要があります(各行にカテゴリIDとアイテムIDが含まれます)。

答えて

3

ベストプラクティスは、親について知っている子供たちです(例:parent_id)。代わりの方法はスケーラブルではなく、システムに非常に負荷がかかります。あなたは簡単に質問を実行して子供たちを見つけることができますが、SELECT * FROM items WHERE item_category = xです。これは、アイテムを追加または削除したときにカテゴリが影響を受けないためです。アイテムをアイテムに割り当てたりアイテムを削除したりするため、別のカテゴリにはなりません。したがって、どのアイテムが割り当てられているかは気にする必要がありません。

これはタグ設定とは異なります。 1対多のカテゴリ割り当て方法では、アイテムは単一の「カテゴリ」に分類されますが、多くの「フィーチャ」が存在する可能性があります。タグ機能は多対多の関係であり、あなたが言及したマッピングテーブルを必要とします。親カテゴリを割り当てるには、itemsテーブルに1つの「親」フィールドしか必要ありません。