Đừng thay đổi thiết kế DB của bạn trong thời gian chạy, nhưng hãy thiết kế nó theo cách mà bạn sẽ thay đổi dữ liệu chứ không phải cấu trúc.
Bạn có thể có hai bảng. Một người được gọi là Student
với các cột rollno
và name
, có thể PK trên rollno
nếu nó là duy nhất.
Sau đó, có một bảng khác được gọi là Thing
(bất kỳ tên phù hợp nào, nhưng tôi không biết dữ liệu của bạn là gì) với ba cột when
(datetime), value
(bất kỳ tên phù hợp nào) (CHAR (1)) và student
(cùng loại với rollno
).
Xác định PK trên cả when
và giá trị value
để đảm bảo rằng mỗi học sinh chỉ có một giá trị mỗi ngày. Xác định FK từ Thing.student
tới Student.rollno
. Giờ đây, DB của bạn đảm nhận việc giữ cho dữ liệu của bạn (hầu hết) nhất quán.
Xác định các chỉ số tùy thuộc vào nhu cầu của bạn về các lựa chọn, chèn và cập nhật trên các cột khác nhau.
Sau đó, để truy vấn, hãy kết hợp cả hai bảng để nhận được kết quả mong muốn, ví dụ:
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(Tôi không chắc về phương ngữ mysql, vì vậy có thể cần thêm một số trích dẫn. Vui lòng chỉnh sửa.)