Не променяйте дизайна на БД по време на изпълнение, но го проектирайте по начин, който ще промени данните, а не структурата.
Може да имате две маси. Единият се нарича Student
с колони rollno
и name
, може би PK на rollno
ако е уникален.
След това има друга таблица, наречена Thing
(всяко подходящо име, но не знам за какво са вашите данни) с три колони when
(дата и час), value
(всяко подходящо име) (CHAR(1)) и student
(същият тип като rollno
).
Дефинирайте PK и върху двете when
и value
за да се гарантира, че всеки ученик има само една стойност на дата. Дефинирайте FK от Thing.student
до Student.rollno
. Сега вашата DB се грижи за поддържането на вашите данни (предимно) последователни.
Дефинирайте индекси в зависимост от вашите нужди от избори, вмъквания и актуализации в различните колони.
След това за заявка свържете двете таблици, за да получите желания резултат, напр.
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(Не съм сигурен за диалекта на mysql, така че може би са необходими още няколко кавички. Моля, не се колебайте да редактирате.)