]> git.llucax.com Git - software/sercom-old.git/blob - doc/schema.sql
Se ordenan las entregas rechazadas.
[software/sercom-old.git] / doc / schema.sql
1 -- Esquema de la base de datos
2
3 CREATE TABLE curso
4 (
5     id              INTEGER PRIMARY KEY,
6     -- clave
7     anio            INTEGER(4) NOT NULL,
8     cuatrimestre    INTEGER(1) NOT NULL,
9     curso           INTEGER NOT NULL,
10     -- campos
11     descripcion     VARCHAR(150),
12     UNIQUE          (anio, cuatrimestre, curso)
13 );
14
15 CREATE TABLE inscripto
16 (
17     id              INTEGER PRIMARY KEY,
18     -- clave
19     padron          INTEGER NOT NULL,
20     curso_id        INTEGER NOT NULL,
21     -- campos
22     mail            VARCHAR(150) NOT NULL,
23     activo          BOOLEAN NOT NULL DEFAULT 1,
24     UNIQUE          (padron, curso_id)
25 );
26
27 CREATE TABLE docente
28 (
29     id              INTEGER PRIMARY KEY,
30     -- clave
31     nombre          VARCHAR(150) NOT NULL,
32     -- campos
33     mail            VARCHAR(150) NOT NULL,
34     corrige         BOOLEAN NOT NULL DEFAULT 1,
35     UNIQUE          (nombre)
36 );
37
38 CREATE TABLE curso_docente
39 (
40     -- clave
41     curso_id        INTEGER NOT NULL,
42     docente_id      INTEGER NOT NULL,
43     PRIMARY KEY     (docente_id, curso_id)
44 );
45
46 CREATE TABLE ejercicio
47 (
48     id              INTEGER PRIMARY KEY,
49     -- clave
50     nombre          VARCHAR(150) NOT NULL,
51     -- campos
52     numero          INTEGER NOT NULL,
53     docente_id      INTEGER NOT NULL, -- Autor
54     UNIQUE          (nombre)
55 );
56
57 CREATE TABLE entrega
58 (
59     id              INTEGER PRIMARY KEY,
60     -- clave
61     curso_id        INTEGER NOT NULL,
62     nro_ejercicio   INTEGER NOT NULL,
63     entrega         INTEGER NOT NULL,
64     -- campos
65     ejercicio_id    INTEGER NOT NULL,
66     desde           DATE NOT NULL,
67     hasta           DATE NOT NULL,
68     finalizada      BOOLEAN NOT NULL DEFAULT 1,
69     UNIQUE          (curso_id, nro_ejercicio, entrega)
70 );
71
72 CREATE TABLE caso_de_prueba
73 (
74     id              INTEGER PRIMARY KEY,
75     -- clave
76     ejercicio_id    INTEGER NOT NULL,
77     nombre          VARCHAR(255) NOT NULL,
78     -- campos
79     privado         BOOLEAN NOT NULL,
80     activo          BOOLEAN NOT NULL DEFAULT 1,
81     parametros      VARCHAR(255),
82     codigo_retorno  INTEGER DEFAULT 0,
83     tiempo_cpu      FLOAT DEFAULT NULL,
84     UNIQUE          (ejercicio_id, nombre)
85 );
86
87 CREATE TABLE intento
88 (
89     id              INTEGER PRIMARY KEY,
90     -- clave
91     inscripto_id    INTEGER NOT NULL,
92     entrega_id      INTEGER NOT NULL,
93     numero          INTEGER NOT NULL,
94     -- campos
95     llegada         DATE NOT NULL,
96     inicio_compila  DATE,
97     fin_compila     DATE,
98     inicio_pruebas  DATE,
99     fin_pruebas     DATE,
100     compila         BOOLEAN,
101     mail_respuesta  VARCHAR(150) NOT NULL,
102     observaciones   VARCHAR(255),
103     UNIQUE          (entrega_id, inscripto_id, llegada)
104 );
105
106 CREATE TABLE correccion
107 (
108     id              INTEGER PRIMARY KEY,
109     -- clave
110     entrega_id      INTEGER NOT NULL,
111     inscripto_id    INTEGER NOT NULL,
112     -- campos
113     intento_id      INTEGER NOT NULL, -- Último intento exitoso
114     docente_id      INTEGER NOT NULL, -- Corrector
115     nota            INTEGER(2),
116     observaciones   VARCHAR(255),
117     UNIQUE          (inscripto_id, entrega_id)
118 );
119
120 CREATE TABLE prueba
121 (
122     id                  INTEGER PRIMARY KEY,
123     -- clave
124     intento_id          INTEGER NOT NULL,
125     caso_de_prueba_id   INTEGER NOT NULL,
126     -- campos
127     inicio              DATE NOT NULL,
128     fin                 DATE,
129     pasada              BOOLEAN,
130     observaciones       VARCHAR(255),
131     UNIQUE              (intento_id, caso_de_prueba_id)
132 );
133
134 -- vim: set et sw=4 ts=4 sts=4 :