Verander uw DB-ontwerp niet tijdens runtime, maar ontwerp het zodanig dat u de gegevens verandert, niet de structuur.
Je zou twee tafels kunnen hebben. Eentje genaamd Student
met kolommen rollno
en name
, misschien PK op rollno
als het uniek is.
Neem dan een andere tabel genaamd Thing
(elke geschikte naam, maar ik weet niet waar uw gegevens over gaan) met drie kolommen when
(datetime), value
(elke geschikte naam) (CHAR(1)) en student
(zelfde type als rollno
).
Definieer PK over beide when
en value
om ervoor te zorgen dat elke student slechts één waarde per datum heeft. Definieer een FK van Thing.student
naar Student.rollno
. Nu zorgt uw DB ervoor dat uw gegevens (meestal) consistent blijven.
Definieer indices afhankelijk van uw behoeften aan selecties, invoegingen en updates over de verschillende kolommen.
Voeg vervolgens beide tabellen samen om het gewenste resultaat te krijgen, bijvoorbeeld
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(Ik ben niet zeker van het mysql-dialect, dus misschien zijn er wat meer aanhalingstekens nodig. Voel je vrij om te bewerken.)