La soluzione più estensibile è avere una sola tabella "base" (collegata a "Mi piace", tag e commenti) e "ereditare" da essa tutte le altre tabelle. L'aggiunta di un nuovo tipo di entità implica semplicemente l'aggiunta di una nuova tabella "ereditata", quindi si collega automaticamente all'intero meccanismo di like/tag/comment.
Il termine di relazione tra entità per questo è "categoria" (consultare la Guida ai metodi ERwin , sezione:"Relazioni sottotipo"). Il simbolo della categoria è:
Supponendo che un utente possa apprezzare più entità, uno stesso tag può essere utilizzato per più di un'entità ma un commento è specifico dell'entità, il tuo modello potrebbe assomigliare a questo:
A proposito, ci sono circa 3 modi per implementare la "categoria ER":
- Tutti i tipi in una tabella.
- Tutti i tipi di calcestruzzo in tabelle separate.
- Tutti i tipi concreti e astratti in tabelle separate.
A meno che tu non abbia requisiti di prestazione molto severi, il terzo approccio è probabilmente il migliore (il che significa che le tabelle fisiche corrispondono 1:1 alle entità nel diagramma sopra).