Skema Basis Data Survei.
Ini klasik nyata, dilakukan oleh ribuan orang. Mereka selalu tampak 'cukup sederhana' untuk memulai tetapi untuk menjadi baik itu sebenarnya cukup kompleks. Untuk melakukan ini di Rails saya akan menggunakan model yang ditunjukkan pada diagram terlampir. Saya yakin ini kelihatannya terlalu rumit untuk beberapa orang, tetapi begitu Anda telah membangun beberapa dari ini, selama bertahun-tahun, Anda menyadari bahwa sebagian besar keputusan desain adalah pola yang sangat klasik, paling baik ditangani oleh struktur data fleksibel yang dinamis di awal.
Lebih detail di bawah ini:
Detail tabel untuk tabel utama
jawaban
The jawaban table sangat penting karena menangkap tanggapan yang sebenarnya oleh pengguna. Anda akan melihat bahwa jawaban tautan ke pertanyaan_pilihan , bukan pertanyaan . Ini disengaja.
input_types
input_types adalah jenis pertanyaan. Setiap pertanyaan hanya dapat terdiri dari 1 jenis, misalnya semua panggilan radio, semua bidang teks, dll. Gunakan pertanyaan tambahan ketika ada (katakanlah) 5 panggilan radio dan 1 kotak centang untuk "sertakan?" opsi atau kombinasi tersebut. Beri label dua pertanyaan dalam tampilan pengguna sebagai satu tetapi secara internal ada dua pertanyaan, satu untuk panggilan radio, satu untuk kotak centang. Kotak centang akan memiliki grup 1 dalam hal ini.
option_groups
option_groups dan option_choices memungkinkan Anda membangun grup 'umum'. Salah satu contoh, dalam aplikasi real estat mungkin ada pertanyaan 'Berapa umur properti?'. Jawabannya mungkin diinginkan dalam kisaran: 1-5 6-10 10-25 25-100 100+
Kemudian, misalnya, jika ada pertanyaan tentang usia properti yang berdampingan, maka survei akan ingin 'menggunakan kembali rentang di atas, sehingga option_group dan opsi yang sama digunakan.
units_of_measure
units_of_measure seperti kedengarannya. Baik itu inci, cangkir, piksel, batu bata atau apa pun, Anda dapat menentukannya sekali di sini.
FYI: Meskipun sifatnya generik, seseorang dapat membuat aplikasi di atas ini, dan skema ini sangat cocok untuk kerangka kerja Ruby On Rails dengan konvensi seperti "id" untuk kunci utama untuk setiap tabel. Juga hubungan semua one_to_many sederhana tanpa banyak many_to_many atau has_many throughs diperlukan. Saya mungkin akan menambahkan has_many: throughs dan / atau: delegasi untuk mendapatkan hal-hal seperti survey_name dari jawaban individu dengan mudah tanpa.multiple.chaining.