jaja tienes razón además me equivoque con el script y puse el primero
que estaba haciendo este es el bueno.... según jaja
lo de los bimestres lo había planeado con la tabla periodos así
podían poner: parcial, periodo, bimestre, o lo que sea solo que en
el script anterior no estaba la relación
y creo que tienes razón y no sea necesario hacer periodos por cada
materia o cada grupo y que eso se defina desde antes
En los de las faltas igual ja apenas me doy cuenta que mi tabla de
grades y absenses son prácticamente las mismas pero con eso de la
normalización la dividí, tal vez solo agregue el campo absenses a
grades
y lo del horario también fue por que no era el script
Gracias por las observaciones y si ya trabajo igual en el casos de uso
(creo que eso lo debí de hacer primero) lo que pasa que ya había echo
algo presido y lo saque de ahí
Saludos .... abajo el script
PD. todavia me faltan unas tablas como rango de calificación, los
points que se manejan en algunas tablas de karamelo y eso pero todavia
estoy pensando
CREATE TABLE periods ( --Periodo escolar
id serial PRIMARY KEY,
group_id int NOT NULL references groups(id),
subject_id int REFERENCES subjects (id) ON DELETE CASCADE,
title varchar(20) NOT NULL,
start_date date NOT NULL,
end_date date NOT NULL
) ;
COMMENT ON TABLE periods IS 'Periodo escolar , no ciclo';
CREATE TABLE grades ( -- o scores como sea Tabla calificaciones
id serial PRIMARY KEY,
user_id int REFERENCES users (id) ON DELETE CASCADE,
group_id int NOT NULL references groups(id),
subject_id int REFERENCES subjects (id),
period_id int REFERENCES periods (id),
score int NOT NULL
);
COMMENT ON TABLE grades IS 'Calificaciones por materia';
CREATE TABLE dates ( --Fechas calendario
id serial PRIMARY KEY,
dat date NOT NULL,
title varchar(80) NOT NULL,
text varchar(180)
) ;
COMMENT ON TABLE dates IS 'Tabla para calendario con jscalendar';
CREATE TABLE absences ( --Faltas
id serial PRIMARY KEY,
user_id int REFERENCES users (id) ON DELETE CASCADE,
group_id int NOT NULL references groups(id),
period_id int NOT NULL references periods (id),
subject_id int REFERENCES subjects (id) ON DELETE CASCADE,
total int NOT NULL DEFAULT 0
) ;
CREATE TABLE timetables ( --Horarios
id serial PRIMARY KEY,
subject_id int REFERENCES subjects (id) ON DELETE CASCADE,
group_id int NOT NULL references groups(id),
start time NOT NULL,
ends time NOT NULL
);
COMMENT ON TABLE timetables IS 'Tabla para Horario Escolar';