```mermaid erDiagram Exercise 1 .. 0+ Equipment : uses Exercise 1 -- 0+ WorkoutItem : "provides data for" Workout 1 .. 0+ WorkoutItem : collects Workout 1 .. 0+ ViewModel : "provides data for" WorkoutItem 1 -- 1 WorkoutSessionItem : "provides data for" WorkoutSession 1 -- 1+ WorkoutSessionItem : collects ViewModel 1 -- 1+ WorkoutSession : "creates, starts" Exercise { string name Equipment[] equipment } Workout { string name } WorkoutSession { Workout workout time workoutSessionDuration } WorkoutItem { Exercise exerciseData int plannedReps double plannedValue } WorkoutSessionItem { WorkoutItem exerciseData int actualReps double actualValue } ViewModel { Workout workout WorkoutSession workoutSession } ```