サブカテゴリ(子カテゴリ)テーブルって必要?
データベースでカテゴリ管理する場合、カテゴリ(親カテゴリ)とサブカテゴリ(子カテゴリ)で別テーブルの設計にしているシステムってありますよね。
カテゴリ(親カテゴリ)とサブカテゴリ(子カテゴリ)だけの場合はそれでいいかもしれませんが、3階層、4階層・・・と管理したい場合、階層ごとにテーブルを増やしていくのはスマートではないですよね。
そこで、カテゴリテーブル、1テーブルだけで複数階層のカテゴリ管理がスマートにできるカテゴリテーブルの設計を書いてみます。
■カテゴリテーブル
項目 | フィールド名 | 型 |
---|---|---|
カテゴリID | category_id | int(11) |
親カテゴリID | parent_id | int(11) |
カテゴリ名 | category_name | varchar(64) |
状態 | state | int(2) |
■階層構造例
1階層 | 2階層 | 3階層 | 4階層 |
---|---|---|---|
本(1,0) | |||
コンピュータ(2,1) | |||
プログラミング(3,2) | |||
C++(4,3) | |||
PHP(5,3) |
親カテゴリ「本」はカテゴリID「1」になります。その下のカテゴリ「コンピュータ」はカテゴリID「2」親カテゴリ「1」になります。その下のカテゴリ「プログラミング」はカテゴリID「3」親カテゴリ「2」になるといった感じです。
子カテゴリが、親カテゴリの情報を持つことによって、階層構造を表します。