Всем привет, подскажите как правильно делаются следующие вещи:
таблица Wine (wine_id, wine_name, winerie_id, country_id, region_id, grape_id .... и т.д.)
понятно что отдельные таблицы Country (country_id, country_name......), Wineries (winerie_id, winerie_name ...)
А как быть с виноградом - Grape (grape_id, grape_name.........), но вино может быть из одного винограда, а может из четырех? то есть в поле grape_id таблицы Wine по идее может быть или одно INT значение или список значений т.е делать его текстовым и значения через запятую, но все что я читал "кричит" о том что это неправильно.
Какие лучшие практики в таких случаях? не хочу изобретать велосипед
делаю для себя небольшой проект на python и так и мыслю, что это поле grape_id - список который может быть из одного элемента или более. но по ряду причин выбрал mariadb и как понимаю там нельзя хранить такие структуры данных
Одно значение - это частный случай списка значений. Никакого противоречия на самом деле нет.
Кстати, насколько я разбираюсь в винах, там будут и сорта с нулевым списком ;)
Adamos, ну если говорить о "французах" например, то там и без перечисления на контрэтикетке часто понятен состав, не зря же есть выражение бордоский бленд. На этот случай будет поле wine_style
Вы хотите сказать что mariadb не поддерживает связь между таблицами "Один-ко-многим"?
Давайте посмотрим как организовать связь между таблицей "Wine" и таблицей "Grape". В каждой из этих таблиц есть поле с уникальным идентификатором "wine_id" и "grape_id". Создадим таблицу "grapes_to_wine" в которой будем хранить "wine_id" и "grape_id". Связываем таблицы по схеме: таблица "Wine" связана с таблицей "grapes_to_wine" по полю "wine_id" отношением "один ко многим" и таблица "Grape" связана с таблицей "grapes_to_wine" по полю "grape_id" отношением "один ко многим". В итоге получаем структуру при которой к каждому элементу таблицы "Wine" мы можем соотнести любое количество элементов таблицы "Grape".
Как то так.
Всем огромное спасибо!!! мой не программистский ум почему-то сопротивлялся такому простому решению
- зачем плодить лишние сущности типа - и так как опыта нет от слова СОВСЕМ, был ступор
отдельное спасибо за знание о ресурсе sqlize.online судя по всему это как regex101 для регулярок!