- ベストアンサー
テーブルの作り方
PHPMYADMINでテーブルを作ろうとしてるんですが、なかなかイメージがつかめません>< 例えば ■カテゴリー ┣電化製品 ┣電子機器 ┣オーディオ ┗家庭電化製品 ┣光学商品 ┣カメラ・レンズ ┗双眼鏡・望遠鏡 ┣アウトドア・ゴルフ ┣趣味 があったとします。 電化製品だと 電子機器、オーディオ、家庭電化製品がありますが この場合どのようにテーブルを作成すれば良いのでしょうか? また、光学商品もカメラ・レンズ、双眼鏡・望遠鏡とありますがどうすれば良いのでしょうか? ご教授よろしくおねがいします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
貴方がどの様な用途にこのデーターベースを使用するかということにも関係します。在庫管理か、売上げ管理かによっても変わります。 例を上げますと、 一度必要な総ての項目を並べます。 そして、重複する項目、同じ語句が利用されている項目を1つのテーブルにします。そのようにして必要に応じて複問い合わせで検索可能なようにします。そうすることで、データー容量を少なく出来、語句の不整合をなくします。 販売店を例にしますと、 一度総ての項目を並べます。 ID 商品名 型名 カテゴリー メーカー 在庫数量 売上げ数量 保管場所 売上げ番号 顧客 仕入先の連絡先 売上げ番号 商品ID 売上げ数量 顧客ID 在庫数量 売掛け数量 ------ これは売上げを特定するテーブル 商品ID 商品名 型名 カテゴリーID メーカーID 保管場所1ID 保管場所2ID ------ これは商品を特定する商品テーブル カテゴリーID カテゴリー名称 ------ これはカテゴリーテーブル メーカーID メーカ名称 仕入先の連絡先 ------ これはメーカテーブル 保管場所ID 保管場所 ------ これは保管テーブル 仕入先の連絡先ID 仕入先の連絡先 ------ これは仕入先テーブル 顧客ID 顧客名 連絡先 ------ これは顧客テーブル のようになります。(簡単に書いたので間違いもれがあると思いますが。)(また、1商品が、必ず1箇所にあるかどうかも関係します。) 項目(フィールド)は、後から追加は可能ですが、取り消しは大変ですので全体を見渡す必要があります。私は、データーベースの作り方、正規化(第3から5まで有ります。)の本を読まないといけないと思います。そんなに大変でもないので是非お勧めします。
その他の回答 (4)
- spieder
- ベストアンサー率59% (13/22)
ツリーのようにカテゴライズする場合に使う"入れ子集合モデル"を使えばいいんじゃないでしょうか? ただモデルが複雑なので、プログラムのバグや手作業での操作で不整合が発生しやすいです。よく理解して、必要なところのみ注意して用いたほうがいいと思います。 phpmyadminで表示されるのは、例のような感じにはなりませんが・・・
- nk2009
- ベストアンサー率100% (1/1)
先程の回答に一部誤りがあります。 以下のように訂正します。 売上げ番号 商品ID 売上げ数量 顧客ID ------ 売上げテーブル 商品ID 商品名 型名 カテゴリーID メーカーID 保管場所1ID 保管場所2ID 在庫数量 売掛け数量 ------ 商品テーブル 今考えて即書いていますので、他にも間違いがあるかも知れません。お許し願います。
- rally
- ベストアンサー率28% (32/111)
カテゴリのテーブル化はいろんな方法があると思いますが、私は下記のようなレイアウトにしています。 ・カテゴリーID ・カテゴリー名 ・レベル ・上位カテゴリーID ・表示順位 「レベル」が"0"のレコードはトップレベルのカテゴリー。 made_checkさんの例だと「電化製品」「光学商品」などです。 「レベル」が"1"になると、レベル"0"に紐づくカテゴリーなので、「上位カテゴリーID」が必要になります。 「表示順位」は画面上に表示する際に並べたい場合に使います。 この持ち方だと、階層をいくつでも持つことができるので、割と汎用的に使えます。 いろんなパターンで使ってますが、問題なく使えてますよ。
- Tasuke22
- ベストアンサー率33% (1799/5383)
テーブルの作り方は、結構、高度な技術なので 説明も困難です。 うるさいことを言うと、世の中の現象を現さな ければいけません。 しかし、今回はテーマが一部しかありません。 商品、というものしかないわけです。 これだけの条件ではテーブルは1つでいいでしょう。 カテゴリが大、小とあるので、カテゴリ大、カテゴリ 小という項目を増やせば済む話です。 この商品テーブルが10万件とかなると、少し考え直す 必要があります。 また業務上分割する必要があるかもしれません。 データベースは全体を捉えながら設計するので、 このシステムに関わるあらゆる物を網羅しなければ なりません。テーブルとテーブルの関わりが重要です。 全ての業務の視点から、データベースが効率よく参照 出来ることが重要なのですね。 その為にはこのシステムが使われるであろう、業務の 分析が必要であり、システム化することによる、新業 務の提案が必要です。業務が変わらないなら、システ ム化の意味はありませんから。 そのような前段階の分析作業なし、ということはこの 質問から分かります。はっきり言って、これではろく な物が出来ないでしょう。 まあ、1度、現行の業務フローや新業務フローを作り、 現場の人のインタビューとかもまめにし、社内業務を 全て把握する必要があるでしょう。 インタビューできない場合は、それなりの想定が必要 です。