Pizza & Food - Дизайн базы данных

Я хочу создать веб-сайт, который позволяет клиенту заказать еду с веб-сайта.

Есть два типа продуктов питания:

  • Регулярная еда / напиток (например, Burger, Donner Kebab , Чип, Кокс, Пепси и т. Д.)
  • Пицца Пищевая (например: Margherita Pizza, мясная пицца и т. Д.)

Если они выбирают пиццу из списка - им, возможно, понадобится выбрать базу (тонкая корочка, корочка дефота), дополнения и опция пиццы / вариант.

Как разработать таблицы в этой ситуации?

Примечание : Каждый элемент имеет 1 или более параметров. Вариант может иметь дополнительные (1 или более) или без дополнительных. Если товар является типом пиццы - тогда он может иметь базу (корочку)

скриншоты прототип

см. Два скриншота, которые я пытаюсь реализовать, я на правильном пути к дизайну базы данных или что могло бы сделать лучше?

Pizza настроить:

GUI-Mockup to customize pizza

Burger Burger Настройка:

GUI-Mockup for the burger options

Функциональность дополнительных доходов (раскрывающиеся спички / тикалы)

на дополнениях, когда-нибудь мне нужно добавить несколько дополнений для раскрывающегося списка вместо поблечний. Это означает, что клиент может выбрать только 1 из 1 , 2 или 3 выпадающих.

GUI-Mockup extra dropdowns

Дизайн базы данных

Как бы вы настроили свою базу данных Modell для реализации чего-то вроде вышеуказанных параметров настройки? Вот что я придумал:

Категории Таблица:

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| cat_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| cat_name | varchar(100) | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

Таблица предметов:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| item_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| cat_id    | int(11)      | NO   |     | NULL    |                |
| item_name | varchar(100) | NO   |     | NULL    |                |
| item_type | int(11)      | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

- item_type (0 = нормальный, 1 = pizza, 2 = установить еду)

Item_options Table:

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| option_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| item_id     | int(11)      | NO   |     | NULL    |                |
| option_name | varchar(100) | NO   |     | NULL    |                |
| price       | decimal(6,2) | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

Item_extras Таблица: (Как вы думаете, должны иметь отдельные столы для Pizza Toppin и дополнений?)

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| extra_id  | int(11)      | NO   | PRI | NULL    | auto_increment |
| option_id | int(11)      | NO   |     | NULL    |                |
| name      | varchar(50)  | NO   |     | NULL    |                |
| cost      | decimal(6,2) | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

Item_Pizza_Base Table:

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| base_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| option_id | int(11)      | NO   |     | NULL    |                |
| base_name | varchar(50)  | NO   |     | NULL    |                |
| cost      | decimal(6,2) | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

Результат SQL:

mysql> select * from categories;
+--------+----------+
| cat_id | cat_name |
+--------+----------+
|      1 | Pizzas   |
|      2 | Burgers  |

mysql> select * from items;
+---------+--------+------------------+-----------+
| item_id | cat_id | item_name        | item_type |
+---------+--------+------------------+-----------+
|       1 |      1 | Vegetarian Pizza |         1 |
|       2 |      2 | Beef Burger      |         0 |

mysql> select * from item_options;
+-----------+---------+-------------+-------+
| option_id | item_id | option_name | price |
+-----------+---------+-------------+-------+
|         1 |       1 | 12 Inches   |  5.60 |
|         2 |       1 | 14 Inches   |  7.20 |
|         3 |       2 | 1/4lb       |  1.80 |
|         4 |       2 | 1/2lb       |  2.50 |

mysql> select * from item_extras;
+----------+-----------+-----------+------+
| extra_id | option_id | name      | cost |
+----------+-----------+-----------+------+
|        1 |         1 | Mushroom  | 1.00 |
|        2 |         1 | Pepperoni | 1.00 |
|        3 |         2 | Mushroom  | 1.00 |
|        4 |         2 | Pepperoni | 1.00 |
|        5 |         3 | Chips     | 0.50 |
|        6 |         4 | Chips     | 0.50 |

Как вы можете видеть дополнения от гамбургера и пиццы в 1 таблице .. Должен ли он быть отделен?

mysql> select * from item_pizza_base;
+---------+-----------+------------+------+
| base_id | option_id | base_name  | cost |
+---------+-----------+------------+------+
|       1 |         1 | Thin Crust | 0.00 |
|       2 |         1 | Deep Crust | 0.00 |
|       3 |         2 | Thin Crust | 0.00 |
|       4 |         2 | Deep Crust | 0.00 |
+---------+-----------+------------+------+

Имейте в виду, что цены на каждый предмет не всегда одинаковы. Например: Pizza Size 10 «будет стоить 1,00 для каждого дополнительного, но 0,50 на 12 дюймов пиццы. Также будет случай для каждой пиццы будет иметь разные затраты на дополнения.

Является ли дизайн базы данных или что может быть улучшено?

18
задан surfmuggle 18 November 2014 в 20:14
поделиться