Non modificare il design del tuo DB in fase di esecuzione, ma progettalo in modo da modificare i dati e non la struttura.
Potresti avere due tavoli. Uno chiamato Student
con colonne rollno
e name
, forse PK su rollno
se è unico.
Quindi avere un'altra tabella chiamata Thing
(qualsiasi nome adatto, ma non so di cosa trattano i tuoi dati) con tre colonne when
(data/ora), value
(qualsiasi nome adatto) (CHAR(1)) e student
(stesso tipo di rollno
).
Definisci PK su entrambi when
e value
per garantire che ogni studente abbia un solo valore per data. Definisci un FK da Thing.student
a Student.rollno
. Ora il tuo DB si occupa di mantenere i tuoi dati (per lo più) coerenti.
Definisci indici in base alle tue esigenze di selezioni, inserimenti e aggiornamenti sulle diverse colonne.
Quindi, per eseguire query, unisci entrambe le tabelle per ottenere il risultato desiderato, ad es.
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(Non sono sicuro del dialetto mysql, quindi forse sono necessarie altre virgolette. Non esitare a modificare.)