Ngăn xếp lời chào,Thiết kế giản đồ khi người dùng có thể xác định các trường
Tôi đang cố gắng tìm ra lược đồ cơ sở dữ liệu tốt nhất cho phép người dùng tạo cuộc khảo sát và giới thiệu chúng cho công chúng. Có một loạt các trường nhân khẩu học "tiêu chuẩn" mà hầu hết các khảo sát (nhưng không phải tất cả) sẽ bao gồm, như Tên, Họ, v.v. Và tất nhiên người dùng có thể tạo số câu hỏi "tùy chỉnh" không giới hạn.
Điều đầu tiên tôi nghĩ đến là một cái gì đó như thế này:
Survey
ID
SurveyName
SurveyQuestions
SurveyID
Question
Responses
SurveyID
SubmitTime
ResponseAnswers
SurveyID
Question
Answer
Nhưng điều đó đang diễn ra để hút mỗi khi tôi muốn truy vấn dữ liệu ra. Và có vẻ như gần một cách nguy hiểm để Inner Platform Effect
Một cải tiến sẽ bao gồm nhiều lĩnh vực như tôi có thể nghĩ đến trước trong các câu trả lời bảng:
Responses
SurveyID
SubmitTime
FirstName
LastName
Birthdate
[...]
Sau đó, tại các truy vấn ít nhất là cho dữ liệu từ các cột điểm chung là đơn giản, và tôi có thể truy vấn, nói rằng, tuổi trung bình của tất cả mọi người đã từng trả lời bất kỳ cuộc khảo sát nào mà họ đã đưa ra ngày sinh của họ.
Nhưng có vẻ như điều này sẽ làm phức tạp mã một chút. Bây giờ để xem câu hỏi nào được hỏi trong một cuộc khảo sát, tôi phải kiểm tra xem các trường phản hồi chung nào được kích hoạt (sử dụng, tôi đoán, một bitfield trong Survey) VÀ cái gì trong bảng SurveyQuestions. Và tôi phải lo lắng về các trường hợp đặc biệt, như nếu ai đó cố gắng tạo câu hỏi "tùy chỉnh" sao chép câu hỏi "phổ biến" trong bảng Câu trả lời.
Đây có phải là điều tốt nhất tôi có thể làm không? Tui bỏ lỡ điều gì vậy?
Tôi có thể đề xuất thay đổi tiêu đề câu hỏi thành "Lược đồ cơ sở dữ liệu tốt nhất cho hệ thống khảo sát không?" –