Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/04/2013, 06:25
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: cumpliendo la 1FN (atomicidad)

No es mas de lo mismo.

Resultados
ID FK referenciando usuarios
dia
pos
<- PK (ID,dia)

ID------------dia------------pos
1---------------1--------------12
1---------------2--------------3
1---------------3--------------11
2---------------1--------------17
2---------------2--------------6
2---------------3--------------16
3---------------1--------------14
3---------------2--------------4
3---------------3--------------7

Con la información que das la forma correcta es esta.

Cita:
El ID pierde su unicidad
Esa tabla no es de usuarios si no de resultados, puedes agregar un idResultado (autoinc) y usarlo como PK mas un indice único sobre ID+Dia, o usar la PK compuesta ID+Dia, ya tenemos la unicidad perdida. Más una tabla de usuarios aparte donde el id sea único (PK).

Usuarios
ID PK
nombre
....otros

Cita:
el nº de registros se haria brutal
No es un dato relevante a nivel teórico. Otra cosa es que tu equipo no este dimensionado para el volumen de datos a manejar.

Hay dos formas de salvar la situació,
1. crear indices, la PK compuesta lo es por definición, los indices permiten trabajar con muchos registros de forma rápida. No puedo decirte que indices crear puesto que no se que vas a hacer con los datos pero con esos campos no hay muchos mas.
2. crear procesos de mantenimiento de la bbdd que eliminen los resgistros no necesarios o que los guarden en una tabla resultados historicos, de tal forma que la tabla operativa solo tenga los registros imprescindibles.

He dicho
Cita:
Con la información que das la forma correcta es esta.
Si explicas como se calcula o de donde sale esa "posición" quizas encontrariamos otras formas de hacerlo.

En cualquier caso tu error es intentar resolverlo en una sola tabla.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 12/04/2013 a las 06:36