]> git.llucax.com Git - software/sercom-old.git/blob - doc/schema.sql
4d4c8b57a659bb99c9ba44ce3a89f81c48dee966
[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     UNIQUE          (curso_id, nro_ejercicio, entrega)
69 );
70
71 CREATE TABLE caso_de_prueba
72 (
73     id              INTEGER PRIMARY KEY,
74     -- clave
75     ejercicio_id    INTEGER NOT NULL,
76     nombre          VARCHAR(255) NOT NULL,
77     -- campos
78     privado         BOOLEAN NOT NULL,
79     activo          BOOLEAN NOT NULL DEFAULT 1,
80     parametros      VARCHAR(255),
81     codigo_retorno  INTEGER DEFAULT 0,
82     tiempo_cpu      FLOAT DEFAULT NULL,
83     UNIQUE          (ejercicio_id, nombre)
84 );
85
86 CREATE TABLE intento
87 (
88     id              INTEGER PRIMARY KEY,
89     -- clave
90     inscripto_id    INTEGER NOT NULL,
91     entrega_id      INTEGER NOT NULL,
92     numero          INTEGER NOT NULL,
93     -- campos
94     llegada         DATE NOT NULL,
95     inicio_compila  DATE,
96     fin_compila     DATE,
97     inicio_pruebas  DATE,
98     fin_pruebas     DATE,
99     compila         BOOLEAN,
100     mail_respuesta  VARCHAR(150) NOT NULL,
101     observaciones   VARCHAR(255),
102     UNIQUE          (entrega_id, inscripto_id, llegada)
103 );
104
105 CREATE TABLE correccion
106 (
107     id              INTEGER PRIMARY KEY,
108     -- clave
109     entrega_id      INTEGER NOT NULL,
110     inscripto_id    INTEGER NOT NULL,
111     -- campos
112     intento_id      INTEGER NOT NULL, -- Último intento exitoso
113     docente_id      INTEGER NOT NULL, -- Corrector
114     nota            INTEGER(2),
115     observaciones   VARCHAR(255),
116     UNIQUE          (inscripto_id, entrega_id)
117 );
118
119 CREATE TABLE prueba
120 (
121     id                  INTEGER PRIMARY KEY,
122     -- clave
123     intento_id          INTEGER NOT NULL,
124     caso_de_prueba_id   INTEGER NOT NULL,
125     -- campos
126     inicio              DATE NOT NULL,
127     fin                 DATE,
128     pasada              BOOLEAN,
129     observaciones       VARCHAR(255),
130     UNIQUE              (intento_id, caso_de_prueba_id)
131 );
132
133 -- vim: set et sw=4 ts=4 sts=4 :