Creo que si se va a expandir este sistema para incluir más información a continuación, usted podría beneficiarse de reelaboración de su base de datos, me gustaría construirlo así:
Nombre de la tabla = Negrita
nombre de columna = en cursiva
estudiantes:
- SID (clave principal)
- Otra información sobre el estudiante
pruebas:
- TID (clave principal)
- Más información sobre la prueba de
grados de la prueba
- GID (clave principal)
- TID (clave externa)
- SID (clave externa)
- Grado
Esta estructura se basa en una idea llamada normalización de base de datos (obtendrá mucha información si la busca en google).A continuación, le daré un resumen parcial, pero si va a hacer mucho SQL, debería leerlo usted mismo:
Lo primero que debe saber es que una clave principal es solo un identificador único, es no suele ser parte de la información (sin embargo, dado que es única, cada dato debe tener un valor diferente para su clave principal), y una clave externa es una forma de referenciar una fila en una tabla desde una fila en otra tabla, utilizando el clave: por ejemplo, aquí la clave externa SID en cada calificación hace referencia a un solo alumno, según su clave principal SID.
p. Ej. el alumno uno tiene SID 1 y todas sus pruebas tienen 1 en la columna SID. lo mismo para el estudiante 2, 3, 4, y así sucesivamente.
La idea básica de normalizar, es que todos los datos únicos se almacenan solo una vez y luego se referencian en los otros lugares que lo usan (Si observa cómo se estructuran las claves en el ejemplo, se almacena toda la información del estudiante en una tabla y luego se hace referencia en sus calificaciones de prueba, en lugar de duplicarse en cada grado).
Para recuperar lo que quiere de estas tablas que yo usaría este (su escrito en PHP):
$sql = 'SELECT * FROM Tests ORDER BY TID';
$tempresult = mysql_query($sql);
while($temprow = mysql_fetch_array($tempresult)){
echo $temprow['TID'];
}
$sql = 'SELECT * FROM Students';
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo '\n'.$row['SID'];
$sql = 'SELECT * FROM Grades WHERE SID='.$row['SID'].' ORDER BY TID';
$result2 = mysql_query($sql);
while($row2 = mysql_fetch_array($result2)){
echo ' '.$rows['Grade'];
}
}
Puede agregar formato a esto en las declaraciones de eco y también imprimir cualquiera de la información adicional que elija para agregar Si tiene preguntas, pregúnteles.
EDIT: He leído los otros, y estoy de acuerdo en que su método es probablemente superior, lo único de lo que no estoy seguro es si las tablas pivote pueden expandirse para manejar un número variable de pruebas, si puede (o no será necesario), luego sugiero su método, de lo contrario, creo que esto podría tener un lugar en su aplicación.
formatear con el botón "código" le permitirá usar una fuente de ancho fijo, ayudando a estas tablas a alinearse y ser más legible – ford