ER 図

erDiagram Workout ||--o{ Exercise : has Exercise ||--o{ ExerciseSet : has Workout { UUID id Date date String note Date createdAt } Exercise { UUID id String name String category Int order } ExerciseSet { UUID id Double weight Int reps Int order }

Workout

@Model
final class Workout {
    var id: UUID = UUID()
    var date: Date = Date()
    var note: String?
    var createdAt: Date = Date()

    @Relationship(deleteRule: .cascade)
    var exercises: [Exercise] = []

    init(date: Date = .now) {
        self.date = date
    }
}

Exercise

@Model
final class Exercise {
    var id: UUID = UUID()
    var name: String = ""
    var category: String = ""
    var order: Int = 0

    @Relationship(deleteRule: .cascade)
    var sets: [ExerciseSet] = []

    var workout: Workout?
}

ExerciseSet

@Model
final class ExerciseSet {
    var id: UUID = UUID()
    var weight: Double = 0
    var reps: Int = 0
    var order: Int = 0

    var exercise: Exercise?
}

マイグレーション方針

SwiftDataの@Modelは全プロパティにデフォルト値必須。新規プロパティ追加時は必ずデフォルト値を設定する。

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成