我有一个食品订购系统,其中有主要项目,如拿铁、长黑、纯白、浓缩咖啡、美式咖啡等。每个项目都存储在数据库中,如下所示。
*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 加载每个子选项。