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