Как сделать так, чтобы эти отношения многих со многими работали? - PullRequest
0 голосов
/ 17 марта 2019

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

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

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

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

Единственный способ, которым я могу изобразить это как:

id: 1, name: 'my first workout', exercises: [array of objects]

Есть идеи, как будет выглядеть эта схема?

1 Ответ

0 голосов
/ 17 марта 2019

Для отношений «многие ко многим» у вас должна быть третья таблица, в которой хранятся отношения и которая называется соединительной таблицей .Например, в вашем случае каждая строка будет иметь exerciseID и workoutID, что означает, что две (упражнение и тренировка) связаны.

Так, например, в этой таблице может быть много строк сexerciseID = 1 (разные workoutID с) и много строк с workoutID = 5 (разные exerciseID с), следовательно, многие ко многим.

Дополнительные пояснения


КаждаяСтрока таблицы соединений имеет три поля:

  • Свой собственный идентификатор (поскольку в базе данных рекомендуется, чтобы у каждой таблицы был свой идентификатор, независимо от того, какой)
  • ExerciseID
  • WorkoutID

Например, скажем, у нас есть распределительная таблица, подобная этой:

ID      ExerciseID    WorkoutID
-------------------------------
1000    12            5
1001    12            6
1002    12            9
1003    12            12
1004    12            27
1005    13            2
1006    13            6
1007    13            9

, что означает:

  • номер упражнения 12 имеет тренировки [5, 6, 9, 12, 27]
  • номер упражнения 13 имеет тренировки [2, 6, 9]

Но как создать эту таблицу:

Либо у вас есть пользовательский интерфейс, который позволяет вашим пользователям добавлять, редактировать и удалять упражнения и тренировки, либо вы делаете это самостоятельно.В любом случае, любой, кто определяет упражнение или тренировку, должен знать, как они связаны!Таким образом, они также могут определить это отношение как строку в соединительной таблице

...