Таблици на Relational Database за хранителни продукти - специфициране на различни категории

Правя дизайн на база данни за хранителни продукти и се губя в решението как да проектирам продуктови типове и категории в базата данни.

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

Сега нека помислим за пример от реалния живот. Да кажем, ако вземем сирене. И ние просто казваме, че е пушено сирене с малко вкус. Тогава можем да предположим, че това е млечен продукт и ще изглежда така: Млечни продукти -> Сирене -> Пушено -> С вкус на чесън.

Имам приложен списък с различни категории и видове храни: категории и видове храни

Опитвах се да изброя само част от него и от моя гледна точка стана много сложно.

Две основни категории храни биха били: Храна и Напитки/напитки, но може би трябва да започна с тези категории като пекарни, млечни продукти, плодове и зеленчуци и т.н.? Защото тогава в млечните продукти може да имам храна и напитки като сирене и мляко. Ако засега вземем само сирене, потърсих в Google и има 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