sql >> Database >  >> RDS >> Mysql

Opmerkingen over het ontwerpprobleem van veel tabellen met databases

Je zou een andere tabel kunnen maken CommentableEntity (hoewel noem het iets beters). Elk van de rijen in uw tabellen (Articles , Recipes etc.) zou een verwijzing hebben naar een unieke rij in deze tabel. De entiteitstabel heeft mogelijk een type veld om het type entiteit aan te geven (om omgekeerde samenvoeging te vergemakkelijken).

U kunt dan een Comment tabel die verwijst naar CommentableEntity , op een algemene manier.

Zo krijg je bijvoorbeeld de volgende tabellen:

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...

U kunt het CommentableEntity-record toevoegen elke keer dat u een artikel/recept enz. toevoegt. Het enige dat uw code voor het verwerken van opmerkingen hoeft te weten, is de CommentableEntity_id - het maakt niet uit wat voor soort ding het is.



  1. SQL Server-equivalent van TO_CHAR en formaatconversie

  2. Voer deze bedrijfsurenquery uit in PostgreSQL

  3. MySQL-batchquery's met limiet

  4. SQLite INSERT - OP DUPLICATE KEY UPDATE (UPSERT)