Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Model Basis Data untuk Survei Online. Bagian 3

Sebagai penutup Bagian 2 dari rangkaian artikel ini, saya menyebutkan bahwa saya akan menambahkan fitur yang lebih canggih, seperti:

  • Pengurutan pertanyaan bersyarat dalam survei atau, dengan kata lain, kemungkinan jalur bersyarat melalui survei
  • Administrasi survei
  • Laporan dan analitik

Dalam artikel ketiga ini terkait dengan survei online , saya akan memperluas fungsionalitas untuk mendukung pengurutan pertanyaan bersyarat.

Di masa mendatang, kami dapat menambahkan pertanyaan yang memerlukan tanggapan yang dinilai. Misalnya:“Seberapa besar Anda menyukai desain database, beri peringkat antara 1 dan 100 (dengan 1 menunjukkan bahwa Anda sangat menyukainya dan 100 menunjukkan bahwa Anda sangat menyukainya)?”

Jalur Bersyarat

Kami ingin menetapkan kondisi tertentu pada pertanyaan yang disajikan kepada pengguna berdasarkan tanggapan pengguna. Misalnya, jika jawaban untuk pertanyaan 4 adalah “ya”, maka kami mengajukan pertanyaan 5 dan melewatkan pertanyaan 6; sedangkan jika jawaban pertanyaan 4 adalah “tidak”, maka kami melewatkan pertanyaan 5 dan mengajukan pertanyaan 6).

Jadi, kita perlu menentukan pertanyaan mana yang bersyarat dan bagaimana cara “melewati” pertanyaan berdasarkan jawaban atas sebuah pertanyaan.

Awalnya, untuk menjaga agar jalur kondisional tetap sederhana, kami tidak akan mengizinkan kondisi berdasarkan pertanyaan pilihan ganda, tetapi hanya untuk pertanyaan kutub (ya atau tidak). Desainnya dapat diperluas untuk mendukung jalur bersyarat berdasarkan pertanyaan pilihan ganda, tetapi itu lebih kompleks dan saya ingin memulai dari yang sederhana.

Aplikasi harus memeriksa alur ini untuk setiap pertanyaan, karena jawaban atas pertanyaan sebelumnya dapat menentukan alur untuk pertanyaan saat ini (untuk melewati pertanyaan berdasarkan respons sebelumnya).

Administrasi &Laporan

Untuk saat ini, kami tidak akan menambahkan administrator survei online, tetapi mempertahankannya untuk ekstensi berikutnya.

Perlu ada beberapa laporan dan analisis; namun, saya akan menyimpan ini untuk versi berikutnya karena saya ingin menyimpan beberapa informasi terlebih dahulu untuk melakukan analisis nanti.

Entitas dan Hubungan

Untuk jalur bersyarat melalui survei, saya akan memperluas question_order yang ditentukan untuk setiap survei dan menghubungkan survei dengan pertanyaan. Seperti yang disebutkan, untuk saat ini, lompatan bersyarat hanya akan didasarkan pada pertanyaan kutub, jadi saya dapat menentukan pertanyaan berikutnya untuk ditampilkan jika ada respons positif dan pertanyaan berikutnya untuk ditampilkan jika ada respons negatif.

Desain Formal

Mari kita perluas ERD yang telah dibuat di Bagian 1 dari rangkaian artikel ini.

Saya akan menambahkan conditional_order ditautkan ke question_order; seperti yang saya sebutkan sebelumnya, saya hanya akan mendukung pesanan bersyarat melalui survei berdasarkan pertanyaan kutub. Sekarang, ada beberapa cara untuk menerapkannya. Kebutuhan saya lurus ke depan, jadi saya akan memilih implementasi langsung. Jika kebutuhan Anda lebih kompleks, Anda membutuhkan solusi yang lebih kompleks.

Sebaiknya tentukan saja pertanyaan "berikutnya" yang akan ditanyakan berdasarkan jawaban dari pertanyaan saat ini, tetapi itu tidak akan memungkinkan kami untuk melewatkan pertanyaan nanti dalam survei, jadi kami membutuhkan lebih banyak fleksibilitas.

Salah satu caranya adalah dengan menentukan berapa banyak pertanyaan yang harus diteruskan jika ada respons positif dan berapa banyak yang harus dilanjutkan jika ada respons negatif; namun, saya harus menentukan untuk pertanyaan mana lompatan itu berlaku dan jawaban dari pertanyaan mana yang akan digunakan. Jadi untuk mendukung contoh saya:jika jawaban untuk pertanyaan 4 adalah “ya”, maka kami mengajukan pertanyaan 5 dan melewatkan pertanyaan 6, sedangkan jika jawaban untuk pertanyaan 4 adalah “tidak”, maka kami melewatkan pertanyaan 5 dan mengajukan pertanyaan 6 -- ini memerlukan dua entri yang keduanya memeriksa respons terhadap pertanyaan 4, satu maju satu pertanyaan (seperti biasa) dan satu melompati dua pertanyaan (untuk melewatkan pertanyaan), dan kondisi lainnya diperiksa setelah menjawab pertanyaan 5 yang melompati pertanyaan 6.

  +-------------------+----------------------+------------------------+------------------------+ 
  | question_order_id | response_to_question | positive_response_jump | negative_response_jump |
  +-------------------+----------------------+------------------------+------------------------+
  | 4                 | 4                    | 1                      | 2                      |
  +-------------------+----------------------+------------------------+------------------------+
  | 5                 | 4                    | 1                      | null                   |
  +-------------------+----------------------+------------------------+------------------------+

Alternatifnya adalah menentukan id pertanyaan berikutnya yang harus dilontarkan survei jika ada respons tertentu:pertanyaan berikutnya jika ada respons positif dan pertanyaan berikutnya jika negatif tanggapan. Pendekatan ini memiliki pro dan kontra. Itu akan memungkinkan loop terjadi, yang mungkin tidak diperhatikan oleh administrator. Namun, pengulangan mungkin merupakan efek yang diinginkan sehingga Anda dapat mengajukan pertanyaan terakhir kepada responden apakah mereka sudah selesai dengan survei dan jika mereka menjawab “tidak”, lalu kembali ke pertanyaan pertama. Selain itu, pertanyaan untuk melompat jika ada respons positif atau negatif dapat diatur sebagai kunci asing untuk urutan pertanyaan yang ditentukan untuk survei sehingga kita tahu pasti bahwa pertanyaan yang ditentukan ditentukan dalam survei. Ini adalah logika check in yang bagus yang diimplementasikan melalui integritas referensial. Saya pikir ini mungkin solusi yang lebih baik, jadi itulah yang akan Anda temukan di ERD.

Jadi untuk mendukung contoh saya:jika jawaban untuk pertanyaan 4 adalah “ya”, maka kami mengajukan pertanyaan 5 dan melewatkan pertanyaan 6, sedangkan jika jawaban untuk pertanyaan 4 adalah “tidak”, maka kami melewatkan pertanyaan 5 dan mengajukan pertanyaan 6.

Seperti yang disebutkan, kami memiliki dua baris:

Survey #1, question #4, response to question #4, positive response: next question order id = 5, negative response: next question order id = 6.

Survey #1, question #5, response to question #4, positive response: next question order id = 7. We will never get to question #5 if the response to question #4 was negative, so we always skip question #6 after asking question #5.

  +--------+----------+----------------------+-------------------------------+-------------------------------+
  | survey | question | response_to_question | positive_response_question_id | negative_response_question_id |
  +--------+----------+----------------------+-------------------------------+-------------------------------+
  | 1      | 4        | 4                    | 5                             | 6                             |
  +--------+----------+----------------------+-------------------------------+-------------------------------+
  |        | 5        | 4                    | 7                             | null                          |
  +--------+----------+----------------------+-------------------------------+-------------------------------+

Saat mengatur kondisi, kami akan menggunakan kunci asing (tidak wajib) untuk memastikan bahwa pertanyaan berikutnya ada. Nilai nol digunakan untuk jalur yang tidak mungkin atau, jika tidak ada pertanyaan berikutnya yang ditentukan, untuk mengakhiri survei secara kondisional.




Saya telah mewarnai tabel yang dibuat di Bagian 1 dari seri artikel berwarna  kuning , tabel ditambahkan di Bagian 2 dalam  oranye , dan tabel yang baru ditambahkan berwarna  hijau  sehingga lebih mudah untuk melihat penambahannya.

Kesimpulan

Tak satu pun dari solusi yang dijelaskan untuk mengelola langkah-langkah bersyarat melalui survei adalah sistem berbasis aturan utama, tetapi salah satu tujuan saya adalah untuk menjaga hal-hal sederhana dan lurus ke depan. Mengizinkan fleksibilitas tanpa membebani hal-hal dalam kompleksitas. Dan, saya ulangi, Anda mungkin memiliki persyaratan lain. Identifikasi kebutuhan Anda; menerapkan atau menyesuaikan apa yang Anda butuhkan. Saya sangat percaya pada penggunaan kembali dan bukan penemuan kembali roda.

Sekarang kami telah mulai menerapkan peningkatan yang telah dibahas di bagian 1 dan 2 dari rangkaian artikel ini.

Di artikel selanjutnya, saya akan menambahkan dukungan untuk fitur ini:

  • Administrasi survei
  • Laporan dan analisis

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Hari Terakhir Bulan Ini di T-SQL

  2. 115 Pertanyaan Wawancara SQL Teratas yang Harus Anda Siapkan Di 2022

  3. Tantangannya aktif! Panggilan komunitas untuk membuat generator seri nomor tercepat

  4. Instal dan Konfigurasi Perangkat Lunak XAMPP di Windows Server 2019

  5. Membandingkan pola infrastruktur database umum