Hướng dẫn dùng wuiz trong PHP
Đây cũng là dự án đầu tiên tôi làm bằng PHP / MySQL khoảng 8 năm trước. Giải pháp đầu tiên của bạn là viết mã cơ sở dữ liệu để khớp chính xác với biểu mẫu của bạn. Vì vậy, bạn muốn ghi lại người dùng và các lần gửi câu đố, vì vậy nó sẽ trông giống như sau:
Vì vậy, đây chỉ là ghi lại mức tối thiểu: người dùng và các bài kiểm tra gửi. Tôi đã đưa ra các loại câu trả lời mà bạn sẽ phải làm cụ thể cho bài kiểm tra thực tế của mình. Tôi cũng đã thực hiện một phản hồi
từ khóa người dùng và thời điểm họ gửi nó; bạn có nhiều khả năng sử dụng phím thay thế ( Ngay lập tức có một vi phạm 1NF: Vì vậy, điều tiếp theo bạn sẽ nhận thấy là thực sự một bài
kiểm tra là một tập hợp các câu hỏi, mỗi câu hỏi có một tập hợp các câu trả lời có thể có. Và sau đó, việc gửi biểu mẫu thực sự liên quan đến một tập hợp các câu trả lời đã chọn cho các câu hỏi của họ, trên một biểu mẫu câu hỏi cụ thể, bởi một người dùng câu hỏi cụ thể. Điều này nghe có vẻ giống như một mối quan hệ bốn chiều: người dùng, câu đố, câu hỏi, câu trả lời. Bạn có thể loại bỏ một trong những câu hỏi đó nếu bạn không ngại lặp lại các câu hỏi trên các câu đố khác nhau, nhưng để hoàn
thiện, chúng ta hãy đi tiếp con đường này. Thay thế
Chúng tôi thực sự không có bất kỳ siêu dữ liệu đặc biệt nào cho một bài kiểm tra, vì vậy nó chỉ là một cái tên. Vì vậy, bây giờ bạn cần một mối quan hệ một-nhiều từ câu hỏi đến câu trả lời và từ câu đố đến câu hỏi.
Phần khó khăn, như đã đề cập ở trên, là mối quan hệ thứ tự cao hơn giữa người dùng và người gửi biểu mẫu, và liên kết từ câu hỏi biểu mẫu đến câu trả lời của người dùng. Tôi đã quyết định tách điều này thành hai bảng để tránh một số lặp lại.
Điều này được bình thường hóa khá tốt tại thời điểm này. Bạn có thể thấy rằng nó cũng sẽ khó hơn một chút để truy vấn. Để nhận được tất cả các câu hỏi cho một bài kiểm tra, bạn sẽ phải tham gia từ bài kiểm tra đến các câu hỏi. Bạn có thể tham gia từ đó vào các câu trả lời để thực hiện một truy vấn lớn để lấy tất cả dữ liệu bạn cần để xây dựng biểu mẫu (cùng với việc phải thực hiện thêm xử lý hậu kỳ) hoặc bạn có thể nhấn vào cơ sở dữ liệu một lần nữa cho mỗi câu hỏi và thực hiện xử lý hậu kỳ ít hơn. Tôi có thể tranh luận theo cả hai cách. Để nhận được câu trả lời của tất cả một người dùng cụ thể, bạn sẽ phải chọn từ user_submissions với ID bài kiểm tra và tên người dùng vào bảng submit_answer cho câu hỏi và câu trả lời mà người dùng đã chọn. Vì vậy, truy vấn sẽ nhanh chóng trở nên thú vị. Bạn sẽ mất đi nỗi sợ hãi khi tham gia, nếu bạn có. Tôi hy vọng điều này sẽ không làm bạn mất cơ sở dữ liệu quan hệ quá nhiều; bằng cách làm này, trên thực tế, bạn đang thực hiện một mô hình quan hệ bên trong mô hình quan hệ, mặc dù là một dạng hạn chế. Tôi nhận ra rằng sử dụng nhiều phím tự nhiên như tôi đã làm ở trên là một chút không chính thống trong những ngày này. Tuy nhiên, tôi khuyên bạn nên thử nó, ít nhất là trong khi bạn bắt đầu, vì nó sẽ giúp bạn dễ dàng hơn nhiều để xem các phép nối phải hoạt động như thế nào nếu chúng không phải là tất cả các số nguyên trong phạm vi 1-10. 5 hữu ích 0 bình luận chia sẻ |