Per prima cosa manca l'id numerico agli utenti
Non usare lo username, perchè come campo testuale sarà più lento ed inoltre non è collegato alle altre tabelle
Quindi la tabella utenti la cambierei così
Codice PHP:
TABLE `utenti` (
`idutente` int(11) NOT NULL auto_increment,
`username` varchar(10) NOT NULL,
`password` varchar(64) NOT NULL,
`authadmin` char(1), // per capire se utente ha diritti di amministrazione
PRIMARY KEY (`idutente`)
);
La tabella assistenza invece la lascerei come l'hai fatta
Codice PHP:
TABLE `assitenza` (
`idassitenza` int(11) NOT NULL auto_increment,
`idutenti ` int(11),
`contatto` varchar(50),
`email` varchar(25),
`titolo` varchar(50),
`descrizioneproblema` text,
`status` char(1), // devo capire se l’assistenza è "aperta" o "chiusa"
`data` date,
PRIMARY KEY (`idassitenza`)
);
Mentre "unirei" le tabelle "risposte" e "repliche" in una unica tabella con un semplice identificatore che indica se si tratta di una "comunicazione" che viene dall'utente o di una risposta dell'assistenza, con un id che ne identifica l'ordine
Codice PHP:
TABLE `repliche` (
`idreplica` int(11) NOT NULL auto_increment,
`idassitenza` int(11),
`flagutente` set('0','1'),
`risp` text,
PRIMARY KEY (`idrisposta `)
);
In questo modo le "repliche" dell'assistenza avranno "flagutente" = '0' mentre le repliche dell'utente avranno 'flagutente' = '1' e ordinandole per "idreplica" avrai la discussione "utente vs assistenza" in un'unica sequenza