SQL, システム設計

親子カテゴリのDB設計

MySQL

この記事の紹介する方法だと、仕様で階層が深くなるようになったとしても対応できます。

こういうデータがあったとする

categories

 

id, parent_id, name
1, 3, カテゴリ1
2, null, カテゴリ2
3, 2, カテゴリ3
4, null, カテゴリ4
5, 3, カテゴリ5

 

階層を表すとこう

3-1-5
2-3-5
4

 

SQL

 

select
  c1.*, c2.*, c3.*
from categories c1
left join nodes c2 on c2.parent_id = c1.id -- 1階層
left join nodes c3 on c3.parent_id = c2.id -- 2階層
...
where c1.id = 3;

再起的になってしまう場合が起こりうるので、

アプリ実装で気をつける

  • joinする回数を決める
    ex. 2階層までとする、など仕様を決める
  • 紐づける時に再起的にならないようにする

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)