Anket Veritabanı Şeması.
Bu binlerce kişi tarafından yapılan gerçek bir klasik. Her zaman başlamak için 'oldukça basit' görünüyorlar ama iyi olmak aslında oldukça karmaşık. Bunu Rails'te yapmak için ekteki diyagramda gösterilen modeli kullanırdım. Eminim bazıları için çok karmaşık görünüyor, ancak bunlardan birkaçını oluşturduktan sonra, yıllar boyunca tasarım kararlarının çoğunun en iyi dinamik esnek veri yapısı tarafından ele alınan çok klasik modeller olduğunu fark ediyorsunuz. başlangıç.
Aşağıda daha fazla ayrıntı:
Anahtar tablolar için tablo ayrıntıları
Yanıtlar
Cevaplar o kullanıcılar tarafından fiili tepkileri yakalar olarak tablo çok önemlidir. Sen bu cevaplar bağlantıları fark edeceksiniz question_options değil sorular . Bu kasıtlı.
input_types
girdi_türleri soru türüdür. Her soru yalnızca 1 tipte olabilir, örn. Tüm radyo kadranları, tüm metin alanları, vb. "Dahil et?" İçin (örneğin) 5 radyo kadranı ve 1 onay kutusu olduğunda ek sorular kullanın. seçeneği veya böyle bir kombinasyon. Kullanıcılar görünümünde iki soruyu bir olarak etiketleyin, ancak dahili olarak biri radyo aramaları için, diğeri onay kutusu için olmak üzere iki sorusu var. Bu durumda onay kutusunun 1 grubu olacaktır.
option_groups
option_groups ve option_choices 'ortak' gruplar oluşturmanıza izin verir. Bir örnek, bir gayrimenkul uygulamasında 'Mülk kaç yaşında?' Sorusu olabilir. Cevaplar aşağıdaki aralıklarda istenebilir: 1-5 6-10 10-25 25-100 100+
Daha sonra, örneğin, bitişik mülk yaşı hakkında bir soru varsa, anket yukarıdaki aralıkları 'yeniden kullanmak' isteyecektir, böylece aynı option_group ve seçenekler kullanılır.
ölçü birimleri
unit_of_measure göründüğü gibidir. İster inç, bardak, piksel, tuğla veya başka bir şey olsun, burada bir kez tanımlayabilirsiniz.
Bilginize: Doğasında genel olmasına rağmen, bunun üstünde bir uygulama oluşturulabilir ve bu şema Ruby On Rails çerçevesine her tablo için birincil anahtar için "id" gibi kurallar ile çok uygundur . Ayrıca ilişkilerin hepsi basit one_to_many ile many_to_many veya has_many throughs gereklidir. Büyük olasılıkla has_many: throughs ve / veya: delegeler ekleyeceğim.