Det verkar som om du vill särskilja kategorier och ämnen i två separata tabeller, men låt id:n för båda refereras i en annan tabell likes
för att underlätta för användare att gilla antingen en kategori eller ett ämne.
Det du kan göra är att skapa en superenhetstabell med undertyperna categories
och topics
. Den automatiskt inkrementerade nyckeln skulle genereras i superentitetstabellen och infogas i endast en av de två undertypstabellerna (baserat på om det är en kategori eller ett ämne).
Undertypstabellerna refererar till denna superentitet via det automatiskt inkrementerade fältet i en 1:1-relation.
På så sätt kan du helt enkelt länka superentitetstabellen till likes
tabell bara baserad på en kolumn (som kan representera antingen en kategori eller ett ämne), och inget id
i undertypstabellerna kommer att finnas i båda.
Här är ett förenklat exempel på hur du kan modellera detta:
Den här modellen skulle tillåta dig att upprätthålla relationen mellan kategorier och ämnen, men att ha båda enheterna generaliserade i superentity
bord.
En annan fördel med denna modell är att du kan abstrahera ut vanliga fält i subtyptabellerna till superentitetstabellen. Säg till exempel att categories
och topics
båda innehöll fälten title
och url
:du kan lägga dessa fält i superentity
tabell eftersom de är vanliga attribut för dess undertyper. Lägg bara fält som är specifika för undertypstabellerna I undertypstabellerna.