Проектирование реляционной базы данных (E-Commence) — основные данные

В моем приложении для электронного запуска (для кафе/ресторанов) в настоящее время у меня есть следующая структура базы данных.

введите здесь описание изображения

Корзина — это корзина, в которую вы можете добавлять товары, временное место перед отправкой товаров/заказа на сервер. ProductCart – это позиция, множество продуктов (могут быть одинаковыми) с разным количеством, размером, степенью прожарки и т. д. Order).

Теперь я хочу расширить это еще больше, с возможностью продуктов иметь ингредиенты, и здесь это становится сложным и слишком сложным для моей головы и навыков работы с базами данных :-). Помимо того, что (одни и те же) продукты могут иметь разный размер и степень прожарки (отсюда и позиция), продукт должен иметь возможность иметь много разных ингредиентов (дополнений), например, пицца, где вы можете выбрать начинку. Это то, что я пробовал до сих пор:

введите здесь описание изображения

Но я не уверен, что это правильная структура или способ сделать это?


person 7c9d6b001a87e497d6b96fbd4c6fdf    schedule 12.01.2014    source источник


Ответы (2)


Это мое предложение.

Удалите объекты ProductOrder и Order. Они такие же, как ProductCart и Cart.

Теперь ProductCart должен иметь такой атрибут, как synchronized, который является 1 или 0 в зависимости от того, был ли он отправлен на сервер или нет.

Благодаря этому вы должны сильно упростить свою модель. Насчет Ingredient… сущностей они мне кажутся нормальными.

person Lorenzo B    schedule 12.01.2014
comment
Я перезагружу страницу перед отправкой в ​​​​следующий раз ;-) - person Dan Shelly; 12.01.2014
comment
@DanShelly Не проблема. Вы можете оставить свой ответ. Это не проблема для меня. - person Lorenzo B; 12.01.2014
comment
Спасибо за ваш ответ, я очень ценю это. - person 7c9d6b001a87e497d6b96fbd4c6fdf; 08.02.2014

Есть что-то фундаментальное, чего вы не поняли в Core Data. Ваша сущность ProductOrder по сути является таблицей соединений. Это совершенно не нужно, если вы не отслеживаете дополнительные атрибуты в этой таблице.

Вместо этого у вас должна быть связь «многие ко многим» между Order и Product.

Может показаться, что ProductCart удовлетворяет моему условию выше, что в этом случае таблица соединения имеет смысл. Но нет - вы должны просто добавить заказы в корзину и отслеживать всю информацию в объекте Order.

person Mundi    schedule 12.01.2014
comment
Я согласен с вашим ответом, но в этом случае эти объекты бесполезны, поскольку их можно свернуть с помощью логического значения. В любом случае это мой личный совет. - person Lorenzo B; 13.01.2014
comment
Мой ответ может включать ваше или любое другое логическое значение, если это будет сочтено необходимым или удобным. - person Mundi; 13.01.2014