Exam
  course CourseId
  name ExamName
  gradingRule ExamGradingRule
  bonusRule ExamBonusRule
  occurrenceRule ExamOccurrenceRule
  visibleFrom UTCTime Maybe
  registerFrom UTCTime Maybe
  registerTo UTCTime Maybe
  deregisterUntil UTCTime Maybe
  publishOccurrenceAssignments UTCTime Maybe
  start UTCTime Maybe
  end UTCTime Maybe
  finished UTCTime Maybe -- Grades shown to students, `ExamCorrector`s locked out
  closed UTCTime Maybe -- Prüfungsamt hat Einsicht (notification)
  publicStatistics Bool
  showGrades Bool
  description Html Maybe
  UniqueExam course name
ExamPart
  exam ExamId
  name (CI Text)
  maxPoints Points Maybe
  weight Rational
  UniqueExamPart exam name
ExamOccurrence
  exam ExamId
  name ExamOccurrenceName
  room Text
  capacity Natural
  start UTCTime
  end UTCTime Maybe
  description Html Maybe
  UniqueExamOccurrence exam name
ExamRegistration
  exam ExamId
  user UserId
  occurrence ExamOccurrenceId Maybe
  time UTCTime default=now()
  UniqueExamRegistration exam user
ExamPartResult
  examPart ExamPartId
  user UserId
  result ExamResultPoints
  UniqueExamPartResult examPart user
ExamResult
  exam ExamId
  user UserId
  result ExamResultGrade
  UniqueExamResult exam user
ExamCorrector
  exam ExamId
  user UserId
  UniqueExamCorrector exam user
ExamPartCorrector
  part ExamPartId
  corrector ExamCorrector
  UniqueExamPartCorrector part corrector