Mysql y gestor calificaciones

38 views
Skip to first unread message

xhaman

unread,
Feb 25, 2009, 4:07:11 PM2/25/09
to Karamelo
Que tranza banda
Espero que esto todavía funcione

Acabo de subir aqui el SqlScript de Karamelo que hice para
trikitrakes osea la 0.3 y seguramente repleto de errores esta además
algunas funciones que posgres tiene y mysql no o de modo diferente
pues no las complete cabal, además me faltaron los Índices, También
subí el archivo de mysql workbenck para que puedan ver como me quedo
el diagrama E-R que pueden bajar aquí http://dev.mysql.com/downloads/workbench/5.1.html
(En debian me funciona perfecto)

Yo creo que si quieren si se puede dar mantenimiento a Karamelo con
mysql también, no lo veo tan dificil, aunque la verdad ahora despues
de la migrada veo la superioridad de Postgres,

Otra cosa yo habia pensado añadirle a Karamelo algo así como un gestor
escolar, no se, tal vez ese no sea el objetivo de karamelo, aun así
trabajo en la propuesta
y agregando un
--Gestor de calificaciones (reportes , boletas, historial de calif..)
--Calendario escolar
--Horarios

Agregaria unas cuantas tablas así:


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) ON DELETE CASCADE,
score int NOT NULL
);


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
) ;

CREATE TABLE dates ( --Fechas calendario
id serial PRIMARY KEY,
dat date NOT NULL,
title varchar(80) NOT NULL,
text varchar(180)
) ;

CREATE TABLE absences ( --Faltas
id serial PRIMARY KEY,
user_id int REFERENCES users (id) ON DELETE CASCADE,
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,
user_id int REFERENCES users (id) ON DELETE CASCADE,
group_id int NOT NULL references groups(id),
start time NOT NULL,
ends time NOT NULL
);


Las hice de rapido asi que seguro hay correcciones pero ya stan
relacionadas con karamelo

bueno pues hay me dicen como ven pa que continúe

Thot

unread,
Feb 25, 2009, 8:03:04 PM2/25/09
to Karamelo
Se ven bien tus tablas xhaman. Nada más unas cuantas preguntas:
- Las escuelas normalmente trabajan por "bimestre", creo que eso no lo
contemplan tus tablas, solamente la nota final.
- Crearás un periodo escolar por cada materia y cada grupo?
- Posiblemente las faltas, las puedes meter cada que saques una
calificación, posiblemente puedas hacer una especialización para
separar cuando es calificación de las faltas, o poner de cierta forma
consistente la parte de las faltas-calificaciones, que normalmente se
ponen "juntas".
- Por qué enlazar usuario con el horario?, se podría obtener sabiendo
a qué grupo pertenece qué horario, de ahí puedes obtener los alumnos
que pertenecen al grupo y por lo tanto obtener el horario.

Posiblemente podríamos hacer una lista de casos de uso que tienen que
cumplir las tablas y podemos diseñar el diagrama E-R. Sería bueno
sacarlo en DIA o algún otro editor de diagramas (también workbench que
es libre). Y cubrir todos los posibles casos.

Saludos. (Yo ahorita no he tirado ni una sola línea de código a
Karamelo, pero por ahora podría apoyar con la parte del análisis en lo
que me puedo dar un tiempecillo para aprender CakePHP).

On Feb 25, 3:07 pm, xhaman <art...@zenbe.com> wrote:
> Que tranza banda
>  Espero que esto todavía funcione
>
> Acabo de subir  aqui el SqlScript de Karamelo que hice para
> trikitrakes osea la 0.3  y seguramente repleto de errores esta  además
> algunas funciones que posgres tiene y mysql no o de modo diferente
> pues no las complete cabal, además me faltaron los Índices, También
> subí el archivo de mysql workbenck para que puedan ver como me quedo
> el diagrama E-R  que pueden bajar aquíhttp://dev.mysql.com/downloads/workbench/5.1.html

xhaman

unread,
Feb 25, 2009, 9:19:49 PM2/25/09
to Karamelo

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';

Thot

unread,
Feb 26, 2009, 10:07:16 AM2/26/09
to Karamelo
Pues todavía me quedan varias dudas con tus tablas, pues si quieres
mejor le damos a los casos de uso que quieras poner, sería bueno poner
una carpeta de documentación dentro del proyecto de Karamelo, para ir
agregando ese tipo de cosas.

Sería mejor hacer el diseño de la BD solamente con el modelo E-R, para
darse una idea más general de lo que quieres cubrir.

Saludos.

aarkerio

unread,
Feb 26, 2009, 3:20:09 PM2/26/09
to Karamelo
Acabo de darlos de alta como administradores en http://beta.chipotle-software.com
que es el sitio que estamos usando para el desarrollo de la 0.4
(Pulparindo).

Al ser administradores pueden ver en el panel de control las
herramientas de la parte inferior que no están disponibles para
profesores.

El script de Xhaman está chido, lo instalé en Mysql 5.0 y ahorita
estoy corriendo Karamelo con mysql usando cakephp-instaweb y funciona
bien.

Creo que tiene muchas ventajas lo que está haciendo xhaman de dar
soporte a Mysql (para mucha gente es su DB favorita) y mucha gente que
no tiene experiencia en PostgreSQL instalaría el programa.

Pensando en empezar a dar soporte a Mysql más "en forma" he agregado
el método getDbKind() en:

http://trac.chipotle-software.com/karamelo/browser/trunk/app/app_controller.php

Al estar en el archivo app_controller.php este método está disponible
en todos los controladores y componentes, por ejemplo lo de la función
RANDOM en el componente portal.php ya funciona:

$dbkind = $this->controller->getDbKind();

if ($dbkind == 'PGSQL'):
$order = 'RANDOM()'; // postgresql
else:
$order = 'RAND()'; // MySQL
endif;

Al fin que sólo son tres o cuatro cosas donde se usan funciones de
PostgreSQL, todo lo demás es SQL estándard.

Lo de la documentación de Karamelo la estamos poniendo en:

http://trac.chipotle-software.com/karamelo/wiki/TitleIndex

En eso estamos trabajando bauer, s1m0, bourne y yo, si no tienen
cuenta en Trac (que es la misma que la de SVN), mandenme un correo.

Voy a comer y ahorita le sigo.

aarkerio

unread,
Feb 26, 2009, 3:23:21 PM2/26/09
to Karamelo
Ah por cierto yo no sé cómo funciona el motor de búsqueda de Mysql, en
PostgreSQL se crea el indexado:

CREATE INDEX lessons_idx ON lessons USING gin(to_tsvector('spanish',
body));

Que hace la búsqueda más rápida pues sólo busca en esos índices.

Eso habría que investigarlo.

On Feb 26, 2:20 pm, aarkerio <mmont...@gmail.com> wrote:
> Acabo de darlos de alta como administradores enhttp://beta.chipotle-software.com
> que es el sitio que estamos usando para el desarrollo de la 0.4
> (Pulparindo).
>
> Al ser  administradores pueden ver en el panel de control las
> herramientas de la parte inferior que no están disponibles para
> profesores.
>
> El script de Xhaman está chido, lo instalé en Mysql 5.0 y ahorita
> estoy corriendo Karamelo con mysql usando cakephp-instaweb y funciona
> bien.
>
> Creo que tiene muchas ventajas lo que está haciendo xhaman de dar
> soporte a Mysql (para mucha gente es su DB favorita) y mucha gente que
> no tiene experiencia en PostgreSQL instalaría el programa.
>
> Pensando en empezar a dar soporte a Mysql más "en forma" he agregado
> el método getDbKind()  en:
>
> http://trac.chipotle-software.com/karamelo/browser/trunk/app/app_cont...

xhaman

unread,
Feb 26, 2009, 4:41:23 PM2/26/09
to Karamelo
mmm ahora veo por que no me salia el random de los Quotes ....
yo dudaría de mi script de Mysql si fuera tu jajaja no se por que me
queda una base de datos con mas tablas que la que me quedan con el
script de postrgres....

Pues indexado si se puede hacer, que funcione como en postgres eso no
lo se,para eso ahora leo esto

http://dev.mysql.com/doc/refman/5.0/es/create-index.html
http://www.howtodothings.com/es/ordenadores-e-internet/c%C3%B3mo-optimizar-las-consultas-mysql
http://dev.mysql.com/doc/refman/5.0/es/fulltext-search.html

después de que lo asimile bien lo intento sobre la BD

vale = ya estoy buscando (y bajando) en los espacios en el track para
la docu que sale

y efectivamente eso era lo que me faltaba entender, ya había visto lo
de los points en las tablas y suponía que de ahí ibas a sacar las
calificaciones pero no entendía (todavía) muy bien como, vale y para
lo de los reportes pues ya tengo algunas ideas, de todas maneras tons
me voy a poner a analizar bien de que va esa parte y entonces de ahí
sacar lo que dice thot algunos diagramas y eso
Reply all
Reply to author
Forward
0 new messages