## School: students, courses, enrollments and grades
Student @Students order="lastName"
firstName d r / lastName d r
studentNumber ds r
birthDate date r
gradeLevel GradeLevel ds r
guardian Guardian
Guardian @Students order="lastName"
firstName d r / lastName d r
phone r
email
GradeLevel @Configuration order="position"
name d r
position integer r
Teacher @Staff order="lastName"
firstName d r / lastName d r
email r
Course @Academic order="name"
name d r
gradeLevel GradeLevel ds r
teacher Teacher ds
capacity integer
enrolledCount integer ds formula="(SELECT COUNT(*) FROM enrollment WHERE enrollment.course = id)"
Enrollment @Academic order="id desc"
student Student d r
gradeLevel GradeLevel transient hidden
course Course d r subset="forGradeLevel" subsetparams="gradeLevel"
enrolledOn date ds default="now"
finalGrade double ds
passed boolean ds calculated="finalGrade >= 6"
RecordGrades @ transient
enrollments Enrollment set fixed
finalGrade double r