2014-01-27 4 views
1

вот мой первый вопрос здесь, но я был там некоторое время.Оптимизация базы данных пиццы

Я хочу создать веб-приложение OO/MVC (магазин пиццы в php, mysql, codeigniter), где объект pizza полностью настраивается. Каждый кусок пиццы был спроектирован так, чтобы быть переменным, и я не уверен, что схема данных оптимизирована, поэтому я прошу совета.

Каждого Пицца состоит из:
корочки объекта: Он может быть тонким, толстым, панорамированием, с зернами и т.д.
Пограничного объект: Он может быть тонким, толстым, заполнено (может быть заполнен один ингредиент) и т.д.
PizzaSize объекта: малый, средний, большой и т.д. объекта
PizzaLayout: 1 вкус, 2 вкусов (половина половины), 2 ароматизаторов (2/3-1/3) и т. Д.
наблюдения строки: любой дополнительный пользователь, как вариант, "сырое мясо", "поджаренный лук" и т.д.
1 до 4 Ароматизаторов: Flavor 1, отдушка, корригент 2 3 и 4. Flavor (только Ароматизатор 1 представляют собой не обнуляемый)

PizzaLayout объекта работает с атрибутом, который определяет пиццу разделение, например:
"1" = только один аромат
"4: 4" = 2 ароматизаторов, 4 ломтика каждый
"3: 3: 3" = 3 ароматизаторы, 3 ломтика каждый (это единственное исключение из 8 частей)
"6: 2" = 2 ароматизаторов, один с 6 ломтиков, а другая с 2.

Например, если у пиццы есть макет 6: 2, а Flavor1 - это Бэкон, а Flavor2 - Mozzarella, поэтому он будет иметь 6 ломтиков бекона и 2 ломтика моцареллы.

Каждый Ароматизатор состоит из Список ингредиентов (например: "пепперони: сыр, пепперони, орегано, помидоры и т.д."). Пользователь может изменить вкус пиццы, изменив ингредиенты индивидуально (например, добавьте Бэкон в аромат Пепперони) или создайте свой собственный вкус с нуля.

Магазина пицца будет иметь предварительно сконфигурированный:

таблицы доступных корок.
Таблица доступных ингредиентов.
Таблица доступных макетов.
Стол доступных кромки.
Таблица доступных ароматов.
Таблица доступных размеров.

Я готов создать более гибкий дизайн, где я могу добавить до 8 разных вкусов, но я не доволен фиксированными атрибутами в таблице Pizza. Я подумал о создании PizzaLayoutItem, сбросив 4 столбца ароматов. и каждый предмет имеет вкус и количество ломтиков. И каждая пицца будет иметь список предметов, поэтому я хотел бы создать таблицу: PizzaLayoutItem: идентификатор, pizzaId, flavorId, ломтики,

Так опред.польз.имя Ham/Бекон Пицца будет иметь: А «4: 4» раскладка. 2 LayoutItems, один: ветчина 4 ломтика. И один: Бэкон 4 ломтика.

Моя точка зрения, мне нужно создать все эти таблицы? Каждый раз, когда пользователь создает пиццу, база данных запрашивает 6 или 7 таблиц? Мы можем считать, что размеры таблиц не имеют значения, потому что количество корков, ароматизаторов и т. Д. В магазине пиццы не будет большим, так что это быстрый запрос, но все же есть лучший способ его разработки?

Я не могу размещать изображения, поэтому я не могу опубликовать схему, которую я создал = /.
Прошу прощения, если макет этого вопроса также не оптимизирован.

+5

Что случилось с запросом 6 или 7 таблиц? –

+1

На самом деле я бы сказал, что этого недостаточно, эта строка макета - это ужасный подход, а не просто сохранение списка вкусов (с дополнительной таблицей, связывающей приказы пиццы с ароматами). Вы также не храните заказы вообще (несколько пицц и т. Д.) – Blindy

+0

@MarkBaker На самом деле я не сказал, что это неправильно. Я просто прошу опытных пользователей, если этот дизайн в порядке или будет лучше. –

ответ

0

Вы можете использовать модель списка смежности для таблицы. Это просто, но также и для сложной схемы базы данных, такой как семейное дерево. Тогда я бы использовал шаблон декоратора для большей части логики.

Смежные вопросы