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
    user          UserId
    degree        StudyDegreeId
    field         StudyTermsId
    type          StudyFieldType
    semester      Int
    -- UniqueUserSubject user degree field -- There exists a counterexample
StudyDegree
    key           Int
    shorthand     Text Maybe
    name          Text Maybe
    Primary key
StudyTerms
    key           Int
    shorthand     Text Maybe
    name          Text Maybe
    Primary key
