質問: CategoryのDB設計についてオススメの方法を教えていただきたいです。 メンズ、レディース、子供服、小物、その他 の5つのメインカテゴリーがあります。 その次にそれぞれのメインカテゴリーにサブカテゴリーを追加します。 メンズ |_アウター |_インナー |_トップス |_ボトムス レディース |_アウター |_ドレス |_スカート |_シャツ 子供服 |_ジャケット |_ボトムス 小物 |_帽子 |_サングラス |_バッグ この場合テーブル設計は belongs_to ・Categoriesテーブル has_manyで ・women_categoryテーブル ・men_categoryテーブル ・kids_categoryテーブル ・accessory_categoryテーブル ・others_categoryテーブル だと良くないでしょうか。より良い方法があれば教えていただきたいです。お願いします。
回答: 設計上の考慮が必要な点として、 * カテゴリは常に2段階なのか、それとも階層数自体を変える必要は出てくるのか * 親カテゴリの数は固定で行くのか、それとも簡単に変更できる方がいいか いちばんシンプルな構造としては、カテゴリオブジェクトは1種類で「親カテゴリのID」を持たせる、というものがあります。常に2段階というような状況ならこれでほぼ捌けますが、どんどん深くなると中身の取得などに支障してくることがあります。 とはいえ、RDBMS自体がこういうデータのハンドルにそこまで向いているわけでもなく、Naive Tree問題と呼ばれるように実装法はいくつも検討されています。