Таблицы реляционной базы данных для пищевых продуктов - указание различных категорий

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

Позвольте мне поделиться моей текущей структурой базы данных: таблица пищевых продуктов и ее зависимости

Теперь давайте подумаем о примере из реальной жизни. Допустим, мы возьмем сырный продукт. А мы просто говорим, что это копченый сыр с каким-то ароматом. Тогда можно предположить, что это молочный продукт, и это будет выглядеть примерно так: Молочные -> Сырные -> Копченые -> Со вкусом чеснока.

У меня есть список с различными категориями и типами продуктов: категории и типы продуктов питания

Я пытался перечислить только часть этого, и это становится очень сложным с моей точки зрения.

Две основные категории продуктов: Еда и Напитки/напитки, но, может быть, мне следует начать с таких категорий, как выпечка, молочные продукты, фрукты и овощи и т. д.? Потому что тогда в молочных продуктах я могу есть еду и напитки, такие как сыр и молоко. Если мы возьмем пока только сыр, я погуглил, там 66 разных видов сыра, а может и больше можно найти здесь.

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

Я могу сделать вывод, что да я еще не знаю, как правильно организовать все категории и типы, но не могли бы вы предложить какую-либо структуру таблицы?

Если что-то будет недостаточно ясно, пожалуйста, дайте мне знать, и я поясню это.


person Advice Me    schedule 27.08.2016    source источник


Ответы (2)


С моей точки зрения, вы ищете некоторые комбинации маркировки и категорий. Система, которая может быть достаточно гибкой для вашего случая, может быть реализована как отношение M:N продукта:этикетка и 1:N этикетки:этикетка.

Таким образом, ваш пример сыра может быть помечен следующим образом:

Organic type -> Dairy -> Cheese
Cooked -> Smoked
Flavored -> Garlic flavor

Если ваше приложение поддерживает полнотекстовый поиск по этикеткам, добавление новых продуктов с этикетками должно быть простым. Конечные пользователи, с другой стороны, будут иметь возможность фильтровать молочные продукты в целом или сыр в частности.

person Boris Schegolev    schedule 28.08.2016

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

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

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

Имеет ли это смысл?

person Erick 3E    schedule 07.09.2016
comment
Кроме того, какова цель базы данных? как он будет использоваться? было бы легче предложить дизайн с этой информацией - person Erick 3E; 08.09.2016