Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Voy bien encaminado?

Estas en el tema de Voy bien encaminado? en el foro de Mysql en Foros del Web. Buenos días, Estoy ayudando a un amigo que ha montado una academia. Me a pedido si puedo hacerle una web para uso interno donde tenga ...
  #1 (permalink)  
Antiguo 12/09/2011, 05:56
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 8 años, 2 meses
Puntos: 0
Pregunta Voy bien encaminado?

Buenos días,

Estoy ayudando a un amigo que ha montado una academia.
Me a pedido si puedo hacerle una web para uso interno donde tenga los datos de los alumnos y las puntuaciones de los simulacros que van haciendo periódicamente.
Además, lo que quiere es que los propios alumnos suban sus simulacros a la web.

A mí se me ha ocurrido lo siguiente:
Tener un sistema de autentificación que dependiendo de los "privilegios" vaya a un apartado u otro, es decir si es profesor o administración, pueda ver todos los datos de todos los alumnos, si es alumnos solamente pueda ver sus datos y pueda rellenar los simulacros y digo rellenar porque los simulacros los harán en papel, solamente subirán los datos para tenerlos guardados y en un futuro hacer estadísticas.


Para ello he creado estas 3 tablas:


Código MySQL:
Ver original
  1. CREATE TABLE alumnos (
  2. idAlumno INT NOT NULL,
  3. nombre VARCHAR(30),
  4. apellido1 VARCHAR(30),
  5. apellido2 VARCHAR(30),
  6. dni VARCHAR(9),
  7. direccion VARCHAR(30),
  8. sexo CHAR(1) CHECK (sexo IN ('H','M')),
  9. curso VARCHAR(30),
  10. foto  text,
  11. PRIMARY KEY (idAlumno)
  12. );
  13.  
  14.  
  15. CREATE TABLE simulacros (
  16. idalumno INT NOT NULL,
  17. idsimulacro INT,
  18. pregunta VARCHAR(30),
  19. respuesta VARCHAR(30),
  20. correcta VARCHAR(30),
  21. PRIMARY KEY (idalumno),
  22. FOREIGN KEY (idalumno) REFERENCES alumnos(idalumno)
  23. );
  24.  
  25.  
  26. CREATE TABLE login(
  27. loginid varchar(20) not null,
  28. login varchar(20),
  29. permiso varchar(20),
  30. primary key(loginid));

Creéis que con esto me valdrá?
  #2 (permalink)  
Antiguo 12/09/2011, 06:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 8 meses
Puntos: 574
Respuesta: Voy bien encaminado?

La tabla alumnos la cambiaria por Usuarios agregando un campo perfil para diferenciar alumnos de profesores y otros. En ella agregaria los usuername y password...

Te haria falta una tabla Simulacros donde guardas preguntas y respuestas validas (definicion del ejercicio) y luego los resultados los guardaria en una tabla de relacion entre usuarios y simulacros (esta solo contendrá los id del simulacro el id del alumno el id de la pregunta y la respuesta del alumno) via querys puedes obtener el resultado del alumno y solo se guarda una vez el literal de las preguntas....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 12/09/2011, 08:29
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Voy bien encaminado?

Si te he entendido bien, esto es lo que me dices no?
No es que tenga mucha idea de Sql, esto lo estoy haciendo como favor y me esta dando unos dolores de cabeza... y eso que acabo de empezar.

Código MySQL:
Ver original
  1. CREATE TABLE alumnos (
  2. idalumno INT NOT NULL,
  3. nombre VARCHAR(30),
  4. apellido1 VARCHAR(30),
  5. apellido2 VARCHAR(30),
  6. dni VARCHAR(9),
  7. direccion VARCHAR(30),
  8. sexo CHAR(1) CHECK (sexo IN ('H','M')),
  9. curso VARCHAR(30),
  10. foto  TEXT,
  11. perfil VARCHAR(30),
  12. login VARCHAR(30),
  13. PRIMARY KEY (idalumno)
  14. );
  15.      
  16. CREATE TABLE simulacros (
  17. idsimulacro INT NOT NULL,
  18. pregunta VARCHAR(30),
  19. respcorrecta VARCHAR(30),
  20. PRIMARY KEY (idsimulacro)
  21. );
  22.  
  23. CREATE TABLE correccion (
  24. idalumno INT NOT NULL,
  25. idsimulacro INT NOT NULL,
  26. pregunta VARCHAR(30),
  27. respalumno VARCHAR(30),
  28. PRIMARY KEY (idalumno),
  29. FOREIGN KEY (idalumno) REFERENCES alumnos(idalumno),
  30. FOREIGN KEY (idsimulacro) REFERENCES simulacros(idsimulacro)
  31. );

Última edición por sinkra; 12/09/2011 a las 08:59
  #4 (permalink)  
Antiguo 13/09/2011, 02:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 8 meses
Puntos: 574
Respuesta: Voy bien encaminado?

Si pones un int que identifique la pregunta en simulacros luego en correccion no necesitas un VARCHAR(30) para la pregunta.

La PK de simulacros debería ser compuesta idSimulacro + idPregunta.

No llames alumnos a la primera tabla puesto que vas a tener usuarios que no lo son...

perfil VARCHAR(30), con un INT basta y ocupa menos espacio.

Si estas pensando es ejercicios tipo test la respuesta del alumno y la respuesta correcta también podrían ser INT.... luego te faltaría una tabla respuestas donde guardar las posibles respuestas...

respuestas
idRespuesta INT
idSimulacro INT
idPregunta INT
respuesta VARCHAR(30)
correcta BOOLEAN

si los ejercicios no son tipo test me callo.

Repasa la longitud de los VARCHAR 30 quizás no es suficiente en algunos casos...

Te recomiendo que leas sobre normalización optimización de bases de datos encontraras tutoriales a patadas en la red.... aquí se intenta resolver dudas concretas. También se puede dar alguna orientación general como he hecho.... pero la idea no es tutelar proyectos.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:45.