Tôi cần tạo một khảo sát trong đó các câu trả lời được lưu trữ trong cơ sở dữ liệu. Tôi chỉ tự hỏi điều gì sẽ là cách tốt nhất để thực hiện điều này trong cơ sở dữ liệu, cụ thể là các bảng cần thiết. Khảo sát chứa các loại câu hỏi khác nhau. Ví dụ: các trường văn bản cho ý kiến, câu hỏi trắc nghiệm và có thể là các câu hỏi có thể chứa nhiều hơn một câu trả lời (nghĩa là kiểm tra tất cả những gì áp dụng).
Tôi đã đưa ra hai giải pháp khả thi:
Tạo một bảng khổng lồ chứa các câu trả lời cho mỗi lần gửi khảo sát. Mỗi cột sẽ tương ứng với một câu trả lời từ khảo sát. tức là SurveyID, Trả lời1, Trả lời2, Trả lời3
Tôi không nghĩ rằng đây là cách tốt nhất vì có rất nhiều câu hỏi trong khảo sát này và dường như không linh hoạt nếu khảo sát thay đổi.
Một điều khác tôi nghĩ là tạo ra một bảng câu hỏi và bảng câu trả lời. Bảng câu hỏi sẽ chứa tất cả các câu hỏi cho khảo sát. Bảng câu trả lời sẽ chứa các câu trả lời riêng từ khảo sát, mỗi hàng được liên kết với một câu hỏi.
Một ví dụ đơn giản:
tblSurvey : SurveyID
tblQuestion : Câu hỏi, Khảo sát , Loại câu hỏi, Câu hỏi
tblAnswer : Trả lời , UserID , Câu hỏi , Trả lời
tblUser : UserID, Tên người dùng
Vấn đề của tôi với điều này là có thể có hàng tấn câu trả lời sẽ làm cho bảng Trả lời khá lớn. Tôi không chắc điều đó thật tuyệt vời khi nói đến hiệu suất.
Tôi đánh giá cao bất kỳ ý tưởng và đề xuất.