io userei:
-tabella utente-
int id_utente (chiave primaria)
nome
cognome ...
-tabella domande-
int id_domanda (chiave primaria)
testo
-tabella utente_domanda-
id_utente
id_domanda
Risposta
In quest'ultima tabella la chiave primaria è esterna e composta da Id_utente e Id_domanda, presupponendo che ogni utente possa dare una sola risposta ad una domanda.
Perché così? Perché con questa struttura posso effettuare con facilità queste query:
Trovare la percentuale di risposte 'si' alla domanda 1:
codice:
SELECT COUNT (*) / ( SELECT COUNT (*)
FROM utente_domanda
GROUP BY id_domanda
HAVING id_domanda='1' ) * 100 as percentuale
FROM utente_domanda
GROUP BY id_domanda, risposta
HAVING id_domanda = '1' AND risposta = 'si' ;
Ordinare le persone per gradimento (se le risposte sono, per esempio, 5,4,3,2,1,0)
codice:
SELECT id_utente,nome,cognome, SUM(risposta) as gradimento
FROM tabella_utente as tu, utente_domanda as ud
WHERE tu.id_utente = ud.iutente
GROUP BY id_utente, nome, cognome
ORDER BY gradimento DESC;