@astar7922

Как правильно сделать структуру базы данных?

Всем привет, подскажите как правильно делаются следующие вещи:
таблица 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 и как понимаю там нельзя хранить такие структуры данных
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
Masterbeard
@Masterbeard
Люблю бывать там, куда Макар телят не гонял.
Вы хотите сказать что 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".
Как то так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Обычная задача, делаем промежуточную таблицу grapes_for_wine (wine_id, grape_id).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы