Задать вопрос

Вопрос по структуре базы данных

Собственно, хотелось бы увидеть какие-нибудь советы, может как-то оптимизировать следующее.

У меня есть таблицы
Блюда:
CREATE  TABLE `Courses` (
  `id` INT NOT NULL ,
  `category` INT NOT NULL ,
  `title` VARCHAR(255) NOT NULL ,
  `description` TEXT NULL ,
  `price` DECIMAL(10,2) NULL ,
  `currency` INT NOT NULL )

и Ингредиенты:
CREATE  TABLE `Ingredients` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(45) NOT NULL ,
  `count` INT NULL ,
  `unit` VARCHAR(45) NULL  ,
  `price` DECIMAL(10,2) NOT NULL ,
  `currency` INT NOT NULL )

Которые связаны между собой третьей таблицей.

Для заказов я предполагаю такую структуру:
Orders (описание самого заказа):
CREATE  TABLE `Orders` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `restaurant` INT NOT NULL ,
  `client` INT NOT NULL ,
  `table` INT NOT NULL ,
  `status` TINYINT NOT NULL DEFAULT 0)


OrderCourses (заказанные блюда и их количество):
CREATE  TABLE `OrderCourses` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `order` INT NOT NULL ,
  `course` INT NOT NULL ,
  `count` INT NOT NULL)


OrderIngredients (доп. ингредиенты к заказанным блюдам):
CREATE  TABLE `OrderCourses_copy1` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `order` INT NOT NULL ,
  `course` INT NOT NULL ,
  `ingredient` INT NOT NULL ,
  `count` INT NOT NULL)
  • Вопрос задан
  • 2572 просмотра
Подписаться 3 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
mekegi
@mekegi
В OrderIngredients вместо двух полей order и course сделайте одно order_course где будете хранить id из таблицы OrderCourses
Ответ написан
sainnr
@sainnr
Согласен с mekegi, я бы еще отдельно вынес поля price, currency из блюд и ингредиентов (3 НФ), может пригодиться в дальнейшем.
Ответ написан
Eternalko
@Eternalko
Лично я бы не возился с ингредиентами.
Даже в сети пиццерий по всей Украине (chelentano) так не делают. Насколько я могу судить.

Кастомные пиццы (где клиент сам выбирает составляющие) на мониторе просто считают докидыванием «блюд» в вашем случае.

Проще создать Course Group: Ingrediets. И туда всякие двойные сыры и соусы записывать.

Тоесть заказ в вашей бд, упрощенной по моему советы выглядел бы так:

Заказ 5
Столик 3
Блюда: 2 воды, 1 Пицца, 1 дополнительный сыр, 1 соус чесночный, 1 пельмени
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы