สคีมาฐานข้อมูลการสำรวจ
นี่เป็นเกมคลาสสิคที่แท้จริงทำโดยคนเป็นพัน พวกเขามักจะดูเหมือน 'ค่อนข้างง่าย' ที่จะเริ่มต้น แต่จะดีจริง ๆ แล้วมันค่อนข้างซับซ้อน ในการทำสิ่งนี้ใน Rails ฉันจะใช้โมเดลที่แสดงในแผนภาพที่แนบมา ฉันแน่ใจว่ามันดูซับซ้อนเกินไปสำหรับบางคน แต่เมื่อคุณสร้างบางสิ่งเหล่านี้ในช่วงหลายปีที่ผ่านมาคุณรู้ว่าการตัดสินใจออกแบบส่วนใหญ่เป็นรูปแบบคลาสสิกมากที่สุดได้รับการแก้ไขโดยโครงสร้างข้อมูลแบบไดนามิกที่ยืดหยุ่น การเริ่ม
รายละเอียดเพิ่มเติมด้านล่าง:
รายละเอียดตารางสำหรับตารางคีย์
คำตอบ
ตอบตารางเป็นสิ่งสำคัญในขณะที่มันจับการตอบสนองที่เกิดขึ้นจริงโดยผู้ใช้ คุณจะสังเกตเห็นว่าการเชื่อมโยงคำตอบquestion_optionsไม่คำถาม นี่คือเจตนา
input_types
input_typesเป็นประเภทของคำถาม คำถามแต่ละข้อสามารถมีได้เพียง 1 ประเภทเท่านั้นเช่นการหมุนด้วยวิทยุทุกช่องข้อความ ฯลฯ ใช้คำถามเพิ่มเติมสำหรับเมื่อมี (พูด) 5 การโทรออกด้วยวิทยุและ 1 ช่องทำเครื่องหมายสำหรับ "รวม?" ตัวเลือกหรือการรวมกันบางอย่าง ติดป้ายกำกับคำถามสองข้อในมุมมองของผู้ใช้ว่าเป็นคำถามเดียว แต่มีคำถามสองข้อภายในคำถามหนึ่งข้อสำหรับการโทรออกด้วยวิทยุ - หนึ่งสำหรับช่องทำเครื่องหมาย ช่องทำเครื่องหมายจะมีกลุ่ม 1 ในกรณีนี้
option_groups
option_groupsและoption_choicesช่วยให้คุณสร้างกลุ่ม 'ทั่วไป' ตัวอย่างหนึ่งในแอปพลิเคชันอสังหาริมทรัพย์อาจมีคำถามว่า 'อสังหาริมทรัพย์มีอายุเท่าไหร่' คำตอบอาจต้องการในช่วง: 1-5 6-10 10-25 25-100 100+
จากนั้นตัวอย่างเช่นหากมีคำถามเกี่ยวกับอายุคุณสมบัติที่อยู่ติดกันการสำรวจจะต้องการ 'นำมาใช้ใหม่' ช่วงข้างต้นเพื่อให้ Option_group และตัวเลือกเดียวกันใช้งาน
หน่วยวัด
units_of_measureเป็นตามที่ฟัง ไม่ว่าจะเป็นนิ้วถ้วยพิกเซลอิฐหรืออะไรก็ตามคุณสามารถกำหนดได้เพียงครั้งเดียวที่นี่
FYI: แม้ว่าโดยทั่วไปในลักษณะหนึ่งสามารถสร้างแอปพลิเคชันด้านบนของนี้และสคีนี้เหมาะอย่างยิ่งกับกรอบRuby On Railsด้วยการประชุมเช่น "id" สำหรับคีย์หลักสำหรับแต่ละตาราง นอกจากนี้ความสัมพันธ์ยังเป็นเรื่องง่าย one_to_many โดยไม่จำเป็นต้องมีหลายอย่างถึง _to_many หรือมีจำนวนมาก ฉันอาจจะเพิ่ม has_many: throughs และ / หรือ: ผู้รับมอบสิทธิ์แม้ว่าจะได้รับสิ่งต่าง ๆ เช่น survey_name จากคำตอบของแต่ละบุคคลได้อย่างง่ายดายโดยไม่ต้อง