Таблицы отношений прямого инженера MySQL Workbench

Я использовал инструмент Forward Engineer в MySQL Workbench для создания базы данных на основе введенных таблиц. Я смог заполнить свои таблицы, такие как "Жители деревни", "Рыба" и "Предметы", для базы данных, которую я строю вокруг игры Stardew Valley. Однако, когда я связал таблицы в диаграмме ER, он создал новые таблицы, основанные на отношениях, таких как Cooking_Has_Fish, потому что во многих рецептах можно использовать много рыбы, а во многих рецептах можно использовать много рыбы. Но, как только я заполнил таблицы Cooking и Fish, в сгенерированной таблице Cooking_Has_Fish ничего не было. Я пытаюсь понять, как эта таблица функционирует или как ее можно использовать, или нужно ли ее заполнять, и я что-то пропустил.

Спасибо за прочтение.

1 ответ

Решение

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

Если у тебя есть recipe_id определение получателей и fish_id идентифицируя рыб, то Cooking_Has_Fish стол будет иметь по крайней мере recipe_id и fish_id поле.

Если вы хотите общаться fish and chipsrecipe_id 1) с cod (fish_id будучи 2), то вы бы сделали следующую вставку:

insert into Cooking_Has_Fish (`recipe_id`, `fish_id`) values (1,2)

Это означает, что треска необходима для "рыбы с жареным картофелем". Вы можете добавить дополнительные поля в таблицу ассоциации, например, сколько трески вам нужно для рыбы и чипсов.

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

Другие вопросы по тегам