Neměňte návrh DB za běhu, ale navrhněte jej tak, že změníte data, nikoli strukturu.
Můžete mít dva stoly. Jeden s názvem Student
se sloupci rollno
a name
, možná PK na rollno
pokud je jedinečný.
Pak mějte další tabulku s názvem Thing
(jakýkoli vhodný název, ale nevím, o čem jsou vaše data) se třemi sloupci when
(datetime), value
(jakýkoli vhodný název) (CHAR(1)) a student
(stejný typ jako rollno
).
Definujte PK nad oběma when
a value
aby bylo zajištěno, že každý student má pouze jednu hodnotu na datum. Definujte FK z Thing.student
na Student.rollno
. Nyní se vaše databáze stará o to, aby vaše data byla (většinou) konzistentní.
Definujte indexy v závislosti na vašich potřebách výběrů, vložení a aktualizací v různých sloupcích.
Poté pro dotazování spojte obě tabulky, abyste získali požadovaný výsledek, např.
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(Nejsem si jistý dialektem mysql, takže možná budou potřeba další uvozovky. Neváhejte je upravit.)