rendered paste bodySCHEMA UniversitySystem;
TYPE level = INTEGER;
WHERE
level_min: SELF>= 1;
level_max: SELF<= 3;
END_TYPE;
TYPE credits = INTEGER;
WHERE
credits: SELF>= 0;
END_TYPE;
ENTITY university;
university_name: STRING;
degrees: LIST[10:10] OF degree_programme;
students: SET[0:?] OF student;
END_ENTITY;
ENTITY degree_programme;
degree_title: STRING;
compulsory_course_modules: SET[1:?] OF course_module;
optional_course_modules: SET[0:?] OF course_module;
UNIQUE
unique_title: degree_title;
END_ENTITY;
ENTITY course_module;
course_title: STRING;
credits: INTEGER;
course_level: level;
students: SET[0:?] OF student;
UNIQUE
unique_title: course_title;
END_ENTITY;
ENTITY student;
year: level;
surname: STRING;
forename: STRING;
belongs_to: university;
studies: degree_programme;
takes: SET[1:?] OF course_module;
INVERSE
course_module_level : course_module FOR course_level;
WHERE
valid: year = course_module_level;
END_ENTITY;
END_SCHEMA;