Trong bài viết cuối cùng trong loạt bài gồm bốn phần này, tôi hoàn thành thiết kế cho cơ sở dữ liệu khảo sát trực tuyến để cung cấp tính linh hoạt cho nhiều cuộc khảo sát, sử dụng lại câu hỏi, câu trả lời nhiều lựa chọn, thứ tự câu hỏi, bước nhảy có điều kiện trong khảo sát dựa trên câu trả lời và kiểm soát quyền truy cập của người dùng vào khảo sát thông qua các nhóm chủ sở hữu khảo sát.
Giới thiệu
Trong phần kết của Phần 3 của loạt bài viết này, tôi đã đề cập rằng tôi sẽ bổ sung các tính năng nâng cao hơn trong bài viết này. Các tính năng nâng cao đó là:
- quản trị trong số các cuộc khảo sát
- báo cáo và phân tích
Xin nhắc lại, đây là mô hình sau Phần 3:
Quản trị
Mục tiêu của tôi trong việc quản lý các cuộc khảo sát là cho phép một cuộc khảo sát và thông tin tương ứng của nó được quản lý bởi một nhóm. Vì vậy, tôi sẽ cho phép một người dùng quản trị xác định các nhóm người dùng có thể cùng duy trì một cuộc khảo sát trực tuyến và các câu hỏi của nó. Chủ sở hữu của nhóm có thể xác định những chức năng mà những người dùng khác của nhóm có thể thực hiện; ví dụ:Jeff có thể thay đổi và xóa các khảo sát và câu hỏi, nhưng Joe chỉ có thể xem các khảo sát và câu hỏi chứ không thể thay đổi hoặc xóa chúng.
Một điều mà bạn có thể nhận thấy là người dùng tách biệt với những người trả lời khảo sát. Tất nhiên, người dùng cũng có thể trả lời một cuộc khảo sát, nhưng tôi muốn tách chúng ra để tôi có thể yêu cầu ít thông tin hơn từ người trả lời so với từ người dùng (ví dụ:tôi đã xóa trường mật khẩu khỏi người trả lời để nó mọi người dễ dàng trả lời khảo sát hơn mà không cần tạo đăng nhập / tài khoản).
Về cơ bản, đối với quản trị này, tôi sẽ tạo các bảng cho các nhóm và người dùng cũng như các vai trò và quyền tương ứng hoặc hành động được phép. Điều này cho phép sự linh hoạt hơn là một liên kết được mã hóa cứng giữa các vai trò và các hành động được cho phép bởi mỗi vai trò. Tất nhiên, ứng dụng tương ứng phải được xây dựng để hiểu chức năng nào được cho phép bởi mỗi quyền và phải được điều chỉnh khi chức năng mới được thêm vào, nhưng thiết kế cơ sở dữ liệu sẽ không cần phải thay đổi khi chức năng được thêm vào - các hàng mới sẽ được thêm vào bảng liên kết vai trò với quyền.
Bạn cũng có thể nhận thấy rằng tôi đã sử dụng độ dài kỳ lạ cho email
trên user
và respondent
bảng và một giá trị lẻ cho ip_address
cột cho respondent
; 254 là độ dài tối đa mà một địa chỉ email có thể có theo định nghĩa RFC, trong khi 45 là độ dài tối đa mà một địa chỉ IPv6 (với đường hầm IPv4) có thể có được.
Ngoài ra, tôi sẽ thêm một liên kết từ nhóm group
vào bảng survey
bảng từ đó các liên kết đi đến tất cả các bảng được liên kết (question_order
, survey_response
, conditional_order
, question_type
, response_choice
). Bằng cách đó, khi nhóm đang bị xóa, tôi có thể cảnh báo chủ sở hữu của nhóm rằng tất cả thông tin tương ứng sẽ bị xóa.
Tôi thích cách tiếp cận này liên kết dữ liệu bảng với thứ gì đó khác với người dùng cụ thể hơn là không liên kết dữ liệu với bất kỳ thứ gì. Nếu chúng tôi không liên kết dữ liệu với bất kỳ thứ gì (cả nhóm và người dùng) như tôi đã làm trong các phần trước của loạt bài viết này, thì chúng tôi sẽ gặp thách thức “dọn dẹp” dữ liệu cũ khi một người dùng bị xóa khỏi khảo sát trực tuyến ứng dụng. Bằng cách liên kết nhóm với khái niệm trừu tượng hơn “nhóm”, chủ sở hữu có thể chuyển nhượng lại quyền sở hữu nhóm và tất cả dữ liệu tương ứng (khảo sát, câu hỏi, phản hồi, v.v.) cho một thành viên khác của nhóm nếu cần.
Thiết kế trang trọng
Sau đó, chúng tôi mở rộng ERD đã được tạo trong các phần khác của loạt bài viết này.
Tôi đã tô màu các bảng được tạo trong bài viết Phần 1 bằng màu vàng, tô màu các bảng được thêm trong Phần 2 bằng màu cam, tô màu các bảng đã thêm trong Phần 3 bằng màu xanh lục và các bảng mới được thêm vào bằng màu xanh lam nhạt để dễ dàng hơn. xem phần bổ sung. Màu sắc không được thêm vào các cột và khóa ngoại đã được thêm vào trong bài viết cuối cùng này, vì vậy bạn sẽ phải so sánh mô hình hiện tại với mô hình trước đó từ Phần 3 để xem sự khác biệt.
Báo cáo và Phân tích
Chúng tôi có đủ thông tin có thể được trích xuất từ các bảng để tạo ra một số báo cáo.
Ví dụ, câu hỏi nào đã được trả lời theo cách cụ thể (“trong cuộc khảo sát 7, bao nhiêu lần người trả lời trả lời‘ Có ’cho câu hỏi 10?”). Mức độ thông tin này có thể phù hợp với các báo cáo cơ bản về các câu trả lời khảo sát.
Chúng tôi cũng có thể trích xuất xem người trả lời đã mất bao lâu để trả lời một cuộc khảo sát cụ thể (“trong cuộc khảo sát 5, thời gian trung bình dành cho cuộc khảo sát là 13 phút”); một lần nữa, đây có thể là thông tin hữu ích để chủ sở hữu cuộc khảo sát có thể điều chỉnh các câu hỏi khảo sát để họ không yêu cầu nhiều thời gian hơn những gì một người trả lời thông thường sẵn sàng bỏ ra hoặc những gì người khảo sát đã “hứa” với người trả lời (ví dụ:“cuộc khảo sát này nên mất từ 5 đến 10 phút ”). Tôi biết rằng khi ai đó nói với tôi rằng tôi sẽ hoàn thành trong vòng chưa đầy 10 phút và tôi vẫn đang tiếp tục đọc các câu hỏi sau đó 15 phút, sau đó tôi tức giận và nói chung tôi không muốn trả lời một cuộc khảo sát khác từ họ.
Dựa trên địa chỉ IP của người trả lời, chúng tôi có thể thực hiện một số tra cứu ngược để có ý tưởng gần đúng về nơi người trả lời đến từ hoặc ít nhất là địa chỉ IP của họ xuất hiện từ đâu khi họ trả lời. Xin lưu ý rằng thông tin này không hoàn toàn đáng tin cậy vì mọi người có thể kết nối qua VPN hoặc các cơ chế khác phân tách địa chỉ IP của họ khỏi vị trí thực của họ.
Chúng tôi thậm chí có thể trích xuất cách câu hỏi được trả lời bởi những người trả lời đầu tiên so với cách nó được trả lời bởi những người trả lời sau. Điều này có thể thể hiện một góc độ thú vị trong cuộc khảo sát của bạn - € “chẳng hạn, những người háo hức trả lời khảo sát đầu tiên có phản ứng khác với những người không háo hức và trả lời khảo sát sau không?
Ở giai đoạn này, tôi nghĩ rằng các báo cáo này là đủ và các phân tích nâng cao hơn là không cần thiết, vì thông tin quan trọng nhất rõ ràng là báo cáo cơ bản về những câu trả lời được đưa ra cho mỗi câu hỏi trong một cuộc khảo sát. Nếu bạn yêu cầu phân tích nâng cao hơn, thì hãy xem xét yêu cầu của bạn là gì và dữ liệu hiện có hoặc cấu trúc mới có thể hỗ trợ những phân tích đó như thế nào.
Kết luận
Và bạn có nó rồi đấy! Tôi sẽ không khẳng định rằng đây là thiết kế cho cơ sở dữ liệu khảo sát trực tuyến lý tưởng, nhưng điều này sẽ đáp ứng nhu cầu của tôi về tính linh hoạt:khảo sát nhiều lần, sử dụng lại câu hỏi, câu trả lời nhiều lựa chọn, thứ tự câu hỏi, bước nhảy có điều kiện trong khảo sát dựa trên phản hồi và kiểm soát quyền truy cập của người dùng vào khảo sát thông qua các nhóm chủ sở hữu khảo sát.
Như tôi đã làm trong mỗi phần trước của loạt bài viết này, tôi sẽ chỉ ra rằng bạn có thể có những yêu cầu khác. Xác định các yêu cầu của bạn và thực hiện hoặc điều chỉnh những gì bạn cần. Tôi rất tin tưởng vào việc tái sử dụng và không phát minh lại bánh xe.
Nếu bạn muốn chúng tôi thiết kế lại hoặc mở rộng mô hình này theo nhu cầu ứng dụng của bạn, hãy cho chúng tôi biết. Chúng tôi có thể giúp bạn.
Mô hình cơ sở dữ liệu cho một cuộc khảo sát trực tuyến - € “cả loạt bài
Phần 1 | Phần 2 | Phần 3 | Phần 4 |