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

Commenti su molti problemi di progettazione di database di tabelle

Potresti creare un'altra tabella CommentableEntity (anche se chiamalo qualcosa di meglio). Ciascuna delle righe nelle tabelle (Articles , Recipes ecc.) avrebbe un riferimento a una riga univoca in questa tabella. La tabella di entità potrebbe avere un type campo per indicare il tipo di entità (per facilitare l'unione inversa).

Puoi quindi avere un Comment tabella che fa riferimento a CommentableEntity , in modo generico.

Quindi, ad esempio, ti ritroverai con le seguenti tabelle:

Articles
-----------------
Article_id
CommentableEntity_id (fk, unique)
Content
....

Recipes
-----------------
Recipe_id
CommentableEntity_id (fk, unique)
Content
....

CommentableEntity
-----------------
CommentableEntity_id (pk)
EntityType (e.g. 'Recipe', 'Article')

Comment
-------
Comment_id (pk)
CommentableEntity_id (fk)
User_id (fk)
DateAdded
Comment 
...etc...

Puoi aggiungere il record CommentableEntity ogni volta che aggiungi un Articolo/Ricetta, ecc. Tutto il codice di gestione dei commenti che deve sapere è CommentableEntity_id - non importa che tipo di cosa sia.