
■知りたいこと
ブログカテゴリー(親・子) を取り扱う際、普通は「1テーブル」でいくのでしょうか、それとも、親と子の2テーブルを作成するのでしょうか?
・それぞれのメリットデメリットは?
・「ケースバイケースによるので一概には言えない?」or「どちらでも同じ?」
・また、「2テーブル(親子)」に分けることを正規化というのでしょうか?
■現状
・1テーブルで運用(parent_idカラム利用)
・子カテゴリー数が多くなると、phpMyAdmin等で目視する際、カテゴリーテーブルから親カテゴリーIDを探しづらくなる(条件で抽出するので、大きな問題ではないですが)
No.1ベストアンサー
- 回答日時:
親子カテゴリーというか、その手のものは、さらに孫カテゴリーが出来て、ツリー型になるので、親子でtableを分離すると逆に面倒なことになる。
しかし、ツリー型をデータベースでうまく処理するには、こつが要る。
3種類の方法があって、最終的にどんなデータの取り出し方をすることがおおいか、どのデータベースシステムを使うのか(サブクエリの使い勝手や、Oracleのように階層関係を簡単に処理できる関数を持ってるか)によって決めるとよいだろう。
http://makizou.com/1616/
に概略解説がある。
1.隣接リスト型 : parent_id を持たせる方法
2.経路列挙型: ディレクトリーツリーのような表示形式で保持する方法
http://www.makizou.com/archives/1662
3.入れ子集合型: 右値と左値を持たせて、子集合は、親の左右値内に入る様にする
http://www.geocities.jp/mickindex/database/db_tr …
まあ、単純一覧でぱっと見理解しやすいのは、2の列挙型かと思うけど、列挙形式記述にこつが要る。親側に変更があるときに面倒、プログラムで行えばどうということもないけど。
3は、ぱっと見分け解りません。データ作成も手作業では間違うから、プログラムをうまく組む必要があります。でも、最終的に結構すっきりした構造になるという利点があります。
1は、データ作成は簡単だけど、取り出すときに、階層処理関数を持ってないmysqlでは一回で階層化できないことが多い。2階層しかないなら、あんまり問題にならないかもしれないけど。
「テーブルの正規化」は、ちょっと意味が違うので、ちゃんとそれを解説しているページを探して読んでください。
回答ありがとうございます。
>親子でtableを分離すると逆に面倒
はっきり言っていただけると、助かります。
また、「ツリー型」に該当することや、3種類の特徴について詳しく説明いただいだので、
大変参考になりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- その他(データベース) accessについて 2 2022/05/31 16:58
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLの記述方法
-
検索の効率に付いて
-
sennaの全文検索のクエリについて
-
五十音順
-
既存テーブルにカラム追加でサ...
-
2つのテーブルでの合計取得
-
pythonでsqlight勉強中、クエリ...
-
データ移動
-
ACCESSのVBAにてExcelに行...
-
複数選択か?単数選択か? テ...
-
フィールド内のデータの増加に...
-
初心者的質問ですが、テーブル...
-
SQLサーバに対するSQL文で抽出...
-
親子に分けた方が良い? テー...
-
MySQLで複数条件指定での抽出
-
Access_テーブルへデータ追加す...
-
Accessのシステム改修について
-
在庫管理のデータベース
-
DB、キャストとインサートを...
-
Accessの構成をコピーしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
既存データをINSERT文にして出...
-
同一テーブル内での比較(最新...
-
SQLサーバに対するSQL文で抽出...
-
副問合せを使わずにUNIONと同様...
-
結合したテーブルをSUMしたい
-
テーブル名が可変の場合のクエ...
-
PRIMARY KEYのコピー
-
2つのテーブルをLIKE演算子のよ...
-
ACCESSのVBAにてExcelに行...
-
DB2のSQLコマンドについて
-
Excelでしりとりを作る方法
-
ExcelのMatch関数のようなもの...
-
改行を含んだデータのインポート
-
ExcelのVLOOKUP関数の動作をMyS...
-
ADO+ODBCでテーブルに接続する...
-
データ無し時は空白行にしたい...
-
Access特定のテーブルを編集不...
おすすめ情報