Katakanlah pengguna Anda dapat membuat formulir berbasis web mereka sendiri (kotak teks, pilih, dll) dan mempublikasikannya di web untuk diisi oleh pengguna mereka.
Adakah yang punya sumber daya atau saran tentang bagaimana membuat arsitek basis data untuk diikat ke dalam formulir dinamis?
Misalnya, apakah Anda akan membuat tabel anak untuk setiap formulir, atau versi berbeda dari formulir yang diberikan?
architecture
database
webforms
Jeff Borden
sumber
sumber
Jawaban:
Membuat tabel baru secara dinamis berdasarkan input pengguna biasanya bukan ide yang baik. Jika struktur dasar formulir berubah, semua tabel yang dibuat secara dinamis perlu diperbarui untuk menyertakan kolom baru atau yang lama dihapus, dan ini dapat menyebabkan sakit kepala pemeliharaan. Lalu ada masalah untuk mengetahui tabel mana yang ingin ditanyakan (yang mungkin akan mengarah ke SQL dinamis yang membuka semua masalah baru). Dan mungkin ada masalah kinerja juga, tapi saya tidak yakin seberapa buruk itu. Juga, tabel biasanya digunakan untuk mewakili tipe entitas (seperti "formulir web") daripada memiliki salinan dari tabel yang sama untuk setiap instance baru dari entitas yang sama.
Saya sarankan satu tabel untuk formulir. Anda akan memerlukan pengenal pada setiap formulir untuk mengidentifikasi bentuk siapa itu:
Aplikasi web Anda dapat memungkinkan pengguna membuat formulir yang akan disimpan dalam
forms
tabel, dengan referensi ke pengguna yang dibuat (dengan asumsi bahwa Anda melacak pengguna sebagai entitas yang tepat). Formulir diisi denganform_elements
referensiforms
tabel sehingga mereka tahu bentuk mana yang mereka milik, danelement_types
sehingga mereka tahu jenis mereka.element_types
akan menyimpan daftar statis (kebanyakan) elemen-elemen berbeda yang bisa dimiliki formulir. Jenis dapat berupa: "text_field", "drop_down_list", "radio_buttons", "checkbox". Untuk jenis seperti "drop_down_list" dan "radio_buttons", Anda akan memerlukan tabel tambahan, mungkin dipanggilelement_list_values
untuk menyimpan opsi yang mungkin untuk daftar yang biasanya dimiliki elemen-elemen ini.sumber