--S8/ Auto-avaliacao

CREATE TABLE Materias
(
	codigo		  INTEGER CONSTRAINT materias_pk PRIMARY KEY,
	nome		  VARCHAR2(80) CONSTRAINT materias_nome_nn NOT NULL,
	disciplina	  VARCHAR2(8) CONSTRAINT materias_disciplina_fk REFERENCES Disciplinas(codigo),
	activo		  CHAR(1) CONSTRAINT materias_activo_ck CHECK (activo IN ('S','N'))
);

CREATE TABLE GrausDificuldade
(
	sigla		  VARCHAR2(8) CONSTRAINT grausDificuldade_pk PRIMARY KEY,
	nome		  VARCHAR2(80) CONSTRAINT grausDificuldade_nome_nn NOT NULL
);

CREATE TABLE TiposResposta
(
	sigla		  VARCHAR2(8) CONSTRAINT tiposResposta_pk PRIMARY KEY,
	nome		  VARCHAR2(80) CONSTRAINT tiposResposta_nome_nn NOT NULL
);

CREATE TABLE Perguntas
(
	codigo		  INTEGER CONSTRAINT perguntas_pk PRIMARY KEY,
	conteudo	  VARCHAR2(4000) CONSTRAINT perguntas_conteudo_nn NOT NULL,
	tipoResposta	  VARCHAR2(8)CONSTRAINT perguntas_tipoResposta_fk REFERENCES TiposResposta(sigla),
	duracao		  NUMBER(4,1),
	materia		  INTEGER CONSTRAINT perguntas_materia_fk REFERENCES Materias(codigo),
	grausDificuldade  VARCHAR2(8) CONSTRAINT perguntas_grausDificuldade_fk REFERENCES GrausDificuldade(sigla),
	autor		  VARCHAR2(8) CONSTRAINT perguntas_autor_fk REFERENCES Docentes(codigo),
	referencias	  VARCHAR2(256),
	activo		  CHAR(1) CONSTRAINT perguntas_activo_ck CHECK (activo IN ('S','N'))
);

CREATE TABLE Respostas
(
	codigo		  INTEGER CONSTRAINT respostas_pk PRIMARY KEY,
	conteudo	  VARCHAR2(4000) CONSTRAINT respostas_conteudo_nn NOT NULL,
	pergunta	  INTEGER CONSTRAINT respostas_pergunta_fk REFERENCES Perguntas(codigo),
	autor		  VARCHAR2(8) CONSTRAINT respostas_autor_fk  REFERENCES Docentes(codigo),
	validade	  CHAR(1) CONSTRAINT respostas_activo_ck CHECK (validade IN ('S','N'))
);

CREATE TABLE CorreccaoPerguntas
(
	codigo		  INTEGER CONSTRAINT correccaoPerguntas_pk PRIMARY KEY,
	pergunta	  INTEGER CONSTRAINT correccaoPerguntas_pergunta_fk REFERENCES Perguntas(codigo),
	aluno             VARCHAR2(8) CONSTRAINT correccaoPerguntas_aluno_fk REFERENCES Alunos(codigo),
	resposta	  VARCHAR2(4000),
	data		  DATE,
	correccao	  VARCHAR2(4000),
	nota		  NUMBER(4,1)
);

CREATE TABLE EstatisticasAutoavaliacao
(
	codigo		  INTEGER CONSTRAINT estatisticasAutoavaliacao_pk PRIMARY KEY,
	aluno             VARCHAR2(8) CONSTRAINT estatisticasAutoaval_aluno_fk  REFERENCES Alunos(codigo),
	pergunta	  INTEGER CONSTRAINT estatisticasAutoav_pergunta_fk REFERENCES Perguntas(codigo),
	nota		  NUMBER(4,1) CONSTRAINT estatisticasAutoavalia_nota_nn NOT NULL,
	data		  DATE CONSTRAINT estatisticasAutoavalia_data_nn NOT NULL
);

COMMIT;
