]> git.llucax.com Git - software/sercom-old.git/blob - doc/schema.sql
Hack para esquivar un bug de SQLObject.
[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      INTEGER 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     notificado      BOOLEAN NOT NULL DEFAULT 0,
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 :