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