-- Some comments needes
User json
    ident          (CI Text)
    authentication AuthenticationMode
    matrikelnummer Text Maybe
    email          (CI Text)
    displayName    Text
    surname        Text            -- always use: nameWidget displayName surname
    maxFavourites  Int default=12
    theme          Theme default='Default'
    dateTimeFormat DateTimeFormat "default='%a %d %b %Y %R'"
    dateFormat     DateTimeFormat "default='%d.%m.%Y'"
    timeFormat     DateTimeFormat "default='%R'"
    downloadFiles  Bool default=false
    mailLanguages  MailLanguages default='[]'
    notificationSettings NotificationSettings
    UniqueAuthentication ident
    UniqueEmail email
    deriving Show Eq Generic
UserAdmin
    user   UserId
    school SchoolId
    UniqueUserAdmin user school
UserLecturer
    user   UserId
    school SchoolId
    UniqueSchoolLecturer user school
StudyFeatures  -- Abschluss, Studiengang, Haupt/Nebenfachh und Fachsemester
    user          UserId
    degree        StudyDegreeId
    field         StudyTermsId
    type          StudyFieldType
    semester      Int
    -- UniqueUserSubject user degree field -- There exists a counterexample
StudyDegree   -- Studienabschluss
    key           Int
    shorthand     Text Maybe
    name          Text Maybe
    Primary key
StudyTerms    -- Studiengang
    key           Int
    shorthand     Text Maybe
    name          Text Maybe
    Primary key
