We move from start/end date to a period date range to represent the interval where a training take place. Besides that, new constraints are added to ensure a trainings of a user can't overlap. These constraints reflect in changeset validation.
So a training is a collection of exercises that have a description and a protocol to be followed.
With this we can represent a traning program for a user.