Het lijkt erop dat u categorieën en onderwerpen in twee afzonderlijke tabellen wilt onderscheiden, maar dat de id's van beide in een andere tabel worden vermeld likes
om gebruikers te helpen een categorie of een onderwerp leuk te vinden.
Wat u kunt doen, is een superentiteitstabel maken met subtypen categories
en topics
. De automatisch verhoogde sleutel wordt gegenereerd in de superentiteitstabel en ingevoegd in slechts een van de twee subtypetabellen (op basis van of het een categorie of een onderwerp is).
De subtypetabellen verwijzen naar deze superentiteit via het automatisch vermeerderde veld in een 1:1-relatie.
Op deze manier kunt u eenvoudig de super-entiteitstabel koppelen aan de likes
tabel alleen gebaseerd op één kolom (die een categorie of een onderwerp kan vertegenwoordigen), en geen id
in de subtype-tabellen zullen in beide aanwezig zijn.
Hier is een vereenvoudigd voorbeeld van hoe u dit kunt modelleren:
Met dit model kunt u de relatie tussen categorieën en onderwerpen behouden, maar beide entiteiten veralgemenen in de superentity
tafel.
Een ander voordeel van dit model is dat u gemeenschappelijke velden in de subtypetabellen kunt abstraheren in de superentiteitstabel. Zeg bijvoorbeeld dat categories
en topics
beide bevatten de velden title
en url
:je zou deze velden in de superentity
. kunnen plaatsen tabel omdat ze gemeenschappelijke kenmerken van zijn subtypen zijn. Zet alleen velden die specifiek zijn voor de subtypetabellen IN de subtypetabellen.