Mysql
 sql >> Database >  >> RDS >> Mysql

Un tavolo contro più tavoli

Potrebbero esserci ragioni reali per volere/aver bisogno di una singola tabella dei commenti. Ad esempio, semplificherebbe la visualizzazione di tutti i commenti di un determinato utente. Inoltre, le ricerche in tutti i commenti sarebbero più semplici (metti un indice FTS su una tabella e il gioco è fatto).

D'altra parte, se non c'è un motivo convincente per mantenere i commenti in un'unica tabella, c'è una possibile terza (e piuttosto ovvia) soluzione.

Crea una tabella dei commenti separata per ogni elemento (post, evento, file, documento). Le relazioni del RI sarebbero molto semplici da definire e descrivere in quella situazione. Inoltre, se stai digitando query ad hoc molto spesso, potrebbe renderlo più semplice. Ad esempio

 select * from documents d left join doc_comments c 
                           on d.id = c.docid 
                           where d.id=42;

Niente di tutto ciò può essere pertinente o importante per la tua situazione, ma potrebbe valere la pena considerarlo.

Un ulteriore pensiero casuale:entrambe le soluzioni nell'OP hanno la "sensazione" di definire una relazione molti-a-molti (ad esempio, un commento può appartenere a più elementi). Supponendo che non sia la situazione desiderata, può essere prevenuta con l'apposito indice univoco, ... ma comunque ... ha quell'aspetto iniziale, che sembra possa portare a una possibile confusione.