Ho alcune tabelle generiche. Uno di questi consente a un utente di commentare qualcosa, mentre l'altro consente a un utente di aggiungere qualcosa ai preferiti.
Inizialmente, avevo pensato che per rendere possibile e commentare qualsiasi cosa, avrei potuto avere un'altra tabella chiamata qualcosa come CommentSet
e FavoriteSet
, che sarebbe stata usata da Comments
e Favorites
che sarebbero quindi essere utilizzato come chiave esterna su tutto ciò che doveva essere "commentabile" o "favorito".
CommentSet
- id
Comment
- id
- body
- setId
Post
- commentSetId
- ...
Questo sembrava funzionare bene, ma c'erano alcuni svantaggi con questo approccio:
- Non c'era modo di capire quale articolo fosse un preferito o un commento
- Aggiunta la complessità che richiede la creazione delle righe "set" quando necessario
Invece ho pensato di usare chiavi esterne direttamente sulle tabelle:
Comment
- id
- body
- postId (for example)
- userId (another example)
Con questo approccio non sembrano esserci problemi e:
- Ora è possibile capire su quale elemento è inserito il commento / preferito (usando l'FK)
- Nessuna complessità aggiunta, devi solo creare un commento / preferito e nient'altro.
Una cosa di cui ero preoccupato era la performance, anche se non so per certo che questo sarebbe male per le prestazioni. Quale approccio dovrei usare, o c'è un modo migliore?