Depolama ve Anketi Verileri, kolay Çözüm gösteriliyor?

1 Cevap php

Temelde bu bir anket olduğunu, ancak Evet / Hayır soruları türünü sormak gelmez. Bir tablo formunda istenir soru vardır. İşte anket için adım sayfalardan birinin bir örnek:

Bir istemci, onlar girmiş ne kaydetmek oturumu, zaman içinde daha sonraki bir noktada gel ve gerisini doldurarak devam etmek için anket verir, sonra gönderin. Bir yönetici de anket gözden ve sadece herhangi bir düzeltme gerekli durumda bazı soruların satıcı erişim sağlayan olacaktır.

Aşağıdaki metin veri depolamak için benim çözüm açıklar, ama bunu yapmanın basit bir yolu var olsaydı ben merak ediyordum. Burada da resmin sağ tarafında bulunan Sorular ve Cevaplar tablo için Database Design olduğunu.

Soru için sütun adları artık dışında örnek sorular 4.a için, olacak, hem de ayrı soru olarak saklanmalıdır

4.a.1, "Standard"  
4.a.2, "Certifying Organization"  
4.a.3, "Date of Last Certification"

Yani görüntülemek için bu oldukça basit olacaktır. Biz örneğin Tablecol için yeni bir tip olarak sorunun türünü ayarlamak, biz bir masa ve masa sütun "oluşturmak için bilemez. Ayrıca verilerin artan düzende çıkardı olacak o zamandan beri hiç bir problem olmamalı Bunun için html oluşturmak. Her neyse, şimdi biz metin girişi türleri olarak tüm hücreleri ile iyi olacağını düşünüyorum. (Belki gelecekte, zamanı geldiğinde, bir tablodaki sütunların biri bir metin olmayabilir ve eğer giriş alanı, bu örneğin) bu yüzden daha sonra kullanmak için ne olduğunu açıklamak için bir yol gerekir, bir açılır olabilir.

Now also when displaying the table in html, question 4.a has three rows as a default. Other questions have a different number. Also i was thinking about validation as well for table columns. So for all of this, i was thinking about creating a new table called QuestionAttributes. This will serve as a way to store many attributes for a question id. So an example of this use would be, question 4.a is a TABLE and should display 3 rows. In the attributes table there would be an entry such as: idof 4.a, "MINROWS", 3

Cevaplar tabloda veri depolamak için, biz cevap benzersizliğini ve sıralama olarak iyi olmak için yetenek vereceğini cevaplar tabloda yeni bir alan koymak zorunda kalacaktı. Yani yerine değiştirmemesi değeri kullanarak, ben gerekirse eğer cevap verildiğinde de tarif hangi UTC zaman damgası depolamak söyleyebilirim. Bu bize web sayfasının tablosunda doğru sırayla verileri görüntülemek yardımcı sıralama sağlayacaktır. Temelde, cevaplar tabloda her cevap için farklı bir tamsayı değeri olmalıdır.

Cevapları almak için sorgu Sorular tablo sort_order bir tür ve Cevapları tablo utc_timestamp olmalıdır. Bu sorgunun sonucu gibi bir şey olacaktır:

4.a.1, "Answer1", 9878921  
4.a.2, "Answer2", 9878923  
4.a.3, "Answer3", 9878925  
4.a.1, "Answer1", 9878926  
4.a.2, "Answer2", 9878928  
4.a.3, "Answer3", 9878929

Herhangi bir yardım büyük mutluluk duyacağız.

1 Cevap

Muhtemelen katılmıyorum gidiyoruz, ama ben tasarım özellikle ilk sürümü için, yol overengineered olduğunu düşünüyorum. Ben mümkün olduğunca basit bir tasarım ile gitmek istiyorum:

QuestionaireId
Status           f.e. "Pre-Approval"
StatusDate
Answerer         f.e., "Mike Mayhem"
Question1        f.e., "Yes"
Question2        f.e., "Option6"
Question3        f.e., "Blah Blah Blah"
...

Sonra birisi bir öğe onaylanmış zaman diyor bir günlük tablo olabilir, böylece bir soruyu yanıtladı, ve:

LogId
QuestionaireId
LogDate
LogEntry         f.e., "Questionaire approved by Bill"

Ilk sürümü son yeni tekrarlamalar için, tek-çok eklemek veya çok-çok ilişkilere çok büyük iş değeri katıyor sadece. İlişkileri karmaşıklık açısından pahalı, ve en az karmaşıklık tutmak iyi bir tasarımın özüdür.