2012-03-05 8 views
5

私は十数程度のテンプレートシステム(禅カート、キューブカートなど)で作業しました。これらのそれぞれには、製品、オプション、カテゴリを構成する独自の奇妙な方法があります。すべてのアドオン機能により、McGuyverによるカードのスタック状況が発生し、コード全体を操作することができます。製品、オプション、カテゴリの中で最も洗練されたMySQLスキーマは何ですか?

6年前、私は自分自身のwebstoreエンジンを開発しました。これは長年にわたって進化し、独自のカードスタックになっています。今、エンジンのトータルオーバーホールをしています。

enter image description here

:誰エンジンは、すべてのウェブストアのニーズに合わせていないだろうが、次のモデルは、いずれかの欠点を持っている場合、または商業用柔軟、正規化、非不快データベースを作成するためのより良い方法がありますならば、私は思っていました注:
option_types =色、サイズ、材料
options =赤、白、青、S、M、L、綿、スパンデックス、皮革

アクティブ目的上省略基本的なもの(位置、等以外

)、誰かがこれを改善する方法を見ますか?

+4

どのソフトウェアで画像を作成しましたか? – mpm

+0

'(category_id、item_id)'と '(item_id、option_id)'を主キーにするのではなく、 'item_categories'と' item_options'に 'id'属性があるのはなぜですか? –

+2

@camus http://ondras.zarovi.cz/sql/demo/ – neokio

答えて

3

ここに私のノート/意見があります。あなたはカーディナリティーを見逃していますが、私はそれらを推測するために最善を尽くします。

  • Categoriesはokです。

  • iditem_categoriesから削除してください。 category_idとitem_idに複合主キーを作成します。

    一意のIDは、多くの点でよりスマートである各レコードを与える

:2よりも1つのフィールドに検索するより速く、より安全に削除する、など

あなたは上のどのような検索を行うだろうイド?実行するクエリは、「アイテムのすべてのカテゴリの取得」および「カテゴリのすべてのアイテムの取得」です。なぜ私は削除する方が安全だろうか分かりません。しかし、異なるIDを持ち、同じcategory_idとitem_idのペアを持つ可能性があるため、idを追加すると挿入しにくい場合があります。あなたが制約をチェックして、ペアがユニークであることを確認する必要があります(とのPKが使っているものそれはない?)

  • items okです...(下のコメントを参照してください)
  • 削除item_optionsからidは、(上記および下記のコメントを参照してくださいと同じケース)
  • option_types今すぐ

OKですが、私は項目やオプションが関係している方法は、より多くの思考が必要になると思います。それは多対多関係のようです。 Tシャツのようなアイテムは多くのサイズを持つことができるので、それぞれのアイテムとオプションはそれぞれ異なるサイズにする必要があります。しかし、サイズとは別に、綿や革などの素材が違うとどうなりますか?ペアの綿S、綿M、綿L、皮S、皮M、皮Lについての情報が必要です。これは、私がかなり確信しているので、それらのすべてが異なる価格と重量を持つように意味があります。しかし今はTシャツに2色を追加しましょう。私たちが今持っている12の組み合わせのそれぞれに価格と重量を加えなければなりません。

ユーザーが商品の価格を見たい場合は、価格に達するまですべてのオプションを選択する必要があります。私はrequiremetsを認識していないので、これをどうすればいいのか分かりません。私はちょうどアイデアを投げている:あなたは、アイテムの一部であるベース価格と重量以上の価格と重量の変動を適用することができます。寝る前に

ただ、いくつかの未処理の考え:

  • option_typesは慎重にあなたがそのデザイン与えstockを処理する方法を考える階層
  • のいくつかの種類である可能性があります。あなたは黒のTシャツのために10のアイテムを持っています...しかし、あなたは黒のレザーのTシャツのためにどれくらいのアイテムを持っていますか?その数字は元の10の数字とどう関係していますか?
+0

私はオプションについてもっと覚えていたことを表示するためにグラフィックを更新しました... 'option_sets'はそれぞれのオプションに対して1つのレコードを含みます。 「Cotton、S、Black」は3レコードになります。 – neokio

0

オプションテーブル名前の下に値を追加します。すなわち ブラックLブラックM ブラックS ブルーL ブルーM ブルーS などMostyのアイデアへのスピンオフとして 。

関連する問題