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 也有牛奶类型,但需要不同的菜单,因为美式咖啡可能不需要牛奶选项,因此会有不同的子菜单。例如。

   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      |
  +----+----------------+------------+

将层次结构存储在数据库中的最佳方法是什么?例如,纯白色需要1,3美式咖啡需要的值2,3。对于需要更多选项的事物,可能需要相同类型的系统。我需要能够将它们拉出并使用 javascript 加载每个子选项。

4

1 回答 1

0

每个子选项是只属于一个选项还是属于两个多个选项?我想糖会属于每个选项....

在这种情况下,您将需要三个表:一个选项表,例如您已经拥有的 (id/name/price)、一个子选项表 (id/name) 和一个连接表 (option/sub-option)。您可以通过添加标志字段来组合选项和子选项表,尽管在这种情况下您必须确保正确填充连接表。

于 2012-12-08T05:13:14.510 回答