Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/05/2008, 03:47
Merodeador
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: ¿Uso una tabla o dos?

Hola Jurena, muchas gracias por tu respuesta, creo que no has entendido bien lo que planteo, pero es dificil de explicar o de mostraros el esquema que tengo montado. Voy a intentar explicar lo que tengo montado, aunque es un poco complicado.

Tengo por un lado una tabla grupo_alumnos con tres campos, idGrupoLaboratorio, idUsuario e idGrupoAlumno. Si los alumnos no están agrupados, idGrupoAlumno es NULL, si están agrupados tienen el mismo código.

Código:
CREATE TABLE `grupo_alumnos` (
  `idUsuario` int(10) unsigned NOT NULL,
  `idGrupoLaboratorio` int(10) unsigned NOT NULL,
  `idGrupoAlumnos` int(10) unsigned default NULL,
  PRIMARY KEY  (`idUsuario`,`idGrupoLaboratorio`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Por otro lado tengo la tabla enunciados, contiene todos los campos necesarios de info general de la práctica:
Código:
 CREATE TABLE `enunciados` (
  `idEnunciado` int(10) unsigned NOT NULL auto_increment,
  `idGrupoLaboratorio` int(10) unsigned NOT NULL,
  `titulo` varchar(45) NOT NULL,
  `fechaTope` date NOT NULL,
  `directorio` varchar(150) NOT NULL,
  `validar` char(1) character set latin1 NOT NULL,
  `url` varchar(200) default NULL,
  PRIMARY KEY  (`idEnunciado`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Luego tengo la tabla prácticas:

Código:
CREATE TABLE `practicas` (
  `idEnunciado` int(10) unsigned NOT NULL,
  `idUsuario` int(10) unsigned NOT NULL,
  `fechaEntrega` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `fichero` varchar(45) NOT NULL,
  `copiada` varchar(25) default NULL,
  `calificacion` varchar(5) default NULL,
  `anotacion` varchar(45) default NULL,
  PRIMARY KEY  (`idEnunciado`,`idUsuario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Esta tabla almacena la información de las prácticas entregadas. Lo que no se que es más correcto hacer es:

- Las prácticas se entregan Online, por lo que con que la entregue un usuario vale, si meto el campo calificación en esta tabla,tendría que crear registros repetidos para usuarios del mismo grupo, repetidos en cuanto a nombre de fichero, fecha de entrega etc... Y lo que planteaba es guardar en esta tabla las prácticas entregadas con la información de usuario que entrega, y en otra tabla guardar solo las calificaciones:

Código:
CREATE TABLE `calificaciones` (
  `idEnunciado` int(10) unsigned NOT NULL,
  `idUsuario` int(10) unsigned NOT NULL,
  `calificacion` varchar(5) default NULL,
  PRIMARY KEY  (`idEnunciado`,`idUsuario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Espero haberme explicado mejor ahora,

muchas gracias