CREATE TABLE PUBLIC.CATEGORY( CATEGORY VARCHAR PRIMARY KEY, SORT_ORDER SMALLINT ); CREATE TABLE PUBLIC.CRITERION( CRITERION VARCHAR PRIMARY KEY, CATEGORY VARCHAR NOT NULL, DESCRIPTION VARCHAR NOT NULL, SORT_ORDER SMALLINT, WEIGHT REAL, MIN SMALLINT, MAX SMALLINT, SPECIAL BOOLEAN, CONSTRAINT FK_CRITERION_CATEGORY FOREIGN KEY(CATEGORY) REFERENCES CATEGORY(CATEGORY) ); CREATE TABLE PUBLIC.SUBMISSION( STUDENT VARCHAR PRIMARY KEY ); CREATE TABLE PUBLIC.RESULT( STUDENT VARCHAR NOT NULL, CRITERION VARCHAR NOT NULL, RESULT REAL NOT NULL, COMMENT VARCHAR, CONSTRAINT PK_RESULT PRIMARY KEY(STUDENT, CRITERION), CONSTRAINT FK_RESULT_STUDENT FOREIGN KEY(STUDENT) REFERENCES PUBLIC.SUBMISSION(STUDENT), CONSTRAINT FK_RESULT_CRITERION FOREIGN KEY(CRITERION) REFERENCES PUBLIC.CRITERION(CRITERION) ); CREATE VIEW RAWMARKS AS SELECT SUBMISSION.STUDENT as "Student" , SUM(RESULT) as "Raw Mark" FROM SUBMISSION LEFT OUTER JOIN RESULT ON SUBMISSION.STUDENT = RESULT.STUDENT GROUP BY SUBMISSION.STUDENT ORDER BY SUBMISSION.STUDENT