0

ラテ、ロングブラック、フラットホワイト、エスプレッソ、アメリカーノなどのメインアイテムを持つ食品注文システムがあります。各アイテムは次のようにDBに保存されます。

*不要な列が欠落しているデータベース

  +----+----------------+-------------+
  | id | item_name      | price       |
  +----+----------------+-------------+
  | 1  | latte          | 2.0000      |
  +----+----------------+-------------+
  | 2  | long black     | 2.5000      |
  +----+----------------+-------------+
  | 3  | flat white     | 3.0000      |
  +----+----------------+-------------+
  | 4  | americano      | 2.0000      |
  +----+----------------+-------------+

各アイテムにサブオプションを追加する必要がありますが、各アイテムには独自のオプション セットがあります。たとえばamericano、ミルク タイプ、砂糖タイプがあります。フラットホワイトにもミルクタイプがありますが、アメリカーノにはミルクオプションが必要ない場合があるため、別のメニューにする必要があるため、別のサブメニューがあります. 例えば。

   Flat white milk menu 
  +----+----------------+------------+
  | id | item_name      | submenu_id |
  +----+----------------+------------+
  | 1  | soy            |     1      |
  +----+----------------+------------+
  | 2  | rice           |     1      |
  +----+----------------+------------+
  | 3  | regular        |     1      |
  +----+----------------+------------+
  | 4  | trim           |     1      |
  +----+----------------+------------+

   americano milk menu 
  +----+----------------+------------+
  | id | item_name      | submenu_id |
  +----+----------------+------------+
  | 5  | soy            |     2      |
  +----+----------------+------------+
  | 6  | rice           |     2      |
  +----+----------------+------------+
  | 7  | regular        |     2      |
  +----+----------------+------------+
  | 8  | trim           |     2      |
  +----+----------------+------------+
  | 9  | no Milk        |     2      |
  +----+----------------+------------+

それから砂糖などの一般的なアイテムがあるかもしれません...

         sugar
  +----+----------------+------------+
  | id | item_name      | submenu_id |
  +----+----------------+------------+
  | 10 | Sugar          |     3      |
  +----+----------------+------------+
  | 11 | no Sugar       |     3      |
  +----+----------------+------------+

階層をDBに保存する最良の方法は何ですか? たとえば、flat white には1,3americano が必要とする値が必要2,3です。より多くのオプションを必要とするものには、同じ種類のシステムが必要になる場合があります。これらを引き出して、各サブオプションを JavaScript でロードできるようにする必要があります。

4

1 に答える 1

0

各サブオプションは1つのオプションのみに属しますか、それとも2つのいくつかのオプションに属しますか?砂糖はそれぞれの選択肢に属すると思います。

この場合、3つのテーブルが必要になります。既存のオプションテーブル(id / name / price)、サブオプションテーブル(id / name)、および結合テーブル(option / sub-option)です。フラグフィールドを追加することで、オプションテーブルとサブオプションテーブルを組み合わせることができますが、この場合、結合テーブルが正しく設定されていることを確認する必要があります。

于 2012-12-08T05:13:14.510 に答える