One method that will work with any relational DBMS becomes obvious if you use the language of relations.
"I have these exercises and those muscles. How can I form a relationship between them to show which muscles are worked by an exercise and which exercises works each muscle." Then when you explain that "each exercise may work several muscles and each muscle may be worked by several exercises" then the answer jumps right out at you.
A standard intersection or junction table:
create table Exercises(
ID int not null,
Name varchar( 16 ) not null, -- 'Bench Press', 'Chest Fly', etc.
...,
constraint PK_Exercieses primary key( ID )
);
create table Muscles(
ID int not null,
Name varchar( 16 ) not null, -- 'Pectorals', 'Biceps', etc.
...,
constraint PK_Muscles primary key( ID )
);
create table ExerciseToMuscle(
ExerciseID int not null,
MuscleID int not null,
...,
constraint PK_ExerciseToMuscle primary key( ExerciseID, MuscleID ),
constraint FK_ExerciseToMuscle_Exercise foreign key( ExerciseID )
references Exercises( ID ),
constraint FK_ExerciseToMuscle_Muscle foreign key( MuscleID )
references Muscles( ID )
);
You can add attributes to the intersection table to describe the relationship. Such an attribute might be Intensity, to show just how much an exercise "hits" the muscle.
ExerciseID MuscleID Intensity
17 4 5
17 3 10
This would show that Exercise 17 hits muscle 3 with a maximum "burn" of 10, but muscle 4 with only a 5. This allows you to answer questions like "Which exercises are best for my quads?"