Zdá se, že chcete rozlišovat kategorie a témata ve dvou samostatných tabulkách, ale nechat ID obou z nich odkazovat v jiné tabulce likes
usnadnit uživatelům, kteří mají rádi kategorii nebo téma.
Co můžete udělat, je vytvořit tabulku superentit s podtypy categories
a topics
. Automaticky inkrementovaný klíč by byl vygenerován v tabulce superentit a vložen pouze do jedné ze dvou tabulek podtypů (podle toho, zda se jedná o kategorii nebo téma).
Tabulky podtypů odkazují na tuto superentitu prostřednictvím automaticky inkrementovaného pole ve vztahu 1:1.
Tímto způsobem můžete jednoduše propojit tabulku superentit s likes
tabulka pouze na základě jednoho sloupce (který může představovat kategorii nebo téma) a žádné id
v tabulkách podtypů budou přítomny v obou.
Zde je zjednodušený příklad, jak to můžete modelovat:
Tento model by vám umožnil zachovat vztah mezi kategoriemi a tématy, ale obě entity by byly zobecněny v superentity
tabulka.
Další výhodou tohoto modelu je, že můžete abstrahovat běžná pole v tabulkách podtypů do tabulky superentit. Řekněme například, že categories
a topics
obě obsahovaly pole title
a url
:tato pole můžete vložit do superentity
tabulky, protože jsou společnými atributy jeho podtypů. Do tabulek podtypů vkládejte pouze pole, která jsou specifická pro tabulky podtypů.