Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Mô hình Cơ sở dữ liệu cho Khảo sát Trực tuyến. Phần 2

Trong phần 1 của loạt bài viết này, chúng tôi đã thảo luận về thiết kế cơ bản cho một cuộc khảo sát trực tuyến. Trong phần kết luận của bài viết đó, tôi đã đề cập đến phần 2 sẽ bao gồm các tính năng nâng cao hơn cho cuộc khảo sát của chúng tôi như:

  • Các loại câu hỏi khác nhau, chẳng hạn như câu hỏi trắc nghiệm
  • Thứ tự câu hỏi có điều kiện trong một cuộc khảo sát hay nói cách khác là khả năng cho một con đường có điều kiện thông qua cuộc khảo sát
  • Quản trị trong số các cuộc khảo sát
  • Báo cáo phân tích

Hãy bắt đầu bằng cách mở rộng chức năng hỗ trợ các loại câu hỏi khác nhau.

Các loại câu hỏi

Trong phần 1 trong loạt bài viết này, chúng tôi chỉ sử dụng các câu hỏi mở bao gồm một câu hỏi và một câu trả lời. Trong bài viết này, chúng tôi sẽ xác định các loại câu hỏi khác nhau, chẳng hạn như câu hỏi cực (có-không) câu hỏi trắc nghiệm . Mỗi câu hỏi sẽ được liên kết với một loại. Đối với các câu hỏi phân cực, chúng tôi sẽ chỉ cho phép có / không làm câu trả lời, nhưng trong tương lai, chúng tôi có thể cho phép các biến thể như true / false. Những câu hỏi không có kết thúc mở sẽ có những câu trả lời có thể có mà từ đó người trả lời có thể chọn.

Trong tương lai, chúng tôi sẽ thêm các câu hỏi yêu cầu câu trả lời được xếp hạng. Ví dụ, “Bạn thích thiết kế cơ sở dữ liệu đến mức nào; tỷ lệ từ 1 đến 100 (với 1 cho biết bạn thích nó rất ít và 100 cho biết bạn thích nó vô cùng)? ”

Thực thể và Mối quan hệ

Đối với các loại câu hỏi khác nhau trong khảo sát, tôi sẽ mở rộng vùng "câu hỏi" với các loại và lựa chọn câu trả lời.

Tốt nhất, tôi muốn tạo một khóa ngoại giữa các câu trả lời thực tế và các câu trả lời có thể có cho các câu hỏi trắc nghiệm (response_choice) để đảm bảo tính toàn vẹn của dữ liệu. Điều này sẽ hoạt động nếu tất cả các câu hỏi đều có lựa chọn trả lời và không cho phép câu hỏi kết thúc mở. Vì tôi cần hỗ trợ các câu hỏi kết thúc mở, tôi sẽ phải đảm bảo tính toàn vẹn của các câu trả lời trong mã ứng dụng.

Thiết kế trang trọng

Chúng tôi cần mở rộng ERD đã được tạo trong phần 1 của loạt bài viết này. Như trước đây, tôi sẽ sử dụng Vertabelo, một trình tạo mô hình cơ sở dữ liệu trực tuyến. Nếu chưa có tài khoản Vertabelo, bạn có thể đăng ký dùng thử miễn phí tại đây.

Tôi sẽ đưa ra một nhận xét; bạn sẽ thấy rằng tôi thường sử dụng các số tròn như 100 hoặc 1000 để xác định độ dài của các trường varchar; Tôi không gợi ý rằng đây nhất thiết phải là kích thước thích hợp, nhưng tôi sử dụng nó như một cách viết tắt thay vì để độ dài không xác định. Khi bạn sử dụng mô hình này, vui lòng điều chỉnh độ dài cho các yêu cầu cụ thể của bạn. Ví dụ:bạn sẽ cho phép người trả lời nhập một câu trả lời rất dài cho một câu hỏi mở - hay bạn sẽ giới hạn họ trong 1000 ký tự? Điều này có thể phụ thuộc vào ứng dụng mà bạn đang xây dựng để sử dụng cơ sở dữ liệu, vì nó có thể có giới hạn về độ dài trường.

Tôi thêm một bảng question_type được liên kết với câu hỏi:những bảng này có thể có tên là “kết thúc mở”, “có-không”, “nhiều lựa chọn” và trong tương lai là “xếp hạng”. Đối với các câu hỏi trắc nghiệm, mỗi câu hỏi sẽ có response_choices để được chọn.

Bạn thậm chí có thể sử dụng điều này để thực hiện các câu hỏi cực, nhưng tôi nghĩ rằng điều đó là quá mức cần thiết. Một giải pháp khác là liên kết response_choice với question_type, để hàng question_type “yes-no” sẽ được liên kết với các hàng response_choice “Có” và “Không”, nhưng một lần nữa, tôi không cảm thấy điều đó là cần thiết - nhưng bạn có thể nếu bạn muốn khả năng đa ngôn ngữ. Sau đó, bạn sẽ bao gồm một trường cho ngôn ngữ của người trả lời trong bảng response_choice hoặc quản lý quá trình quốc tế hóa trên giao diện người dùng.




Tôi đã tô màu các bảng được tạo trong phần 1 có màu vàng và các bảng mới được thêm vào có màu cam để dễ xem các phần bổ sung hơn.

Kết luận

Bây giờ chúng tôi đã bắt đầu triển khai các cải tiến đã được thảo luận trong phần 1 của loạt bài viết này.

Trong bài sau mình sẽ hỗ trợ thêm các tính năng sau:

  • Thứ tự có điều kiện của các câu hỏi trong một cuộc khảo sát
  • Quản lý các cuộc khảo sát
  • Báo cáo và phân tích

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tùy chọn cơ sở dữ liệu / Báo cáo sử dụng gói

  2. Cách xếp hạng các hàng trong một phân vùng trong SQL

  3. Ngôn ngữ thao tác dữ liệu SQL

  4. Thư viện kiểu chờ SQLskills hiện hiển thị dữ liệu SentryOne

  5. Chuẩn bị COVID-19 tại ScaleGrid